是否值得更改我的代码以使其“更具可移植性”并能够处理魔术引号的恐怖,或者我是否应该通过 .htaccess 文件确保它始终处于关闭状态?
if (get_magic_quotes_gpc()) {
$var = stripslashes($_POST['var']);
} else {
$var = $_POST['var'];
}
对比
php_flag magic_quotes_gpc off
最佳答案
不要兼顾这两种情况。两条代码路径 = 两倍的麻烦,而且您很可能会失误而忘记在某处处理这两种情况。
我过去常常检查魔法引号是否打开或关闭,如果它们打开,则撤消它们的魔法(正如线程中的其他人所建议的那样)。这样做的问题是,您正在更改另一个程序员可能期望的已配置环境(无论多么愚蠢)。
这些天我编写代码时就好像魔术引号已关闭一样,并且在我的主要 include/bootstrap/always-runs 文件中我检查魔术引号是打开还是关闭。如果它们打开,我会抛出一个异常来解释为什么这是一件坏事,并提供有关如何关闭它们的说明。
这种方法允许您针对单一行为进行编码,鼓励使用您的代码的其他人正确配置他们的服务器(魔术引号在 PHP 6 中消失),如果有人真的需要魔术引号他们可以处理您的异常并将他们的生命掌握在自己手中。
关于php - 绕过魔法引号,或者只是确保它们关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/370292/