ログアウトをクリックしてセッションを破棄しようとしていますが、うまくいきません。
<?php
session_start();
if(isset($_SESSION['user_name']))
{
session_destroy();
session_unset();
header('Location:Login2.php');
}
else
{
echo "error";
}
?>
それ以外の部分は表示エラーを意味します。
ログアウトをクリックしてセッションを破棄しようとしていますが、うまくいきません。
<?php
session_start();
if(isset($_SESSION['user_name']))
{
session_destroy();
session_unset();
header('Location:Login2.php');
}
else
{
echo "error";
}
?>
それ以外の部分は表示エラーを意味します。
不要なコードがたくさんあります。たとえば、ログアウトリンクは、ユーザーが実際に正しくログインしている場合にのみ表示されるため、if-else
ステートメントには意味がありません。
それを短くしてください:
<?php
session_start();
session_destroy();
header('Location:Login2.php');
?>
つまり、セッションを破棄する場合、天気を確認したり、ユーザーがログインしていないことを確認しても意味がありません。ユーザーがログインしていない場合、パスhttp://yourdomain.com/logout.phpがこのスクリプトにうまくつながるとしましょうで、彼が何らかの形でこのパスにアクセスしても実際には何も起こりませんが、彼がログインしている場合は、SESSION 変数が設定されているかどうかを気にする必要はありません。
呼び出し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();
?>