帖子内容是 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\"
您的服务器上可能启用了魔术引号。它会自动\
在输入变量中添加引号字符以防止 SQL 注入。
不再推荐使用它,它已在 PHP 5.3 版本中被弃用,并在 PHP 5.4 中被删除。您可以禁用它或使用stripslashes功能从输入中删除转义字符。
PHP 语法保留 '\' 字符。您可以通过在命令中的任何反斜杠之前添加另一个反斜杠来覆盖它。例如,使您的命令move "D:\\my 1.txt" "D:\\my 2.txt"
. 您还可以使用stripslashes
PHP 中内置的函数。这将它们指定为有效字符,PHP 会忽略它们。
stripslashes
您可以使用该函数从字符串中删除转义斜杠。
所以在你的情况下,你想fwrite($mechat,stripslashes($_POST['mechat']));
改用。这样,当您有需要转义的字符时,stripslashes 函数将为您执行此操作,并且它应该输出正常。