PHP会话计时器被忽略

时间:2015-04-23 09:30:56

标签: php authentication login

这是我用于登录功能的脚本。但是如果我想在会话中添加一个计时器,它会忽略它。我已经在10秒或1分钟内尝试过它。但它似乎没有用。有人知道出了什么问题吗?

这是我用于计时器的代码行:session_set_cookie_params(3600,"/");

感谢正手。

public function login($username, $password) {
        $salt="";
        $this->user_id=0;
        $this->status=0;
        $salt_query=$this->mysqli->query(
<<<EOT
            SELECT salt
            FROM xxxxx
            WHERE username="{$username}"
EOT
        );
        $salt_query = $salt_query->fetch_row();
        $salt = $salt_query[0];

        $hash = hash('sha512', $password.= $salt);

        $result = $this->mysqli->query(
<<<EOT
            SELECT werknemer_id,status
            FROM xxxxx
            WHERE username="{$username}" AND password="{$hash}"
EOT
        );

        $rij =$result->fetch_row();
        if ((empty($rij)) || (empty($rij[0]))) return(1);// Invalid combination


        if (($rij[1]<1) || ($rij[1]>2)){
            return(2); // Inactive account
        }
        $this->user_id=intval($rij[0]);
        $this->status=intval($rij[1]);

        session_regenerate_id();
        $_SESSION['werknemer_id']=$this->user_id;
        session_set_cookie_params(3600,"/");
        return(0); // login
    }

1 个答案:

答案 0 :(得分:1)

从手册中。我没有使用它,但它确实说你必须在每个脚本中使用它。此外,您必须在start_session之前执行此操作。我认为这就是你的问题。

  

设置php.ini文件中定义的cookie参数。此功能的效果仅持续脚本的持续时间。因此,您需要在调用session_set_cookie_params()之前为每个请求调用session_start()

Reference