2011-01-19 23 views
1

我想了解下面這一行代碼:未知str_replace函數在URL

str_replace('../', '', $route); 

基本上它說,從URL中$route

$route = 'information/information&information_id=4'; 

用什麼代替'../''index.php?route=information/information&information_id=4'

但是$ route變量中沒有../。這是一種正則表達式嗎?如果是的話,它究竟做了什麼。多謝你們。

+0

作爲@brain_d和@Mchl說,它可能是一個安全措施,但應被檢測之類的事情,並給出錯誤不只是刪除。任何人把``../到字符串是100%保證的。攻擊 – Jonah 2011-01-19 19:18:57

+0

爲什麼給他們的錯誤信息登錄自己的IP和時間,但在其他方面給他們不知道發生了什麼:P – Mchl 2011-01-19 19:26:51

回答

4

你在想,它取代"../"一個空字符串正確。這不是正則表達式。有在你的例子沒有它的出現時,但有可能是

它可能被用於某種安全的,以防止你回去了從文檔根目錄結構。

+0

哇,能跟大家都太快了,非常感謝..得到它:) – Sparctus 2011-01-19 19:25:27

2

如果有字符串中沒有../,這將取代什麼。這不是一個正則表達式(見preg_replace()了點。這只是預防措施,防止有人試圖通過無效的路徑(以../),這有可能是訪問的web服務器的文檔根目錄以外的文件的嘗試(換句話說,一個黑客攻擊)。