2012-05-22 94 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