私はあなたに助けを求める、私は私の問題を説明します。私のUser()クラスでは、ログインしてセッションを記録し、Cookieを設定するための小さな関数を書きました。ここでユーザーログインのセッションが失われました
それは次のとおりです。ここ
public function login($username, $password) {
$this->db->query("SELECT * FROM users WHERE username = :username AND status = :status LIMIT 1");
$this->db->bind(':username', $username);
$this->db->bind(':status', 1);
$row = $this->db->single();
$count = $this->db->rowCount();
if ($count > 0) {
if (password_verify($password, $row['password'])) {
$this->setSession($row);
return true;
} else {
return false;
}
}
}
public function setSession($row) {
$_SESSION['session'] = [
'id' => $row['id'],
'username' => $row['username'],
'email' => $row['email']
];
//set cookie
setcookie("name_cookie", md5($_SESSION['session']['username']/$_SESSION['session']['password']), time()+3600 * 24 * 365);
}
そして機能は、ユーザが接続されているかどうか、チェックするためにページを保護するためのものです:
public function isLoggedIn() {
if(isset($_SESSION['session'])) {
return true;
}
return false;
}
私の問題は次のようになりますが、その場合でも、クッキー残念ながら、合計時間経過後のセッションは終了します。
私は1年にクッキーを設定しましたが、私が言ったように、しばらくするとユーザーのログインセッションは終了します。どうすれば修正できますか?
session_start()コードはどこですか? –
includes/config.phpにあります。ログは約40分続くことができます。その後、再度ログインする必要があります。 –
なぜsetcookie関数を使用しましたか? PHPは自動的にPHPSESSIDをcookie変数に設定します。 setSession関数のセッション変数をprint_rだけで印刷するだけです。 –