2015-04-23 41 views
2

这是用于登录功能的脚本。但是,如果我想添加一个计时器到会话中,它会忽略它。我已经尝试了10秒,或1分钟。但它似乎并不奏效。有人知道发生了什么问题吗?PHP会话计时器被忽略

这是代码的即时使用定时器的线路: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

从手册中。我没有使用它,但它确实表示你必须在每个脚本中使用它。另外,你必须在start_session之前完成。我认为这是你的问题。

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

Reference