4

セッションを追加し、このコードを使用してログアウト後にユーザーがページにアクセスできないようにしましたが、できません。ユーザーは引き続き前のページにアクセスできます。コードは次のとおりです。

ログインコードは

<form id="form1" name="form1" method="post" action="alogin.php" onsubmit="return(validate());">
  <p align="center"><font style="Arial" size="+1" color="#000000">Username : 
    <label for="name"></label>
    <input type="text" name="name" id="name" />
  </p>
  <br />
  <br />
  <p align="center">Password : 
    <label for="pass"></label>
    <input type="password" name="pass" id="pass" /></font>
  </p>
  <p align="center">
    <br />
    <br />
    <input type="submit" name="submit" id="submit" value="Login" />
  </p>
</form>

保護された各ページでこれを使用しました

<?php
session_start();
if (!isset($_SESSION['name'])) {
  header("location:login.html");
} else {
}
?>

logout.phpが含まれている間

 <?php
session_start();
$_SESSION=array();
setcookie(session_name(),"",time()-3600);
session_destroy();
header("Location: login.html?id=You are successfully logged out");
?>
4

8 に答える 8

2

これをキャッシュと呼びます。したがって、サーバーへの要求はありません。

それ以上のやり取りができないことを確認してください。

于 2013-06-03T21:43:47.747 に答える
1

ログインしたhtmlも出力されないようにするためheader("location:login.html");にもやりたいことがあります。die();

于 2013-06-03T21:43:47.137 に答える
0

あなたが言及したロジックに従うと、セッションのチェック方法に問題があるようです。session_start();を実行している場合は機能しません。保護されたページを一番上にして、セッションをチェックします。

これを試してセッションを確認してください

if(session_id() == '') {
    // session isn't started
 session_start();
}
else
{
 header("location:login.html");
}
于 2013-06-03T22:45:46.380 に答える
0

「session-cookie」という Cookie を作成し、ユーザーが正常にログインしたときにその値を true に設定します。

ユーザーがログアウトすると、'session-cookie' が空に設定されます。

次に、Javascript で以下を追加します。

<script>
if( document.cookie.indexOf("session-cookie") < 0 ) {
 location.replace('http://[any url]/'); 
}
</script>

戻るボタンを押してキャッシュされたページを表示することはできますが、すぐにリダイレクトされ、履歴の現在のページが上書きされます。

于 2016-05-02T23:21:10.963 に答える
0

注意してください:これは「示唆的な」答えにすぎません。

これは私が使用しているもので、かなりうまく機能します。

ファイル拡張子が必要なフォームでは.php、次のようなものを使用します。

session_start();
$firstname = $_SESSION['unique_session_name'];
// yours being $name

// some code

$firstname = $_POST['firstname'];

次に、保護されたページで:

session_start();
$_SESSION["unique_session_name"] = $_POST["firstname"];

   if (isset($_SESSION['unique_session_name'])) {

// some code

}
于 2013-06-03T22:31:18.310 に答える
0

他の人がキャッシュの問題について言及しているように、これはここでの暗闇の中での一種の刺し傷です. 少し前に同様の問題がありました。チェックしていたセッション変数の設定を手動で解除することで解決したと思います。これが役立つかどうかはわかりませんが、私にはうまくいったようです。

session_unset();
unset($_SESSION['name']);

可能な限りのことを試しただけのケースでした。

于 2013-06-04T22:46:45.183 に答える