PHPSession
変数を使用して、ユーザーにログインしてWebサイトを編集させます。彼らがログアウトしたら、session_destroy();
関数を呼び出してセッションを終了します。
ログイン画面で、「このコンピューターを記憶する」オプションがあり、$_SESSION[]
変数を使用する代わりに、次のようにCookieを設定します。
setcookie("admin", true, $expire);
Cookieは設定されていますが、ログアウトするとCookieの設定が解除されます。これを防ぐ方法はありますか?セッションを終了したいのですが、ウェブサイトにもコンピューターを覚えてもらいたいです。
お時間をいただきありがとうございます。
編集:これは、セッションを開始および破棄するために使用する2つのメソッドです(私が呼び出すセッションメソッドは別のクラスにあります)
public function loginCheck() {
//check if the remember me is set
if (isset($_POST['remember'])) {
$expire = time() + 60 * 60 * 24 * 30;
setcookie("admin", true, $expire);
}
else{
setcookie("admin", "", time()-3600);
}
$sth = $this->db->prepare("SELECT uid FROM philllwareusers WHERE
usr = :login AND pasw = :password");
$sth->execute(array(
':login' => $_POST['user'],
':password' => $_POST['pswrd']
));
$data = $sth->fetch();
$count = $sth->rowCount();
if ($count > 0) {
//check if user has permision to edit this website
$sth = $this->db->prepare("SELECT web_id FROM website_spine WHERE
admin_id = :uid ");
$sth->execute(array(
':uid' => $data['uid']
));
$datas = $sth->fetch();
$counts = $sth->rowCount();
if ($counts > 0) {
if ($datas['web_id'] == WEB_ID) {
Session::init();
Session::set('uid', $data['uid']);
Session::set('loggedIn', true);
header('location: ../index');
} else {
header('location: ../Adminlogisn');
}
}
// login
} else {
header('location: ../Adminlogin');
}
}
function logout() {
Session::init();
Session::destroy();
header('location: '.URL.'/Adminlogin');
}
これは、管理者ログインがどのように見えるかです(Cookieが設定されているかどうかを確認し、設定されたままにするか破棄する必要がある部分です)。
<?php
if(!isset($_COOKIE['admin']) || $_COOKIE['admin'] == ''){?>
Remember this computer as an admin computer <div style="display: inline;cursor: pointer;" onclick="alert('By selecting this option, your website will remember this computer and present the login option on the menu bar when you are not logged in.')">[?]</div>
<input type="checkbox" name="remember" style="width: 20px;"/>
<?php
}
else{
?>
Un-check to forget this computer as an admin computer. <div style="display: inline;cursor: pointer;" onclick="alert('This computer is currently rememberd as and admin computer, making the login link on the menu bar visible for easy access. Uncheck this box to forget this computer as admin computer.')">[?]</div>
<input type="checkbox" name="remember" checked="checked" style="width: 20px;"/>
<?php
}
?>