提交表单中的字符串中的转义字符

Posted

技术标签:

【中文标题】提交表单中的字符串中的转义字符【英文标题】:Escaped characters in string from submitted form 【发布时间】:2012-03-14 16:16:28 【问题描述】:

每次发布​​ POST 时,我都会得到转义字符。

\ -> \\
' -> \'
" -> \"

我有一个多步骤表单,它将数据从一个表单传输到另一个表单。我将带有准备好的语句的值保存在数据库中。数据库中的值当前看起来像Paul\'s House。用户应该可以在他们的字符串中使用单引号和双引号。

这是一个演示转义效果的简单示例:

<?php
echo $_POST['value'];
?>
<form action="form.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="value" value="Paul's House">
    <input type="submit" value="Next">
</form>

为什么或谁转义了字符串?处理多种形式的数据的正确方法是什么?将其保存在数据库中的正确方法是什么?我应该使用stripslashes() 还是打开一个大的安全漏洞?

【问题讨论】:

Magic quotes 可能是您的问题。此“功能”通常为依赖它的旧脚本启用。该手册有 several suggestions 用于禁用该功能(您想要禁用它绝对是正确的)。 magic_quotes_gpcOn。将尝试更改 php.ini 设置。 为最新的 PHP 版本喝彩三声,实际上完全消除了魔术引号。 【参考方案1】:

您好像开启了魔术语录。

http://www.php.net/manual/en/security.magicquotes.disabling.php

查看如何禁用。

【讨论】:

【参考方案2】:

你必须关闭服务器中的magicquotes,否则你应该非常小心magicquotes的开/关状态。

【讨论】:

以上是关于提交表单中的字符串中的转义字符的主要内容,如果未能解决你的问题,请参考以下文章

C1认证学习十八十九(表单元素转义字符)

如何在表单提交期间删除 URL 中的特殊字符

提交summernote表单时sql中的特殊字符错误

mysql 转义字符

在提交之前向 HTML 表单的输入框中的现有值添加附加字符串

统一修改表单参数(表单提交的空字符串统一转null)