2010-02-14 75 views
2

所有,PHP進行urlencode和解碼

有一個文本區域說

<input type="submit"> 

如果用戶給出了輸入的,

here is my name and my mail id is "[email protected]" 

當數據被張貼在這裏的數據被接收爲 服務器端的是我的名字和我的電子郵件標識\「[email protected] \」

反斜槓加在雙引號後面。現在如何在提交前編碼數據。我在服務器端使用php ..

謝謝。

回答

3

這是magic_quotes_gpc踢 - 刪除它只是在php.ini中禁用它或使用stripslashes($ your_var)刪除它;

雖然記住這是一個(糟糕的)php安全特性,但是當將數據存儲到數據庫時,您應該使用各自的轉義函數來防止sql注入,並且在顯示用戶發佈的數據時使用消毒功能應該防止xss注射。

+0

感謝............................. – Hulk 2010-02-14 20:16:48

1

在php.ini中禁用magic_quotes的或使用stripslashes($text)在PHP中刪除斜槓。

2

它看起來像指令magic_quote_gpc是您的服務器上啓用:

當magic_quotes的是,所有「 (單引號),」(雙引號),\ (反斜線)和NUL的是逃脫 反斜槓自動


解決辦法,如果你不能在你的服務器的配置禁用它,將是:

如果啓用
  • 如果是,從輸入刪除逃逸,使用stripslashes
  • 有關

    • 檢測,你可以閱讀部分Disabling Magic Quotes


      當然,在使用它之前,您必須正確地轉義您的數據;例如,在將其注入SQL查詢之前。

    +0

    謝謝.. .................... – Hulk 2010-02-14 20:23:46

    1

    您的系統中可能已啓用魔術引號。這不是good thing

    2

    你可以得到擺脫也神奇的報價在PHP中,如果您的網站託管服務提供商不允許你在php.ini文件中禁用它。把你的PHP腳本的頂部驗證碼:

    if (get_magic_quotes_gpc()) { 
         function stripslashes_deep($value) { 
          $value = is_array($value) ? 
            array_map('stripslashes_deep', $value) : 
            stripslashes($value); 
          return $value; 
         } 
    
         $_POST = array_map('stripslashes_deep', $_POST); 
         $_GET = array_map('stripslashes_deep', $_GET); 
         $_COOKIE = array_map('stripslashes_deep', $_COOKIE); 
         $_REQUEST = array_map('stripslashes_deep', $_REQUEST); 
        }