Php pagehandler没有按应有的方式工作

Php pagehandler没有按应有的方式工作,php,Php,因此,我制作了一个自定义页面处理程序,使我的代码更加清晰。我有它在多个网站上运行,但在我现在工作的网站上它不工作 代码如下: <?php $page = $_GET["p"]; include_once("pages/" . $page . ".php"); if($page == "") { header("Location: index.php?p=index"); } ?> 这就是错误: 警告:include_once():

因此,我制作了一个自定义页面处理程序,使我的代码更加清晰。我有它在多个网站上运行,但在我现在工作的网站上它不工作

代码如下:

<?php
    $page = $_GET["p"];
    include_once("pages/" . $page . ".php");
    if($page == "") {
        header("Location: index.php?p=index");
    }
?>

这就是错误: 警告:include_once():在/home/ubuntu/workspace/admin_panel/page-handler.php第3行打开“pages/.php”以包含(include_path=':/usr/share/php:/usr/share/pear)失败

警告:无法修改标题信息-标题已由第5行的/home/ubuntu/workspace/admin_panel/header.php:474中的/home/ubuntu/workspace/admin_panel/page-handler.php发送

它可以在我运行它的所有其他网站上运行

有人知道为什么它不起作用吗?
谢谢。

根据OP的要求:

答复意见:

if(!empty($_GET["p"])){ 

   $page = $_GET["p"]; 

   // (do stuff/include) 

}
基本上,你的逻辑是错误的。您正在检查是否等于
,并在设置GET之前尝试包含

检查以下关于发送警告的标题的帖子:

另外,最好添加
exit在任何标题之后。否则,您的代码可能希望继续执行,如果下面还有更多代码的话

参考:


看起来$\u GET['p']是空的。此外,您应该采取措施确保用户只能访问您希望他们访问的文件。也许创建一个有效页面数组,并检查$page是否是其中之一。@我知道这就是为什么我要做一个if语句。关于文件,这是不需要的。如果(!empty($\u GET[“p”]){$page=$\u GET[“p”];(do stuff/include)}
,则这一切都在不同的服务器中
-基本上,您的逻辑是关闭的。您正在检查是否等于
,并试图在设置GET之前包含。但是,您正在尝试在if语句之前包含页面@弗雷德二世-你的答案对我很有用,你能补充一句吗?这是我不想接受的答案credit@RikNijdeken我对答案做了修改。您可能想重新加载它,以便查看我添加的其他信息。@RikNijdeken不客气,Rik,很高兴能提供帮助,干杯