PHP - 逃避"\"的大麻烦

mar*_*zzz 1 php escaping

我试着用一个不完美的英语来解释我的问题:)

当我尝试将一些字符串(客户端)发送到服务器时,我看到HTML表单在某些字符之前添加"\"字符作为转义(例如使用","和\本身).

但这是一个问题:如果将它保存在mysql上,在使用mysql_real_escape_string()过滤字符串之前,它会将html添加的转义字符视为"用户添加的字符".但事实并非如此.

同样,在我检查服务器端的值并因某种原因忽略它之后,我将它们放在字段上.我需要再次逃避字符(我使用addslashes()php函数),因为如果我有$ var等于你好"世界"你怎么样,在输入字段(如上所述)它失败了.

那么,我该如何解决这个问题呢?我认为有一个解决方案:)

第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" />
Run Code Online (Sandbox Code Playgroud)

这段代码工作!!! 我把价值(加入JQuery).如果我写这个:

<input class="inputReg" maxlength="20" name="name" value="<?=addslashes($name)?>" id="input1" />
Run Code Online (Sandbox Code Playgroud)

它不起作用.事实上,如果我写(例如)字符串"你好'我的'名字是marco"它每次1-2-4-8添加char \之前.为什么这个?它不起作用.任何的想法?干杯

JW.*_*JW. 5

听起来像魔术引号.确保在php.ini文件中禁用此功能:

magic_quotes_gpc = Off
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果由于任何原因您无法因托管配置而关闭magic_quotes,请通过strip_slashes函数运行所有用户输入. (3认同)