0

ログアウトをクリックしてセッションを破棄しようとしていますが、うまくいきません。

<?php
session_start();
if(isset($_SESSION['user_name']))
{ 
   session_destroy();   
   session_unset();     
   header('Location:Login2.php');
 }
 else
 {
    echo "error";
 }
 ?>

それ以外の部分は表示エラーを意味します。

4

2 に答える 2

1

不要なコードがたくさんあります。たとえば、ログアウトリンクは、ユーザーが実際に正しくログインしている場合にのみ表示されるため、if-elseステートメントには意味がありません。

それを短くしてください:

<?php

session_start();
session_destroy();
header('Location:Login2.php');

?>

つまり、セッションを破棄する場合、天気を確認したり、ユーザーがログインしていないことを確認しても意味がありません。ユーザーがログインしていない場合、パスhttp://yourdomain.com/logout.phpがこのスクリプトにうまくつながるとしましょうで、彼が何らかの形でこのパスにアクセスしても実際には何も起こりませんが、彼がログインしている場合は、SESSION 変数が設定されているかどうかを気にする必要はありません。

于 2013-10-15T16:52:49.040 に答える
0

呼び出しsession_destroy()により、session_unset()繰り返しの必要がなくなり、不必要になります。die()また、後で呼び出すheader()か、他のすべてが引き続き実行され、リダイレクトが失敗します。

<?php
session_start();
if(isset($_SESSION['user_name']))
{ 
   session_destroy();   
   header('Location: Login2.php');
   die();
}
else
{
   echo "error";
}
?>

まだ多くの冗長なロジックとコードがあるため、最適なソリューションは次のとおりです。

logout.php

<?php
session_start();
session_destroy();   
header('Location: Login2.php');
die();
?>
于 2013-10-15T17:03:07.233 に答える