1

ログインページをバイパスしようとする外部ユーザーが、ログイン $_SESSION 変数が設定されているかどうかを確認し、設定されていない場合はセッションを破棄し、メインのログイン ページにリダイレクトされます。

私の問題は、!isset 関数が FALSE 値を返し、セッションとリダイレクトを破棄することですが、そのページの変数を print_r でテストすると、認識されて保存されます。

私のコード(変数を空白にしました):

<?php  

 session_start();

 if(!isset($_SESSION['xxx'], $_SESSION['xxx']))
  { echo "Login successfull"; }

  else 

  { session_destroy();
    header("location:main_login.php");
  }

?>

誰かが私が間違ったことを説明してくれたら (必ずしも紙に答えてくれるとは限りませんが、私は新人なので理解し、学びたいと思っています)、それは素晴らしいことです。私は周りを見回してみましたが、私が探していたものを本当に見つけることができませんでした. よろしくお願いします!

4

2 に答える 2

2
if(!isset($_SESSION['xxx'], $_SESSION['xxx']))

これは、セッションが設定されているかどうかを確認しています。記号notに注意してください。!したがってLogin Successfull、セッション変数が設定されていないときにエコーしています。

次のようにする必要があります。

if(isset($_SESSION['xxx'], $_SESSION['xxx']))
{ 
    echo "Login successfull"; 
}
else 
{ 
    session_destroy();
    header("location:main_login.php");
}
于 2013-10-11T10:35:07.037 に答える
2
isset($_SESSION['xxx'], $_SESSION['xxx'])

すべての変数が設定されていない場合は false を返します。

したがって、あなたの状態は以下のようでなければなりません。

if(isset($_SESSION['xxx'], $_SESSION['xxx']))
于 2013-10-11T10:34:16.500 に答える