1

ログインページを統合しています(固定のユーザー名とパスワード)。

ユーザーがログインすると、別のページ'x'(私のサーバー上)にリダイレクトされます。

ただし、ユーザーがブラウザー(またはタブ)を閉じて再度開くと、ユーザー名を要求してパスする必要なしに、ページ'x'に自動的に移動します。

ただし、ブラウザ(Firefox)の設定からCookieを削除すると、通常の状態に戻ります。キャッシュを削除しても何も起こりません。

Cookieに削除するには、数行のコードを挿入する必要があることを知っています。私の質問は、

  1. これは100%Cookieの問題ですか?または、ローカルキャッシュへの保存も防ぐ必要がありますか?
  2. Cookieの防止は、ログイン中またはリダイレクト中にどのレベルで発生しますか?
  3. ページ「x」にリダイレクトされたら、そこにログアウトボタンを配置すると、リダイレクトされたセッションからログアウトできますか?

以下は私のコードです。

<?php
session_start();
if(isset($_POST['username'])){
 if(($_POST['username'] == "user") && ($_POST['password'] == "pass"))
{
  $_SESSION['secured'] = "Secured";
 }else{
  echo "Wrong username and password.  <p>
  <a href='?'retry</a>";
 }
}

if(!isset($_SESSION['secured']))
{    
echo "<form method='post'>
Username: <input type='text' name='username' maxlength='10' /><br>
Password: <input type='password' name='password' maxlength='10' /><br>
<input type='submit' value='login' />
</form>";
}else{
?>

<html>
<head>
<title>Session Login</title>
</head>
<body>
<p>redirecting....
<meta HTTP-EQUIV="REFRESH" content="1; url=http://x.php">
</p>
</body>
</html>

<?php
}
?>
4

1 に答える 1

1

セッションを破棄するlogout.phpページを作成できる場合:

unset($_SESSION['secured']);
header('Location: login.php');
exit;

そのページにアクセスするだけで、ログインは破棄されます。

所定の時間が経過した後にセッションをタイムアウトさせたい場合は、この例に示されているコードのようなものを使用できます。

ユーザーがx.phpにアクセスした後でセッションを強制終了したい場合

<?php
session_start();

//First make sure that they're allowed access to x.php
if(!isset($_SESSION['secured'])){
    //They shouldn't be here.
    header('Location: login.php'); //Redirect back to your login page
    exit;
}

//Ok, user is obviously logged in. Unset the session variable so that they can only view this page once (unless they login again)
unset($_SESSION['secured']);

//Show content of x.php
于 2013-03-27T10:00:33.310 に答える