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


Redirect login page when user already logged

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

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

这是我的脚本。 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']);

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

有了这个,所有的页面重定向到登录,当用户没有登录,但当登录时,我可以打开页面/cp/login

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

上面的问题在哪里?

你需要为登录用户启动一个会话,并将其传递给页面,不要使用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_SELF。看到
  • MD5是一个可逆哈希,它不是用于加密的。使用crypt()代替。

有用的信息
    <
  • 会议文档/gh>