2016-01-20 49 views
1

我用我的配置文件中的location()函数调用,但它一直重定向我我正在去在调用它的页面,使用'标题(“位置:...)`

我这样做:

if (!isset($_SESSION['user_login_name']) || !isset($_SESSION['user_logged_in'])) 
{ 
    header("Location: /login/"); 
    exit(); 
} 

什么是做最好的方式,所以服务器知道它的登录页面上,而不是重定向回这个无限

+0

设置一个像这样的头文件头(“位置:....”)立即发出重定向。你能解释一下你想做什么吗?如果您希望重定向用户,当他/她第一次正确登录时,您应该在验证用户凭证并设置$ _SESSION变量的位置移动此语句。否则它 - 当然可以无休止地重定向。 – hherger

+0

我希望能够将用户重定向到索引文件所在的/ login/file文件夹,这是为了确保它们已登录,而不管访问网站上的任何内容,所以我需要一种方法检查活动页面是否不是登录目录中的索引文件。你也可以在问题中看到,我使用'header(“Location:/ login /”);'改变位置,'...'是一个空格填充器 – swiftie821

+0

我认为没有必要识别页面本身。如果任何页面脚本正在检查凭证,如在您的示例**中,但是login.php页面**,则仅当用户未登录时才会发生重定向。 – hherger

回答

0

我想以最好的方式是什么?这样做是为了检查当前脚本是否有$_SERVER检查在/login/目录中,这可能如下所示:

if (!isset($_SESSION['user_login_name']) || !isset($_SESSION['user_logged_in'])) 
{ 
    if ($_SERVER['SCRIPT_NAME'] !== '/login/index.php') 
    { 
     header("Location: /login/"); 
     exit(); 
    } 
} 
+0

谢谢你,我会检查出来的! – swiftie821

+0

这将工作。另一方面,它具有的缺点是脚本将被绑定到一个目录,并且必须具有您正在检查的名称。什么时候登录页面被移动到目录'/ admin /'并被重命名为'login.php'? – hherger

+0

@hherger,那么OP可以更改条件语句或添加一个额外的 –