我有以下结构:
Index.php
Account.php
Login.php
CheckLogin.php
当有人通过 login.php 登录时,它会检查用户名和密码并设置以下会话变量
$_SESSION['username'] = $username;
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
当他们访问包含文件 CheckLogin.php 的 Account.php 时,该文件会检查 HTTP_USER_AGENT 以及是否设置了用户名变量。
现在这就是我遇到问题的地方。如果用户返回 index.php(主页)并登录,我想显示帐户链接。但是,如果用户没有登录,即刚刚访问了该网站,我想显示注册链接。我在想我可以做到以下几点:
<?php session_start()
if (!isset($_SESSION['username'])) {
// If username is not set destroy the session
session_destroy();
echo ("<a href=\"signup.php\">Sign up</a>");
}
else {
// If username is set
echo ("<a href=\"account.php\">Sign up</a>");
}
?>
我知道这并不完全安全,但是如果有人设法劫持会话并访问 account.php,它会进行检查,该检查应该破坏会话并在它们不合法时将其注销。这是最佳实践还是有更好的方法来实现这一预期结果。我不禁认为每个人都只是访问该站点并创建和破坏会话是一个坏主意。这是正确的做法还是我需要考虑其他任何事情?