2016-07-30 115 views
1

所以我做了一个自定义页面处理程序,使我的代码更清洁。我有它在多个网站上运行,但在我现在正在工作的网站上,它不起作用。pagehandler不工作的方式它应该

这是代码:

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

and this is the error: Warning: include_once(): Failed opening 'pages/.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/ubuntu/workspace/admin_panel/page-handler.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home/ubuntu/workspace/admin_panel/header.php:474) in /home/ubuntu/workspace/admin_panel/page-handler.php on line 5

它适用于所有其他的网站我有它运行上。

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

+0

好像$ _GET [ 'P']是空的。此外,你应该做一些事情来确保用户只能访问你想要的文件。也许创建一个有效的页面数组,并检查$ page是否是其中之一。 – rjdown

+0

@rjdown我知道这就是为什么我做了一个if语句。关于这些文件,这不是必需的。它的所有在不同的服务器 –

+0

'if(!empty($ _ GET [“p”])){$ page = $ _GET [“p”]; (做东西/包括)}' - 基本上,你的逻辑是关闭的。您正在检查是否等于'“”',并在GET设置之前尝试包含。 –

回答

3

按照要求由OP:

评论回答:

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

    $page = $_GET["p"]; 

    // (do stuff/include) 

} 

基本上,你的逻辑是关闭的。您正在检查是否等于""并尝试在GET设置之前加入。

检查下面的帖子也即将头发送警告:

此外,它也是最好的任何标题后添加exit;。否则,你的代码可能想继续执行,如果你有更多的代码在下面。

参考:

+0

@RikNijdeken我编辑了答案。您可能需要重新加载它才能看到我添加的附加信息。 –

+0

谢谢。你是最棒的 –

+0

@RikNijdeken不客气Rik,很高兴得到了帮助,*欢呼* –

相关问题