我尝试用不完美的英语来解释我的问题:)
当我尝试将一些字符串(客户端)发送到服务器时,我看到HTML表单在某些字符之前将“\”字符添加为转义(例如使用“,”和“本身”。
但这是一个问题:如果将它保存在mysql上,在使用mysql_real_escape_string()过滤字符串之前,它会将html添加的转义字符视为“用户添加的字符”。但事实并非如此。
同样,在我检查服务器端的值并因某种原因忽略它之后,我将它们放在字段上。我需要再次逃避字符(我使用addslashes()php函数),因为如果我有$ var等于 hello“world”你怎么样,在输入字段上(就像我写的那样)它失败了。
那么,我该如何解决这个问题呢?我认为有一个解决方案:)
第2部分
现在,通过magic_quotes,我已经解决了这个问题。现在,如果参数在检查时失败,我会将其保存在var上并将其放入正确的字段中。问题是。
<script type="text/javascript">
$(document).ready(function() {
$("#input1").val("<?= addslashes($name) ?>");
});
</script>
<input class="inputReg" maxlength="20" name="name" id="input1" />
这段代码工作!!!我把价值(加入JQuery)。如果我写这个:
<input class="inputReg" maxlength="20" name="name" value="<?=addslashes($name)?>" id="input1" />
它不起作用。事实上,如果我写(例如)字符串“你好'我的'名字是marco”它每次1-2-4-8添加char \之前。为什么这个?它不起作用。任何的想法?干杯
答案 0 :(得分:5)
听起来像magic quotes。确保在php.ini文件中禁用此功能:
magic_quotes_gpc = Off
答案 1 :(得分:0)
mysql_real_escape_string(stripslashes($string))
将(暂时)解决您的问题。关闭magic_quotes虽然是最好的选择。
答案 2 :(得分:0)
如果您不允许编辑php.ini,则可以使用此代码段:
# Disable magic quotes if enabled in the server settings
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);
}