PHP没有停止包含(中断)

时间:2011-05-29 17:52:48

标签: php

我正在尝试让我的脚本找到我的include目录中的所有PHP文件并将它们放入一个数组(我已经完成了数组部分)。然后,脚本执行for循环以检查GET请求是否与数组中的当前位置值匹配(或者您想要调用它的任何内容)。

但是,如果它根本找不到它......它将包含默认页面,但显然如果它确实包含它匹配的文件。

问题是.. break命令根本不起作用。所以,它包括默认页面,如果匹配的话。请帮忙。

   <?php

 if(!defined("PLUGIN")){
    echo "You cannot view this file directly.";
 } else {
    $glob = glob("inc/*.php");
    $count = count($glob);
    for($i=0;$i<$count;$i++){
        $explode = explode("/", $glob[$i]);
        $explode2 = explode(".", $explode[1]);
        if($_GET["page"] == $explode2[0]){
            include $glob[$i];
            break;
        } include_once "default.php";
    }
 }
?>

1 个答案:

答案 0 :(得分:4)

现在,你的循环将在循环的每次迭代中包含默认页面,直到它与get / explode组合匹配。

同样,使用explode来分析文件路径是不好的做法。相反,请使用path_info()

$found = false;
foreach ($glob as $file) {
    $basename = path_info($file, PATHINFO_FILENAME);
    if ($basename == $_GET['page']) {
        $found = true;
        break;
    } else {
        include($basename); // probably need to adjust this to make it a full filename
    }
}
if (!$found) {
    include('default.php'); // include this only if no other match was found.
}