-1

这是我的代码:

网址:

http://www.mysite.com/t.php?title=The%20Police%20-%20Don't%20Stand%20So%20Close%20to%20Me%20'86%20-

PHP:

<?php if(!empty($_GET['title'])){ >
<form method="post" action="t.php?done=yes" enctype="multipart/form-data">
<input type="text" name="title" 
<?php echo "value=\"".htmlspecialchars($_GET['title'])."\""; ?> 
> 
<input name="submit" value="Submit" type="submit" />
</form>
<?php } >


<?php if(!empty($_POST['title'])){ 
echo mysql_real_escape_string($_POST['title']);
// I have to put the string in a database ( I haven't added that part )
 } >

如果我按照第一个 URL 然后提交表单,我会得到这个字符串:

The Police - Don\\\'t Stand So Close to Me \\\'86 -

代替:

The Police - Don't Stand So Close to Me '86 -

为什么 ?我怎样才能得到最后一个字符串?

谢谢

.

编辑:

我刚刚发现 magic_quotes_gpc 为 ON,因为 get_magic_quotes_gpc() 返回 TRUE。

4

2 回答 2

1

可能是因为这个字符串

The Police - Don't Stand So Close to Me '86 -

通过magic_quotes_gpc on在你的 php.ini 上给你 qoute 转义

The Police - Don\'t Stand So Close to Me \'86 -

进而

echo mysql_real_escape_string($_POST['title']);

逃避'\成为

The Police - Don\\\'t Stand So Close to Me \\\'86 -

尝试使用您的代码进行设置

ini_set ( 'magic_quotes_gpc', '0' );

如果没有,您可以通过编码并删除斜杠来检查它

if (get_magic_quotes_gpc()) {
    $title = stripslashes($_POST['title']);
}
else {
    $title = $_POST['title'];
}
于 2012-05-22T17:47:13.213 回答
0

您能否提供有关此区块的更多信息?

<?php if(!empty($_POST['title'])){ 
echo mysql_real_escape_string($_POST['title']);
 } >

这仅用于调试目的吗?如果是这样,用 mysql_escape_string 回显是没有用的,这显然会“破坏”变量的可见值。请发布没有此功能的回声。

rgds

于 2012-05-22T17:41:48.267 回答