ログインページを作成し、ログインステータスに応じてページ上部に異なるレイアウトを表示しました。
ログイン前
ログイン後、セッションの値が
と表示されます
これらはテスト環境の影響であり、動作には問題ありません。
しかし、公式環境に移行した後、ログイン後、ログインと登録の最初の画面が表示されたままでした。
これを実装する方法は、header.html に php を埋め込み、session['username'] に値があるかどうかに基づいて HTML コードの出力方法を決定することです。
セッションはログインインターフェイス、つまりlogin.phpで取得されます。
<div id="top-menu"><?php if(isset($_SESSION['username'])) { echo "<div id='account'>"; echo "<ul><li><a href='account.html' class='my-account'>我的帐号</a></li>"; echo "<li><a href='tools/logout.php' class='logout'>退出</a></li></ul></div>"; echo "<div id='loggedas'>登录为 <a href='account.html'>".$_SESSION['username']."</a></div>"; } else { echo "<div id='account'>"; echo "<ul><li><a href='login.html' class='login'>登录</a></li>"; echo "<li><a href='register.html' class='register'>注册</a></li></ul></div>"; }?>
session_start(); が表示されていないかどうかにも注意する必要があります。 session.cookie_path、session.cookit_domain の設定が正しいかどうか、SESSION ID Cookie が正しく読み取られるかどうか。
そして、output_buffering がオフになっていることが原因で発生する可能性のある ob_start() エラー
session.cookie_path、session.cookit_domain の設定が正しいかどうか、および SESSION ID Cookie が確実に設定されているかどうかにも注意する必要があります。正しく読んでください。
Cookie が有効なパス
session.cookie_domain =
;デフォルト値のままで変更していませんが、どちらの環境でもこのように一方は使用でき、もう一方は使用できません。
session の値をダンプして確認してください
session.save_path
各 php ファイルの前に session_start() を追加しましたが、問題ありませんでしたが、値を割り当てるときにローカル環境が 1 つだけを使用する理由がまだわかりません。
テスト環境と正式環境のphp設定は異なりますか? php.ini内:
session.auto_start = 1
正式環境: session.auto_start = 0