ホームページ >バックエンド開発 >PHPチュートリアル >Cookieには有効期限があるようですが、セッションには有効期限がありませんか?

Cookieには有効期限があるようですが、セッションには有効期限がありませんか?

WBOY
WBOYオリジナル
2016-06-23 13:16:121154ブラウズ

<?php//省略几百字。 if (!mysql_fetch_row($query))	//如果密码错误。      {echo '<br><center>用户名或密码错误。</center><br><br>';    include $_SERVER[DOCUMENT_ROOT] . '/template/footer.php';exit();      }else{          echo "<center>$login_email ".',欢迎来到' . WEBSITE_NAME . '。</center>';//写入session。$_SESSION["save_username"]="$login_email";}    //设置setcookie.    setcookie("setcookie","$login_email",time()+60);//设置一个小时过期。?>



<?php 				if($_SESSION['save_username']) //判断用户是否登录。					{			?>				<!--用户登录后的导航条-->				<?php					echo $_COOKIE["setcookie"];					//print_r($_COOKIE);					//print_r($_SESSION);				?>				欢迎<?php					echo  $_SESSION['save_username']; /*通过SESSION显示已登录用户。*/ 				?> ,你已登录。 				<a href="/login_out/">退出登录</a>			<?php 				}else if($_SESSION['save_admin_name']) //判断是否管理员登录。        {          ?>        <!--管理员登录后的导航条-->        欢迎管理员<?php echo  $_SESSION['save_admin_name']; /*通过SESSION显示已登录用户。*/ ?> , <a href="/login_out/">退出登录</a>      <?php         }         else        {				?>				欢迎来自<?php include $_SERVER[DOCUMENT_ROOT] . '/include/ip.php';?>的朋友,请<a href=/reg/reg.php>注册</a> 或 <a href=/login/email_login/>登录</a> 				<?php					}				?>


ところで、この出口は少し厄介なようです。
  unset($_SESSION);  session_destroy();     if(!$_SESSION)    {        echo "退出登录成功。<br>        2秒之后返回首页。";        //header("refrech:2;URL=http://www.09-29.com/");        header("refresh:1;url=/");    }


ディスカッションに返信(解決策)

セッションは Cookie に基づいており、期限切れにしないことは不可能です
ヘッダー関数の前に出力することはできません

テストいくつか編集しました
コメント unset( $_SESSION); session_destroy(); を使用してください。結果に違いはありませんか?

session_destroy(); サイトセッション全体をログアウトすると聞きました。

ブラウザaとブラウザbで同時にログインし、ブラウザaでログアウトしましたが、ブラウザが終了しませんでした?

Cookie には phpsessid があり、各 ssid はセッション ファイルに対応します。異なるブラウザでログインする際にSSIDを同期しましたか?明らかに SSID は異なるはずです。実際、2 つのブラウザは 2 つのセッションに対応します。 a からログアウトした場合、それは b と何の関係があるのでしょうか。

comment unset($_SESSION) を試してみてください。 ); session_destroy(); を使用すると、結果に違いが分かりましたか?

session_destroy(); サイトセッション全体をログアウトすると聞きました。

ブラウザaとブラウザbで同時にログインし、ブラウザaでログアウトしましたが、ブラウザが終了しませんでした?

Cookie はセッションと連動して使用されます。各ブラウザの Cookie は独立しています。ブラウザ A が終了すると、ブラウザ B も必ず終了するというわけではありません。

Cookie とセッションには有効期限があります。
セッションはCookieに依存します。

session.auto_start は、オンにすると session_start() を自動的に完了します

違いは、SESSION を使用する前に session_start() が必要かどうかです



session.auto_start = on
の場合、session_start() を実行すると、新しい session_id

session.auto_start = on 利点は、 session_start() の実行を忘れたり、 session_start() がプログラム内の間違った位置にあることによるエラーが発生しないことです
欠点は、3 番目のセッション ID を使用している場合-party コードの場合は、すべての session_start() を削除する必要があります。そうしないと、正しい結果が得られません

上記の返信は無視してください...

デフォルトでは、セッションは Cookie に基づいて保存されます。セッションからログアウトするときは、Cookie からもログアウトする必要があります。

sessionid は cookie を介して渡されます
有効期限は session.cookie_lifetime で設定できます (デフォルトは 0)
ただし、session.gc_maxlifetime との連携に注意してください

さらに
setcookie("setcookie","$login_email) ",time()+60 );//有効期限を 1 時間に設定します
このコメントは間違っています! 1 分かかります

セッションと Cookie の両方が期限切れになります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。