2010-10-25 36 views
2

我想知道爲什麼PHP在我刪除雙引號時添加了反斜槓。爲什麼php在插入反斜槓的同時替換雙引號

<input type="text" name="number" id="number" /> 
<input type="button" name="button" id="button" value="Button" /> 

說,他們的用戶輸入值5-1/2" ,我通過jQuery的。獲得方法將它傳遞給處理頁面。

$('#button').click(function(){ 

    $.get('determine.php?number='+$('#number').val(),function(data){ 
    $('#response').html(data); 
    }); 

}); 

這是我處理頁面。

determine.php 

$number = $_GET['number']; 

$number = str_replace(array('"', "'"), '', $number); 

echo $number; 

//echos 5-1/2\ 

爲什麼反斜線呢?

+0

我覺得這是相同的問題:http://stackoverflow.com/questions/2448332/why -does-GET-在-PHP-錯誤解碼斜線 – 2010-10-25 18:00:11

回答

6

當您刪除斜槓它不添加它們,當啓用magic_quotes_gpc指令,它會自動逃脫他們的查詢字符串參數(這是在默認情況下預先5.30)。它將做爲這是爲了安全防範,以便數據可以安全地用於數據庫查詢。您可以通過更改php.ini文件中的設置來禁用它們,請參閱http://www.php.net/manual/en/security.magicquotes.disabling.php

您還可以使用stripslashes將其刪除:

$number = str_replace(array('"', "'"), '', stripslashes($number)); 

一個例子使用stripslashes()函數是當PHP指令magic_quotes_gpc的是(它在默認情況下),並且不插入這些數據放入需要轉義的地方(如數據庫)。例如,如果您只是直接從HTML表單輸出數據。

2

http://php.net/manual/en/security.magicquotes.php

魔術引號是輸入數據自動地逃到PHP腳本的過程。根據需要,最好使用魔術引號進行編碼,並在運行時轉義數據。

當打開時,所有的'(單引號),「(雙引號),\(反斜線)和NULL字符轉義成自動反斜槓。

總之,魔術引號是PHP,其中一個功能引號字符與字符\自動轉義

這裏是關閉魔術引號一些解決辦法:http://www.php.net/manual/en/security.magicquotes.disabling.php