0

ここでいくつかの質問を見ましたが、私の問題に答えてくれるものはないようです。

うまく機能する独自のカスタム MVC フレームワークを使用して Web サイトを作成しました。

これも機能する簡単なログイン コマンドがあります。電子メール アドレスとパスワードが正しい場合、顧客 ID と名前が正しく返されます。

それらが検証されたら、データを返すのではなく、いくつかのセッション変数を設定するだけです。そのため、それらがホームページに返されると (現在はセッション変数を介してログインされています)、代わりに名前とカート内のアイテムが表示されます。 「ようこそ来訪者」の。

        if($record = $stmt->fetch())
        {   
            $_SESSION["Name"] = $record["FirstName"];   
            $_SESSION["CustomerID"] = $record["ID"];        
            $_SESSION["LoginStatus"] = true;
            $response->SetViewName("DefaultView"); // Login Success, back to homepage               
        }
        else
        {
            $response->SetViewName("LoginView"); // Login Failure, back to login view   
        } 

私の header.php ファイルには、対応するウェルカム メッセージを表示する html コードがあります。訪問者の場合は訪問者として表示され、そうでない場合 ($_SESSION["LoginStatus"] == true) は名前が表示され、カートの商品...

            <?php
            if($_SESSION["LoginStatus"] == false) // if visitor
            {
                echo '<p class="welcome">Welcome visitor, please <a href="Index.php?cmd=Login">log in</a> or <a href="Index.php?cmd=Register">register</a></p>';
            }
            else if($_SESSION["LoginStatus"] == true) // if logged in
            {
                echo "<p class='welcome'>Welcome back ".$_SESSION["Name"].", you have ".$_SESSION["ItemsInCart"]." items in your cart</p>";
            }
            ?>

したがって、新しいユーザーがWebサイトにアクセスすると、セッションが開始されますが、LoginStatus変数がチェックされると、定義されていないためにエラーがスローされますが、セッションのすぐ下で定義すると、ユーザーがログを記録したときに開始されますでは、変数は常に false であり、名前やカート内のアイテムは表示されません。

4

4 に答える 4

0

if チェックを使用する

isset($_SESSION["LoginStatus"])

値を確認する前に、設定されている場合は値を確認し、設定されていない場合はまったくログインしていません

于 2013-06-02T14:01:23.400 に答える
0

ユーザーがログインしていない場合、$_SESSION[LoginSatus"] は空です。

最初のスクリプトで false に設定するか、2 番目のスクリプトで空/設定されているかどうかを確認する必要があります。

于 2013-06-02T14:04:31.020 に答える
0

直後に次を追加してみてくださいsession_start();

    if(!isset($_SESSION["LoginStatus")){
         $_SESSION["LoginStatus"] = false;
    }

私がそれを正しく理解していれば、問題を解決する必要があります。

于 2013-06-02T14:17:42.380 に答える
0

次のようにチェックするには、空のタグを使用する必要がある場合があります。

if(!empty($_SESSION["LoginStatus"])){

   code to do as loggined user
 }else{
    code to 
  }
于 2013-06-02T14:19:21.180 に答える