2014-07-07 3 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)

Но URI от

127.0.0.1/PayC/Global.inc.php?

я получаю возвращение: bool(false)

Я знаю, что я мог бы удалить параметры хвостовых после расширения .php, но я хочу оставить их нетронутыми .. Я пытался отладки и дальше, но было обратился к var_dumping и опубликовал мои результаты здесь

ответ

1

Из чего я понимаю, вы пытаетесь выяснить, находится ли global.inc.php внутри $ Directory_Manipulation. В этом случае у вас есть свои параметры назад! Он должен быть

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

Вы можете посмотреть документацию PHP для strpos тоже. :)

+0

Ah , Мы идем. Даже посмотрев документацию .. Я получал параметры не так. Спасибо –

0

Выглядит как проблема чувствительности к регистру. Попробуйте это:

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

И делать strpos() используя $DM_lower вместо $Directory_Manipulation.

+0

Не уверен, почему мой ответ был проголосован –

+0

Чувствительность к регистру не является проблемой, так как вызов функции предшествует преобразованию параметров в нижний регистр, поэтому строка: '$ Request_Path = strtolower ($ _ SERVER ['REQUEST_URI']); ' –

+0

Если это также проблема с типом case параметров. Тогда я бы не добился правильной проверки в первом примере URI. –

Смежные вопросы