2016-06-22 2 views
-1

私はブログのウェブサイトを持っています。私はウェブサイトの上部にあるフラグをクリックして言語を変更することができます。英語またはスペイン語を選択すると、ページはその言語に変わります。
しかし、メニュー項目をクリックすると、ウェブサイトの言語がデフォルトの言語に戻り、クリックした言語のままになりません。ページが変更されると、PHPセッションが常に開始されます

私は選択した言語の値をセッションに入れますが、別のページをクリックすると値が失われます。

私のsession_id()が常に変化していることがわかります。セッションは常に開始します。 (あなたがウェブサイト上で表示されます)

SESSION ID値を開始しました::5d7e8cacfde4bc87f6e55b4fcddd5af7セッション STATUS2/

ここ

は、私のセッションのテストコードは

ob_start(); 
if (session_status() == 1) {  //or if(isset($_SESSION)) both of them not work and session_start() command work. 
    session start(); 
    echo 'started'; 
} 
echo " SESSION ID VALUE: ".session_id()." .Session Status:".session_status(); 

出力がホームページであります私のホストはgodaddyです。私はそれらを修正するように頼んだが、私はこのコードを開発し、彼らは見ていないと言いました。私は何をすべきか分からない?私はsession_pathが/ tmpであると見て、私はis_writable(ini_set("session_path"))と書いています。

+0

ブラウザの開発ツールを開き、[ネットワーク]ペインをチェックすると、あなたはセッションIDクッキーヘッダを見ることができますか?要求と応答の両方にありますか?それはいつ変わるのですか? –

答えて

2

session_start()は常に実行する必要があります。セッションが作成されている場合は、既に作成されたセッションが使用されます。それ以外の場合は、新しいセッションが作成されます。

また、session_statusでは、ハードコードされた値ではないPHP定数と比較する必要があります。

session_status()=== PHP_SESSION_NONE

http://php.net/manual/en/function.session-status.php

+0

私は、session_start()コマンドが動作し、新しいセッションが開始され、新しいIDが与えられたと考えました。だから私はセッションの状態を使用した – melihbasbug

+0

これは貴重な情報ですが、私はそれがどのように質問に答えるか理解できません。 'PHP_SESSION_NONE'は1ですが、現在のPHPのバージョン([demo](https://3v4l.org/SO2Cr))と元のコード(やりかたにかかわらず)は結局' session_start() 'を呼び出します。問題のコードがどこで動作しないのはなぜですか? –

+0

こんにちはAlvaro、私はPHP_SESSION_NONEとの比較がうまくいくとは言いませんが、ハードコードされた値の代わりに定数を使うことを提案しています。 –

関連する問題