PHP会话逻辑和一个小编码问题

时间:2017-08-13 05:35:58

标签: php session

我正在研究PHP登录/注册系统(大项目的一部分),我需要记录每个访问者请求。我是第一次使用会话和cookie,所以我不太确定我的逻辑。首先,检查我的逻辑......

逻辑:

public function is_valid_session(){
    if(session_and_cookie_is_empty){
        //first time visitor
        start_new_session();
    } elseif(empty_session_but_not_empty_cookie){
        status = get_session_data_from_db(session_token_from_cookie);
        if(status_is_true){
            if(COOKIE_TOKEN == DATABASE_STORED_TOKEN && CURRENT_IP == DATABASE_STORED_IP && CURRENT_TIME() < DATABASE_STORED_TIME){
                //valid session
            }
        } else{
            //not first visit but IP changed OR session expired
            start_new_session();
        }
    } else{
        if(COOKIE_TOKEN == SESSION_TOKEN && CURRENT_IP == SESSION_IP && CURRENT_TIME() < SESSION_TIME){
                //valid session
        }
    }
}

public function start_new_session(){
    //set IP, USER_EMAIL, TOKEN and START time
}

在页面访问时,我将USER_EMAIL会话变量设置为0,并在用户成功登录时将其设置为正确的电子邮件。现在我在每个成员页面上都有这个代码:

if(!empty(SESSION)){
    if(SESSION['USER_EMAIL'] == 0){
        //redirect to login page
    }
}

问题:

  1. 我是以正确的方式做事并且可以改进吗?
  2. 当用户登录时,仍会显示错误:用户未登录。这是为什么?
  3. 屏幕截图1 (在浏览器中输出) enter image description here

    截屏2 (代码) enter image description here

    PS:也许这不是一个好问题,但请相信我,我在过去几天都在苦苦挣扎,除了社区之外我没有任何帮助!而且我没有粘贴实际代码,因为它非常冗长,因此需要更多时间阅读和理解,所以我用简单的可读格式编写。

0 个答案:

没有答案