1

我正在尝试根据使用 PHP 的不同开发 url 强制进行不同的调试模式。我目前有这个设置:

$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
$req_uri = $_SERVER['REQUEST_URI'];
$currentUrl = $protocol . '://' . $host . $req_uri;

$hostArray = array("localhost", "host.integration", "10.105.0"); //Don't use minification on these urls


for ($i = 0; $i < count($hostArray); $i++) {
    if (strpos($currentUrl, $hostArray[$i])) {
        $useMin = false;
    }
}

但是,使用此方法,如果您将主机数组中的任何字符串作为参数传递,您将能够触发 $useMin = false 条件,例如:

http://domain.com?localhost

除非 URL 以该条件开头(或者不包含在 url 参数中的 ? 之后的任何位置),否则我该如何编写阻止 $useMin = false 的内容?

4

2 回答 2

2

$currentUrl检查时不要使用$hostArray,只检查$host自身是否在$hostArray.

如果要检查完全匹配:

if(in_array($host, $hostArray)) {
    $useMin = false;
}

或者,也许您想这样做,并检查$hostArray您的 : 中的任何地方是否存在项目$host

foreach($hostArray AS $checkHost) {
    if(strstr($host, $checkHost)) {
        $useMin = false;
    }
}

如果您只想找到匹配项,如果$host 以下项目开头$hostArray

foreach($hostArray AS $checkHost) {
    if(strpos($host, $checkHost) === 0) {
        $useMin = false;
    }
}
于 2013-08-16T20:26:07.260 回答
1

我无法发表评论,所以我会在这里发帖。为什么用url查看host数组,为什么不直接用host查看,如下:

if (strpos($host, $hostArray[$i])) {
于 2013-08-16T20:29:45.507 回答