我有以下代码段:
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)
但是使用了
的URI127.0.0.1/PayC/Global.inc.php?
我得到了回复:bool(false)
我知道我可以在.php扩展名后删除尾随参数,但我想保留这些参数完整..我已经尝试进一步调试但是已经使用var_dumping
并在此处发布我的结果
答案 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
。