私は次の構造を持っています:
Index.php
Account.php
Login.php
CheckLogin.php
誰かが login.php 経由でログインすると、ユーザー名とパスワードがチェックされ、次のセッション変数が設定されます
$_SESSION['username'] = $username;
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
HTTP_USER_AGENT をチェックするファイル CheckLogin.php を含む Account.php にアクセスし、ユーザー名変数が設定されている場合。
ここで私は問題を抱えています。ユーザーが index.php (ホームページ) に戻ってログインした場合、アカウントのリンクを表示したいと思います。ただし、ユーザーがログインしていない場合、つまりサイトにアクセスしただけの場合は、サインアップ リンクを表示したいと思います。私は次のことができると考えていました:
<?php session_start()
if (!isset($_SESSION['username'])) {
// If username is not set destroy the session
session_destroy();
echo ("<a href=\"signup.php\">Sign up</a>");
}
else {
// If username is set
echo ("<a href=\"account.php\">Sign up</a>");
}
?>
これが完全に安全ではないことはわかっていますが、誰かがセッションを乗っ取って account.php にアクセスした場合、セッションを破壊し、正当でない場合はログアウトする必要があるチェックを行います。これはベストプラクティスですか、それともこの望ましい結果を達成するためのより良い方法はありますか? 誰もがサイトにアクセスしてセッションを作成および破棄するのは悪い考えだと思わずにはいられません。それは正しいことですか、それとも他に考慮する必要があることはありますか?