【问题标题】:Slash appended to all my posts [duplicate]斜线附加到我的所有帖子[重复]
【发布时间】:2011-09-14 14:25:47
【问题描述】:

可能重复:
Why turning magic_quotes_gpc on in PHP is considered a bad practice?

当我从帖子表单中获取信息时,html 表单会在随机字符之前添加斜杠。例如:hello "george" 变成 hello \"george\"。

我完全不明白为什么会发生这种情况,我已经尝试在 javascript 的输入标记中禁止斜杠但不起作用,所以我需要一些 php 或 javascript 函数来从服务器中删除它。该功能也必须在 html 中工作,因为我正在使用这三种技术,因为我正在开发和销售 web 2.0 网站。

这个的 php 函数和它的 html 版本是什么? 提前致谢。

这里我把你链接到我的页面有这个问题,也许你可以检查一下为什么会发生这种情况。

http://www.nickersonweb.com/
http://www.preferredmerchantservices.net/

【问题讨论】:

  • 禁用magic_quotes_gpc
  • this question。确保阅读接受的答案,点击 php.net 的链接并阅读第一条评论。
  • 不是随机个字符。

标签: php javascript html forms


【解决方案1】:

这是 PHP 的一个旧(已弃用)功能,它自动转义来自各种来源($_GET、$_POST、$_COOKIE 等)的字符串中的某些字符。

目标是防止 SQL 注入漏洞,但这并不是那么好。

这可以通过在您的php.ini 中将magic_quotes_gpc 设置为0 来禁用。

如果您无法控制magic_quotes_gpc 设置,您可能希望通过使用stripslashes 函数来反转其效果:

$value = stripslashes($_POST['foo']);

您可以对所有 $_POST 变量执行此操作,如下所示:

function stripslashes_r($value) {
    if (is_array($value)) return array_map('stripslashes_r', $value);
    else return stripslashes($value);
}

if (get_magic_quotes_gpc()) {
    $_POST = stripslashes_r($_POST);
}

【讨论】:

  • 由于您可能无法控制它,我认为条件递归stripslashes 处理至少值得一提。
  • 我有一个 main.html 更改为 main.php 但我没有看到 php.ini 并且这样的功能在 html 或 js 中对我不起作用。
【解决方案2】:

特殊字符被转义。你可以用http://php.net/manual/en/function.stripslashes.php删除反斜杠

【讨论】:

  • 这是一个抱歉的黑客攻击。如果你的用户关心他们的\(也许他们想在他们的HTML表单中包含Windows文件名,也许他们只是不理解\和/之间的区别并在英文散文中互换使用它们)那么你正在销毁他们的数据,作为 PHP 中一个从一开始就不应该编写的可怕特性的解决方法。只需禁用愚蠢的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
相关资源
最近更新 更多