为什么要检查 stripslashes 函数是否存在?
Why check if stripslashes function exists?
我发现以下代码检查 stripslashes()
函数是否存在。
if ( function_exists( 'stripslashes' ) ) {
// Do something
} else {
// Do something
}
stripslashes()
函数作用于PHP4和PHP5,所以我想知道为什么它需要一个条件语句来检查函数是否存在。没看懂。
这不是一个主观问题。告诉我使用这个语句和不使用它有什么区别。提前致谢!
以下是有关它们使用位置的相关链接:
- http://trevordavis.net/blog/wordpress-jquery-contact-form-without-a-plugin/
- PHP contact form will not submit
PHP 中曾经有一个被称为 magic quotes 的功能,虽然本意是好的,但引起了无穷无尽的混乱。
这段代码很可能是为了检测魔术引号,但这不是正确的方法,尤其是因为它不起作用。
检测是否启用魔术引号的正确方法是使用为此目的制作的函数,get_magic_quotes_gpc
就像这样。
if (get_magic_quotes_gpc()) {
或者可能是以下内容,如果您担心这将被删除。
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
也就是说,整个魔术引号功能在 PHP 5.4 中被删除了,所以除非你需要支持 PHP 的过时版本,否则你可以忘记整个事情曾经存在过(除非你使用的是 WordPress...).
附带一提,我想 stripslashes
功能可能会在未来被删除,并且可能在某一时刻不存在,但在这种情况下,这可能不是原因。
旁注:转录自我的一些评论(略有修改)以提供对亚历山大的评论的补充回答。
这可能是为了检查是否有一些编码员创建了一个自定义函数,调用了相同的函数(一个人的疯狂方法?),或者有人黑了 PHP核心并将其删除;我当然是在猜测,也不是不可能。
然而,if ( function_exists( 'mysql_real_escape_string' ) )
也是如此。
如果服务器不支持那些旧的和已弃用的 mysql_
functions,则需要条件语句并且证明 effective/useful 可以使用那种性质的东西。
参考资料:(从 PHP 7 开始删除 mysql_,以及其他弃用通知)
- https://wiki.php.net/rfc/mysql_deprecation
- https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7
- https://wiki.php.net/rfc
就个人而言,function_exists()
should only be used against probable deprecated functions; mysql_
being one of them and session_register()
- 我相信还有更多。
根据 Alexander (O'Mara) 在评论中所说,它在贡献的注释手册中列出 http://php.net/manual/en/function.stripslashes.php and it seems to have something to do with magic_quotes_gpc。
N.B.:
我绝不希望从中得到任何东西,但对于其他访问该问题的人来说。
我发现以下代码检查 stripslashes()
函数是否存在。
if ( function_exists( 'stripslashes' ) ) {
// Do something
} else {
// Do something
}
stripslashes()
函数作用于PHP4和PHP5,所以我想知道为什么它需要一个条件语句来检查函数是否存在。没看懂。
这不是一个主观问题。告诉我使用这个语句和不使用它有什么区别。提前致谢!
以下是有关它们使用位置的相关链接:
- http://trevordavis.net/blog/wordpress-jquery-contact-form-without-a-plugin/
- PHP contact form will not submit
PHP 中曾经有一个被称为 magic quotes 的功能,虽然本意是好的,但引起了无穷无尽的混乱。
这段代码很可能是为了检测魔术引号,但这不是正确的方法,尤其是因为它不起作用。
检测是否启用魔术引号的正确方法是使用为此目的制作的函数,get_magic_quotes_gpc
就像这样。
if (get_magic_quotes_gpc()) {
或者可能是以下内容,如果您担心这将被删除。
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
也就是说,整个魔术引号功能在 PHP 5.4 中被删除了,所以除非你需要支持 PHP 的过时版本,否则你可以忘记整个事情曾经存在过(除非你使用的是 WordPress...).
附带一提,我想 stripslashes
功能可能会在未来被删除,并且可能在某一时刻不存在,但在这种情况下,这可能不是原因。
旁注:转录自我的一些评论(略有修改)以提供对亚历山大的评论的补充回答。
这可能是为了检查是否有一些编码员创建了一个自定义函数,调用了相同的函数(一个人的疯狂方法?),或者有人黑了 PHP核心并将其删除;我当然是在猜测,也不是不可能。
然而,if ( function_exists( 'mysql_real_escape_string' ) )
也是如此。
如果服务器不支持那些旧的和已弃用的 mysql_
functions,则需要条件语句并且证明 effective/useful 可以使用那种性质的东西。
参考资料:(从 PHP 7 开始删除 mysql_,以及其他弃用通知)
- https://wiki.php.net/rfc/mysql_deprecation
- https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7
- https://wiki.php.net/rfc
就个人而言,function_exists()
should only be used against probable deprecated functions; mysql_
being one of them and session_register()
- 我相信还有更多。
根据 Alexander (O'Mara) 在评论中所说,它在贡献的注释手册中列出 http://php.net/manual/en/function.stripslashes.php and it seems to have something to do with magic_quotes_gpc。
N.B.:
我绝不希望从中得到任何东西,但对于其他访问该问题的人来说。