2014-07-07 23 views
0

我有下面的代碼片段:

function RemoveSubdir(){ 
    // Get the requested path (including all slashes) and Convert to lowercase 
    $Request_Path = strtolower($_SERVER['REQUEST_URI']); 
    // Create an array, exploding at the forward slash 
    $Request_Path = explode('/',$Request_Path); 
    // return the last element being the file name requested 
    $Arr_Elements = end($Request_Path); 

    if (empty($Arr_Elements)){ 
     return prev($Request_Path); 
    } 
    return $Arr_Elements; 
} 

$Directory_Manipulation = RemoveSubdir(); 


    echo $Directory_Manipulation; 

var_dump(strpos('global.inc.php',$Directory_Manipulation)); 

我目前指着我的瀏覽器,以正確的文件路徑(即127.0.0.1/PayC/Global.inc.php)從RemoveSubdir()收益返回預計..一切都在這個時刻運行良好global.inc.php的正確值,現在不正確的/出乎意料的驗證來自的代碼塊:

strpos('global.inc.php',$Directory_Manipulation); 

現在,我是e xpecting這個返回以外的任何其他false,這是很好的,當URI是:

127.0.0.1/PayC/Global.inc.php

如圖所示:int(0)

但隨着的

127.0.0.1/PayC/Global.inc.php的URI?

我得到的回報:bool(false)

我知道我可以在PHP擴展後刪除尾隨參數,但我要離開這些完整。我已經試過進一步調試,但一直請求var_dumping並在此發佈我的結果

回答

1

從我的理解,你想看看global.inc.php是否在$ Directory_Manipulation中。在這種情況下,你的參數已經倒過來了!它應該是

var_dump(strpos($Directory_Manipulation, 'global.inc.php')); 

您也可以查看strpos的php文檔。 :)

+0

啊。我們走了。即使在查看文檔之後..我正在以錯誤的方式獲取參數。謝謝 –

0

看起來是區分大小寫問題。試試這個:

$Directory_Manipulation = RemoveSubdir(); 
$DM_lower = strtolower($Directory_Manipulation); 

並採用$DM_lower代替$Directory_Manipulationstrpos()

+0

不知道爲什麼我的答案被拒絕投票 –

+0

區分大小寫並不是一個問題,因爲事先調用函數會將參數轉換爲小寫,因此該行:'$ Request_Path = strtolower($ _ SERVER ['REQUEST_URI']); ' –

+0

如果這也是參數案例類型的問題。然後,我不會在第一個URI中實現正確的驗證示例 –