0

ユーザーがログインしているかどうかに応じて、2 つの異なるバージョンのナビゲーション セクションを表示するサイトがあります。

<?php 
    if(isset($_SESSION['myusername'])){
        echo '<a href="'.$baseRoot.$defaultPage.'?com=logout&cxid='.uniqid(),'">Log Out</a>';
    }else{
        echo '<a href="'.$baseRoot.$defaultPage.'?com=login&cxid='.uniqid(),'" class="signupbutton">Sign Up</a>';
    }
?>

この問題は、ユーザーがログインした後、ログアウトせずにブラウザーを閉じたときに発生します (ブラウザーの終了時にキャッシュ/Cookie をクリアしないと仮定します)。

後でブラウザを開いてサイトに戻ると、ログインしていないかのようにナビゲーションが表示されます。その後、サイトのどこかのリンク、つまりMy Accountをクリックすると、ナビゲーションが変更され、ログインしていることを示します。の。

これを引き起こしている可能性のあるアイデアはありますか?サイトに戻ってきたときにすぐにログインしていることをナビゲーションに表示したいと思います。

4

2 に答える 2

1

まず、チェックsession_start()はhtmlの前にページに表示され、!DOCTYPEルールも表示されます。

次に、インデックスページに次を追加します。

 <?php
  session_start();
  if(isset($_SESSION['username'])){
  header("location: home.php"); // or whatever page you want your users to be redirected to... 

  }else {
  ?>
  //  here your html page should start 
  <html><head></head><body>
  // all the DOM elements on your page
  </body></html>
  <?php  
   } // closing end of the else block started above  
  ?>
于 2013-02-15T03:23:38.230 に答える
0

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

ob_start();
session_start();
//code to check session and other

ob_start()ヘッダー送信済みエラーを省略するためのものです。

于 2013-02-15T03:34:23.287 に答える