-3

上記のすべてのコードを、私が含めている header.php に配置することを検討しています。

ヘッダーの最初の数行には次のものがあります。

<?php session_start();
if(!isset($_SESSION["loggedin"])){
header("Location: login.php");
exit;}
?>

これの残念な結果は、ユーザーが login.php にリダイレクトされたときに、リダイレクト ループが発生することです。

疑似の行に沿って If ステートメントを作成する最善の方法は次のとおりです。

if (page="login.php")
{
  //do not redirect to login.php
}

の前にsession_start();

4

3 に答える 3

0

コードをラップできます

if(!isset($_SESSION["loggedin"])){
header("Location: login.php");
exit;}

次のような関数で:

function ensureLoggedIn()
{
  if (!isset($_SESSION["loggedin"]))
  {
    header("Location: login.php");
    exit;
  }
}

次に、認証が必要なすべてのページからこの関数を呼び出します。

ユーザーがログインしていない場合、secretpage.php でこの関数を呼び出すと、login.php にリダイレクトされます。

Login.php にこの関数を含めるべきではありません。

于 2013-08-16T10:30:38.357 に答える
0

login.php にヘッダーを含める前に、次のようにします。

$logging_in = true;

次に、ヘッダーを変更します

if(!isset($_SESSION["loggedin"])){

if(!isset($_SESSION["loggedin"]) && !isset($logging_in))
于 2013-08-16T10:32:34.817 に答える
-2

ログインページで、ユーザーがすでにログインしているかどうかを確認し、適切なページにリダイレクトできます。

<?php
 if( userIsLoggedIn ){
  //redirect to main page page or logout them forcefully
 }
?>

//your login form can go here
于 2013-08-16T10:28:33.327 に答える