2011-04-22 47 views
1

我从数据库中的网页名称撤出并投入了这种平等声明平等声明:对重定向

// Redirect if not there 
if ($db_client === $session_client) { 
require("custom.php"); 
} else { 
require("general.php"); 
} 

所以在这里,$ db_client是存储自定义页面的客户端ID和$ session_client作为会话中的id。如果匹配,则应该将用户带到custom.php,如果不是,则应该将它们带到general.php

由于某种原因,PHP向我显示了这两个页面。 general.php顶部和custom.php在general.php

我用这一般网页的底部:

// If not page (path) is stored in db than show general 
    if (empty($pagename)) { 

    require_once("general.php"); 

    } else { 
    require_once("$pagename"); 

    } 

任何方式解决这一问题?

+0

你能解释一下这里发生了什么吗? “重定向”是什么意思? – Compeek 2011-04-22 21:28:56

+2

@AAA是否可以通过其他方法调用此代码两次?你也可以使用'require_once()',这样如果这个代码被调用两次,你就不会有两个同样的东西出现。 – Patrick 2011-04-22 21:29:01

+0

@Patrick查看更新。谢谢 – AAA 2011-04-22 21:33:30

回答

1

问题可能与您想象的不同。特别是因为我们知道general.php可以包含在几个地方。

所以你需要得到包含的实际顺序为找到的问题。

选项A.安装xdebug模块,您将能够获取每个调用的日志。

选项B更简单。在每个需要操作员之前先写echo 'including-', <N>;<N>是每个用法唯一的数字。因此,您将能够知道哪个运营商导致了不需要的包含。

顺便说一句。是不是require_once($pagename);好于require_once("$pagename");? 并确保$pagename变量针对相对路径攻击得到保护。

+1

而不是使用数字使用'__LINE__'和'__FILE__'宏来进行此类调试,在类的情况下,我使用'__METHOD__'和'__FUNCTION__'作为程序代码 – Kumar 2011-04-29 09:00:56