我正在設計一個Web應用程序,可以根據最終用戶來自哪個零售位置進行定製。例如,如果用戶來自稱爲Farmer's Market的商店,那麼可能會爲該用戶提供特定於該特定商店的定製內容或額外鏈接。 file_exists()用於確定是否存在需要導入的頁面的任何自定義部分。file_exists()期望參數1是一個有效的路徑,給出的字符串
到目前爲止,我們一直使用一種相對不安全的方法,其中項目ID#和商店被簡單地作爲GET參數傳入,並且系統知道將它們應用於頁面中的每個鏈接。但是,我們切換到可逆散列方法,其中存儲和項目編號被加密(看起來像「gd651hd8h41dg0h81」),並且頁面簡單地解碼它們並分配存儲和ID變量。
然而,自那時起,我們一直在遇到一個錯誤,谷歌搜索廣泛沒有找到我的答案。有代碼的幾個類似的塊,但他們都看起來像這樣:
$buttons_first = "../stores/" . $store . "/buttons_first.php";
if(file_exists($buttons_first))
{
include($buttons_first);
}
(在/專賣店/目錄實際上是在一個工作的上級目錄,因此../)
相當直截了當。但是,儘管在常規的ID和存儲傳入做工精細,使用加密ID拋出這個錯誤對那些類似的語句中的每一個:
警告:file_exists()預計參數1是一個有效的路徑,串在第11行[網址刪除]給出
我已經有腳本吐回完整的URL,它似乎是正確地分配$存儲。我正在運行PHP 5.4.11 1 & 1託管(因爲我知道他們的服務器工作方式有些異常),如果有幫助的話。
你能提供一個路徑失敗的例子嗎? – Raad 2013-02-13 15:36:00
'var_dump($ store)'的結果是什麼?也許它包含將構成無效路徑的保留字符('?','*'等)。 [以下是可能保留的字符列表](http://en.wikipedia.org/wiki/File_name#Reserved_characters_and_words)。 – cmbuckley 2013-02-13 15:39:38
「../stores/shoprite/buttons_first.php」是我玩的一個。 在這種情況下,var_dump($ store)會導致** string(28)「shoprite」**。 – Sean 2013-02-13 15:43:35