用户已登录时重定向登录页面

时间:2016-11-01 08:49:55

标签: php redirect

我的脚本有点问题,我需要一些帮助。

所以问题是:当用户登录时,他们仍然可以再次打开登录页面。

这是我的剧本。的 function.php

function is_admin ($login, $password) 
{
    if ($login == ADMIN_LOGIN && $password == ADMIN_PASSWORD) 
    {
        return true;
    }
    else 
    {
        setcookie('login', $login, $realtime+24*7, '/');
        setcookie('pass', md5($password), $realtime+24*7, '/');
        return false;
    }
}
$admin = is_admin($_COOKIE['login'], $_COOKIE['pass']);

这是 index.php

if(!$admin && $_SERVER['PHP_SELF'] != '/cp/login.php'){
    header('location: /cp/login');
}else
    header('location: /cp');
 }  
ob_start();

这样,所有页面都会重定向到登录,当用户未登录时,但登录后,我可以打开页面/cp/login

当用户已登录时,我希望登录页面重定向到/cp

上面的问题在哪里?

1 个答案:

答案 0 :(得分:0)

您需要为登录用户启动会话,并传递有关页面的内容,不要使用cookie。这样您就可以知道用户是否已登录,以及是否适合他们查看页面上的某些内容。

在每页放置的顶部(在任何之前):

<?php
session_start();

然后,当您成功验证它们时,请设置会话变量。

// when authenticated
$_SESSION['username'] = $user->getUsername(); // or whatever you want

然后在每个页面上,您需要知道他们是否已登录:

if(isset($_SESSION['username']) {
     // do something, render something, whatever.
}

将其注销

session_destroy();

安全问题

  • 存储与cookie相关的任何安全性,这就是自杀。
  • 在该表单中使用PHP_SELFsee here
  • MD5是可逆的哈希,它不用于加密。请改用crypt()

有用的信息