strpos使用$ _GET参数返回false

时间:2014-07-07 00:49:53

标签: php

我有以下代码段:

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);

现在,我希望这可以返回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并在此处发布我的结果

2 个答案:

答案 0 :(得分:1)

根据我的理解,您正在尝试查看global.inc.php是否在$ Directory_Manipulation中。在那种情况下,你的参数会倒退!它应该是

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

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

答案 1 :(得分:0)

看起来是一个区分大小写的问题。试试这个:

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

使用strpos()代替$DM_lower执行$Directory_Manipulation