将PHP重定向到登录页面,而不是强制登录

将PHP重定向到登录页面,而不是强制登录,php,html,security,session,login,Php,Html,Security,Session,Login,我为gameserver管理创建了一个小型php站点,但它并没有强制未登录的用户登录。我已经添加了一个重定向,如果会话不活动,并在注销时销毁了会话。网站就在这里 它强制您第一次登录,但如果您将login.php从URL中删除,它将允许您再次进入主区域。任何帮助都将不胜感激,谢谢 您需要一个带有 $_SESSION['loggedin']==TRUE; 检查是否有人登录。 还考虑设置SeStIsIdId(),并重定向与此,以验证用户,您需要一个简单的机制: 所有页面都应该受到检查的保护,该检

我为gameserver管理创建了一个小型php站点,但它并没有强制未登录的用户登录。我已经添加了一个重定向,如果会话不活动,并在注销时销毁了会话。网站就在这里


它强制您第一次登录,但如果您将login.php从URL中删除,它将允许您再次进入主区域。任何帮助都将不胜感激,谢谢

您需要一个带有

$_SESSION['loggedin']==TRUE; 
检查是否有人登录。
还考虑设置SeStIsIdId(),并重定向与此,

以验证用户,您需要一个简单的机制:

  • 所有页面都应该受到检查的保护,该检查会查找某些会话值,如果该值不存在,则重定向到登录页面。您可以在单独的函数/文件中编写此检查的代码,并在站点的每个页面中调用/包含它

    is_user_logged_in(){
        return $_SESSION['logged_in']; // it is a boolean value, which should be set TRUE by the login function
    }
    
    //in every page of yours you should call this
    if ( !is_user_logged_in() ){
        //redirect to you login page
        header("Location: http://yoursitename.com/login_page.php");
    }
    
  • 登录页面应验证用户名/密码,如果有效,则每隔一页创建要检查的会话值

    if ( valid_user($username, $password) ){
        // this is the value you should check for in other pages
        $_SESSION['logged_in'] = TRUE;
        // you may also need to store other user-related info in the session
        $_SESSION['user'] = array("id" => 1 , "username" => "test_user") // a data array from DB
    }
    
    unset($_SESSION['logged_in']);
    session_destroy();
    
  • 注销页面应该销毁您在其他页面中检查的会话值

    if ( valid_user($username, $password) ){
        // this is the value you should check for in other pages
        $_SESSION['logged_in'] = TRUE;
        // you may also need to store other user-related info in the session
        $_SESSION['user'] = array("id" => 1 , "username" => "test_user") // a data array from DB
    }
    
    unset($_SESSION['logged_in']);
    session_destroy();
    

您需要创建一种机制来验证用户是否登录。 登录时,系统会设置一个会话cookie—一个随机的、唯一的散列。散列存储为cookie,并与用户名、密码、IP和登录时间一起存储在数据库中

当用户访问页面时,您调用的函数有点像这样:(不完全是这样,这不是很好,只是基本检查,您还应该检查IP是否匹配以及会话是否已过期)


如果没有您的一些代码或您尝试过的内容(特定于代码),我们几乎无法帮助您。如果您在每个页面上都有会话+重定向codeCheck的会话,并显示一些您尝试过的与此相关的代码,这可能会有助于调试,因为你可能在某个地方搞砸了。虽然我尝试了你的url,我显然是自动登录的,但无法注销。肯定是出了问题。这太糟糕了,每个人都可以使用工具创建会话,所以只有loggedin=true才是验证登录的最不安全的方式……不!那是个误会。我刚才并没有说这些。