2012-05-22 100 views
-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被开启,因为get_magic_quotes_gpc()返回TRUE。

+3

您使用'mysql_real_escape_string'来转义一个字符串放入mysql数据库而不是'echo',使用htmlspecialchars – Musa

+0

您正在回应转义的版本。只需要回显原始字符串'$ _POST ['title']'来检查它,并使用'htmlspecialchars()'在HTML中输出它 –

+0

我必须将字符串放在数据库中(我没有添加该部分) 。 – xRobot

回答

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']); 

Ë SCAPE的'\成为你的代码

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']; 
} 
+0

我得到相同的结果:( – xRobot

0

请问您能否提供关于此块的更多信息?

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

这是仅用于调试目的吗?如果是这样,那么使用mysql_escape_string就没有用处,这明显“损坏”了变量的可见值。请在没有此功能的情况下发布回显。

RGDS

+0

是的,它用于调试目的。我需要将该字符串插入到MySQL数据库中。 – xRobot

+0

请发布未转义的字符串:-) – Sebas

+0

未转义的字符串在上面的代码中。是这样的:警察 - 不要站得如此接近我'86 - – xRobot