我的脚本有一点问题,我需要一些帮助。
所以问题是:当用户登录时,他们仍然可以再次打开登录页面。
这是我的脚本。 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>