0 レビュー
1 回答
サインアウトできません-常にphpセッションとCookieを使用してサインインします
この関数を使用して、サインインセッションとCookieを作成しています
function startSession($time,$ses) {
session_set_cookie_params($time,'/','.domain.com',false,true);
// if I use www.domain.com the session won't start and the user won't be able to sign in
session_name($ses);
if(session_id() == '') {
session_start();
}
if (isset($_COOKIE[$ses]))
setcookie($ses, $_COOKIE[$ses], time() + $time, "/");
}
ログインページの先頭にこのコードが含まれています
ini_set('session.cookie_lifetime',99999999);
ini_set('session.gc_maxlifetime',99999999);
ini_set('session.use_trans_sid', false);
ini_set('session.use_only_cookies' , true);
if(session_id() == '') {
session_start();
}
クレデンシャルが正しければ、関数を呼び出します
startSession($time = '99999999', $ses = 'mySession');
配列として値を追加します
$_SESSION['mySession'][0] = 'value1';
$_SESSION['mySession'][1] = 'value2';
次に、このコードが先頭に含まれているインデックスページにユーザーをリダイレクトします
startSession($time = '99999999', $ses = 'mySession');
サインアウトページにはこのコードが含まれています
session_start();
unset($_SESSION['mySession']);
session_destroy();
unset($_COOKIE['mySession']);
setcookie('mySession', null, -999999999, '/');
$_SESSION['mySession'] = array();
$_SESSION['mySession'][0]=' ';
$_SESSION['mySession'][1]=' ';
session_regenerate_id(true);
その後、ユーザーは再びインデックスページにリダイレクトされますが、サインアウトプロセスは機能せず、ユーザーは自動的に再度サインインします。 セッションとCookieの設定を解除しても、ユーザーが再度サインインする理由は何ですか?
わからない
0
レビュー
答え :
解決策:
ログインとログアウトには非常に簡単な解決策があります。
ログイン:
<?php
# Firstly:
session_start();
# Suppose authentication is successful and you have a user array...
# $user = array('id' => 5, 'name' => 'Rayn', 'email' => '[email protected]');
# Now you want to log that user in.
$_SESSION['user'] = $user;
# Now if I want to add the cookie.
setcookie('user', $user, time()+3600*24*30, '/');
# It is time() + 30 Days.
# Now check in your protected pages...
if (!empty($_COOKIE['user'])) {
$_SESSION['user] = $_COOKIE['user'];
}
#and focus your concentration on the session.
if (empty($_SESSION['user])) {
// Redirect him to the login page.
}
?>
ログアウト:
<?php
# Firstly:
session_start();
unset($_SESSION['user']);
setcookie('user', NULL, time() - 3600*24, '/');
# It is actually time() - 24 Hours.
# You have wrote only -[some time value]. Which is a negative time.
?>
これがお役に立てば幸いです。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。