2017-11-21 12 views
0

私はプロジェクトで作業し、いくつかの情報を保存するためにPHPセッションを使用しています。 あるスクリプトでは、session_start()でセッションを開始し、$ _SESSION ['var']を作成します。別のスクリプトでは、この変数を取得したいのですが、新しいsessionidを持つsession_start()を使って新しいセッションを作成します。 私は何が起こっているのか分かりません。 1つのプロジェクトに2つの異なるセッションを作成する理由それを修正するには?PHPは2つの異なるセッションを作成します

いくつかのPHPの設定パラメータ:

session.use_cookies = 1 
session.use_only_cookies = 1 
session.use_trans_sid = 0 
expose_phps= On 

セッションIDの使用クッキー。

敬具、

+4

その方法を試すことができます。あなたのページのいくつかが接頭辞 'www'であり、いくつかが接頭辞でないものがある場合、サーバはそれらを異なるウェブサイトとして解釈し、異なるセッションを割り当てます。サイトの一部がSSLを使用していて、一部がSSLを使用していない場合、別のセッションを持つこともできます。エンドユーザーが異なるブラウザまたはデバイスを使用する場合、エンドユーザーは異なるセッションを持つことになります。あなたの質問に該当するものがあるかどうかはわかりません。 – mopsyd

+0

ご協力ありがとうございます、それは唯一のドメイン、異なるディレクトリであり、SSLは現在使用されていません。他のドメインの他のサーバーでは、コードが正常に動作します。設定に問題があるかもしれません。 –

+0

ブラウザのコンソールで、Cookieをチェックし、PHPSESSIDのハッシュ値が異なるかどうかを確認します。これにより、問題がサーバー構成の問題(異なる場合)またはコードロジックの問題(そうでない場合)が明らかになります。同じものであれば、コードロジックではまだ問題になるかもしれませんが、はるかに少ない可能性があります。 – mopsyd

答えて

0
<?php  
session_id("session1"); 
session_start(); 
echo session_id(); 
$_SESSION["name"] = "1"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session2"); 
echo session_id(); 
session_start(); 
$_SESSION["name"] = "2"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session1"); 
echo session_id(); 
session_start(); 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session2"); 
echo session_id(); 
session_start(); 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; ?> 

出力:

session1 

Array 
(
    [name] => 1 
) 

session2 

Array 
(
    [name] => 2 
) 

session1 

Array 
(
    [name] => 1 
) 

session2 

Array 
(
    [name] => 2 
) 

あなたは、これが起こることができる多くの理由があります

関連する問題