全部,
有一个文字区说
<input type="submit">
如果用户给出的输入为,
here is my name and my mail id is "a@x.com"
当数据发布在服务器端时,数据会被接收,因为这是我的名字,我的邮件 ID 是 \"a@x.com\"
在双引号后面添加反斜杠。现在如何在提交之前对数据进行编码。我在服务器端使用 php..
谢谢。
这是 magic_quotes_gpc 的作用——删除它只需在 php.ini 中禁用它或使用 stripslashes($your_var);
尽管请记住这是 php 的一个(糟糕的)安全功能,但是在将数据存储到数据库时,您应该使用相应的转义函数来防止 sql 注入,并且在显示用户发布的数据时,您的清理功能应该防止 xss 注入.
看起来该指令magic_quote_gpc
已在您的服务器上启用:
当 magic_quotes 打开时,所有 '(单引号)、"(双引号)、\(反斜杠)和 NUL 都会自动使用反斜杠进行转义。
如果您无法在服务器配置中禁用它,一个解决方案是:
stripslashes
关于这一点,您可以阅读禁用魔术引号部分。
当然,您必须在使用之前正确地转义您的数据;例如,在将其注入 SQL 查询之前。
如果您的网络托管服务提供商不允许您在 php.ini 文件中禁用它,您也可以在 PHP 中去掉魔术引号。将此代码放在您的 PHP 脚本之上:
if (get_magic_quotes_gpc()) {
function stripslashes_deep($value) {
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
$_POST = array_map('stripslashes_deep', $_POST);
$_GET = array_map('stripslashes_deep', $_GET);
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}
在 php.ini 中禁用 magic_quotes 或stripslashes($text)
在 PHP 中使用来删除斜线。
您的系统上可能启用了魔术引号。这可不是什么好事。