0

ログインごとに $_SESSION['usr'] と $_SESSION['psw'] のセッション変数を作成しています。ログアウトすると、次のコードでそれらを破棄しています。

<?php
session_start();
session_destroy();
if(count($_SESSION) == 0)
{
$_SESSION=array();
session_destroy();
}
header("Location:home.php");
?>

私がやろうとしているのは、いくつかのページをログインユーザーのみに制限することです。そのため、この小さなコードを使用しようとしました:

<?php if(!$_SESSION['usr']){header('Location:home.php');} ?>

それは完全に理にかなっているので、なぜ機能しないのかわかりませんが、その理由は誰にも分かりませんか? ご協力ありがとうございました...

4

1 に答える 1

1

セッションを 2 回破棄しようとしないでください。

そのはず:

<?php
  session_start();   
  $_SESSION = array();
  //Session Cookie
  if (ini_get("session.use_cookies")) {
      $params = session_get_cookie_params();
      setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
      );
  }
  session_destroy();
?>

http://php.net/manual/en/function.session-destroy.php

何かが設定されているかどうかを確認する必要はありません。そして、チェックはおそらく次のようになります。

<?php if(!isset($_SESSION['usr'])) {
   //header() - see below
} ?>

Location は絶対 URL である必要があります (例: http://www.mydomain.com/home.php)

于 2012-09-09T16:25:32.543 に答える