ホームページ  >  記事  >  バックエンド開発  >  テスト環境から正式環境に移行するとセッションの価値がなくなる

テスト環境から正式環境に移行するとセッションの価値がなくなる

WBOY
WBOYオリジナル
2016-06-23 14:14:43791ブラウズ

ログインページを作成し、ログインステータスに応じてページ上部に異なるレイアウトを表示しました。
ログイン前

ログイン後、セッションの値が
と表示されます
これらはテスト環境の影響であり、動作には問題ありません。
しかし、公式環境に移行した後、ログイン後、ログインと登録の最初の画面が表示されたままでした。

これを実装する方法は、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>";    }?>


注: テスト環境は XP で、公式環境は server03 です。


ディスカッションへの返信 (解決策)

session_start(); が表示されていないかどうかにも注意する必要があります。 session.cookie_path、session.cookit_domain の設定が正しいかどうか、SESSION ID Cookie が正しく読み取られるかどうか。

そして、output_buffering がオフになっていることが原因で発生する可能性のある ob_start() エラー


session.cookie_path、session.cookit_domain の設定が正しいかどうか、および SESSION ID Cookie が確実に設定されているかどうかにも注意する必要があります。正しく読んでください。

および Output_buffering がオフになっていると、ob_start() エラーが発生する可能性があります

Cookie が有効なパス
session.cookie_domain =
;デフォルト値のままで変更していませんが、どちらの環境でもこのように一方は使用でき、もう一方は使用できません。

session の値をダンプして確認してください

session.save_path

これはどうでしょうか?また、このパスに書き込み権限があることを確認してください

各 php ファイルの前に session_start() を追加しましたが、問題ありませんでしたが、値を割り当てるときにローカル環境が 1 つだけを使用する理由がまだわかりません。


テスト環境と正式環境のphp設定は異なりますか? php.ini内:

テスト環境:

session.auto_start = 1

正式環境:

session.auto_start = 0

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。