今天我遇到了一些奇怪的PHP,我沒有在文檔中找到合適的解釋。考慮下面的代碼:爲什麼PHP中的_GET錯誤地解碼斜線?
<?php
echo $_GET['t']. PHP_EOL;
?>
該代碼很簡單 - 它只需要一個單一的參數在url上並輸出回來。 ?所以,如果你用test.php的牛逼稱之爲=%5CA(%5C是 '\'),我期望看到:
\a
然而,這是我得到了什麼:
$ curl http://localhost/~boaz/test.php?t=%5Ca
\\a
注意雙斜線。任何人都可以解釋發生了什麼,並提供檢索URL中提供的字符串的配方?
感謝, 波阿斯
PS。我正在使用PHP 5.2.11
可以通過使用stripslashes()函數來治癒 – 2010-03-15 15:39:53
你很容易受到SQL注入。您應該始終使用參數化查詢。沒有理由。 – Kibbee 2010-03-15 15:59:18
Magic_quotes將會在PHP 6中被刪除,所以最好不要依賴它。 – 2010-03-15 16:03:45