1

帖子内容是 cmd commande line : move "D:\my 1.txt" "D:\my 2.txt"

我的PHP代码:

if (!empty($_POST["mechat"])){
  $mechat = fopen("mechat","w"); 
  fwrite($mechat,$_POST['mechat']);
}

错误的结果:移动 \"D:\my 1.txt\" \"D:\my 2.txt\"

4

3 回答 3

3

您的服务器上可能启用了魔术引号。它会自动\在输入变量中添加引号字符以防止 SQL 注入。

不再推荐使用它,它已在 PHP 5.3 版本中被弃用,并在 PHP 5.4 中被删除。您可以禁用它或使用stripslashes功能从输入中删除转义字符。

于 2013-10-28T01:39:32.370 回答
2

PHP 语法保留 '\' 字符。您可以通过在命令中的任何反斜杠之前添加另一个反斜杠来覆盖它。例如,使您的命令move "D:\\my 1.txt" "D:\\my 2.txt". 您还可以使用stripslashesPHP 中内置的函数。这将它们指定为有效字符,PHP 会忽略它们。

于 2013-10-28T01:34:23.040 回答
1

stripslashes您可以使用该函数从字符串中删除转义斜杠。

所以在你的情况下,你想fwrite($mechat,stripslashes($_POST['mechat']));改用。这样,当您有需要转义的字符时,stripslashes 函数将为您执行此操作,并且它应该输出正常。

于 2013-10-28T01:34:20.517 回答