私はログイン/ログアウトシステムを持っており、www.mydomain.comとmydomain.comをまたいだクッキーが必要です。私が持っている問題は、クッキーを削除することです。作品PHPのサブドメイン(www)のクッキーを共有/削除
session_start();
//set session vars
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30), '/', 'domain.com');
setcookie('full_name', $row['first_name']." ".$row['last_name'], time() + (60 * 60 * 24 * 30), '/', 'domain.com');
を、クッキーが保存され、それがでたり、WWWなしで動作します:ログインに私はこのようなクッキーを設定しています。
session_start();
if(!isset($_SESSION['user_id'])) {
if(isset($_COOKIE['user_id']) && isset($_COOKIE['full_name'])) {
$_SESSION['user_id'] = $_COOKIE['user_id'];
$_SESSION['full_name'] = $_COOKIE['full_name'];
}
}
if(!isset($_SESSION['user_id'])) {
echo '<p class="login">Please <a href="login.php">log in</a> to access this page.</p>';
exit();
}
問題がログアウトされています:それは、プロフィールページには、このコードを持っている見ることを可能にする
session_start();
if(isset($_SESSION['user_id'])) {
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 3600, '/', 'domain.com');
}
session_destroy();
}
setcookie('user_id', '', time() - 3600, '/', 'domain.com');
setcookie('full_name', '', time() - 3600, '/', 'domain.com');
クッキーはなく、現在のドメインのみのために削除されます。だから私がdomain.com/login.phpからログインし、domain.com/logout.phpからログアウトすると、domain.com/profile.phpはうまく動かない(良い)が、私はまだwww.domain.com/profileを見ることができるだろう私がwwwを訪問した場合、.php。ログアウトする前にバージョンを確認してください。逆に、私はwww.domain.com/logout.phpからログアウトしても、domain.com/profile.phpを表示することができます。サブドメイン間ですべてのCookieを削除する方法はありますか?
は最後にサブドメインが変更されたときに、セッションが別のクッキーを作成して、それを考え出しました。したがって、ログアウトするとセッションクッキーは1つ削除されますが、残りのセッションクッキーはそのまま残ります。解決策は、セッションを開始する前にセッションに名前を付けて、常に同じ名前を持つようにすることでした。 $ some_name = session_name( "cool_session"); session_set_cookie_params(0、 '/'、 '.domain.com'); session_start(); – aeroshock