2016-04-03 31 views
0

我在我的网站上使用自定义页面,我需要检查用户是否登录,如果没有,重定向到另一个页面。 成功登录后,会话变量被设置为:重定向用户如果没有登录

session_start(); 
$_SESSION['login'] = "1"; 

要检查用户是否登录或没有在网页上,我用这个代码在页面的开始:

session_start(); 
if($_SESSION['login']=='') 
{ 
    @header("location:login.php"); 
} 

然而,即使用户没有登录的页面不重定向所示的误差是

说明:未定义指数:登录在XXXX/XXXX/XXXX/XXXX

除了header()还有别的方法可以用来实现同样的目的吗?

+0

你创建的login.php作为模板或只是一个自定义文件?或者你可以尝试使用is_user_logged_in()。 – user1990

+0

使用is_user_logged_in()函数检查用户是否登录。然后使用wp_redirect函数重定向到所需位置 –

+0

我使用login.php作为自定义文件。 – NewLander

回答

0

看来的$_SESSIONlogin指数没有设置的时候,你要检查它,最有可能的$_SESSION['login'] = "1";位来自您的支票后,所以你将不得不以确保您验证是否将它设置或不使用该array_key_exists功能如下:

if (array_key_exists('login', $_SESSION) && $_SESSION['login']=='') { 
    @header("location:login.php"); 
} 

或者,您可能要设置明确$_SESSION['login'] = 0,例如,在默认情况下,只有设置$_SESSION['login'] = "1";如果登录成功。

与此同时,我不建议您使用自己的登录机制,而是使用原本由wordpress知识渊博的编程人员设计的脚本和技巧,并由社区进行良好测试。这样的一种方法在this question on the wordpress support site描述(它添加到你的主题functions.php):

add_action('init', 'redirect_visitors'); 

function redirect_visitors() { 
    if (! is_user_logged_in()) { 
    wp_redirect('http://your-site.com/wp-login.php'); 
    exit; 
    } 
} 
相关问题