ホームページ >バックエンド開発 >PHPチュートリアル >テスト環境から正式環境に移行するとセッションの価値がなくなる
ログインページを作成し、ログインステータスに応じてページ上部に異なるレイアウトを表示しました。
ログイン前
ログイン後、セッションの値が
と表示されます
これらはテスト環境の影響であり、動作には問題ありません。
しかし、公式環境に移行した後、ログイン後、ログインと登録の最初の画面が表示されたままでした。
これを実装する方法は、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