3

セッション変数を問題なく使用しているアプリケーションがあります。whenを使用するすべてのページのヘッダーの前にセッションを開始します。問題はありませんでしたが、セッション変数を設定するページ以外のページに移動すると、突然、未定義のインデックスエラーが発生するようです。ただし、一部のブラウザでのみ。セッションが維持される場合と維持されない場合があります。

クッキーが保存されていない場合があるようです。さまざまなブラウザを使用してチェックを行いましたが、Cookieが保存される場合と保存されない場合があります。

実験しました。私はFirefoxを使用してアプリを使用していて、セッションが保存されているtmpフォルダーを監視していました。私はそれを一掃しました。Firefoxを使用して、セッションが使用されていたすべてのページを使用してアプリの使用を開始し、最後にtmpフォルダーを確認すると、そこに1つのセッションファイルがありました。

Internet Explorerでもまったく同じでしたが、現在7つの異なるセッションファイルがあります。

WAMPスタックでPHP5.3.0を使用しています。Apache2.2.11。セッションサポートは私のphpinfo()で有効になっています。

最初のページでvardumpを呼び出すと、セッションデータが出力されます。以降のページでは、セッション変数は空です。

<?php var_dump($_SESSION); ?>

array(0){}

誰かが私がこれに対する解決策を見つけるのを手伝ってくれる?

更新-PHPINISESSION設定

Directive        Local Value     Master Value
session.auto_start Off           Off 
session.bug_compat_42 On         On 
session.bug_compat_warn On       On 
session.cache_expire 180         180 
session.cache_limiter nocache    nocache 
session.cookie_domain 82.68.26.169   82.68.26.169 
session.cookie_httponly Off      Off 
session.cookie_lifetime 0        0 
session.cookie_path /            / 
session.cookie_secure Off        Off 
session.entropy_file no value    no value 
session.entropy_length 0         0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440      1440 
session.gc_probability 1         1 
session.hash_bits_per_character 5 5 
session.hash_function 0 0 
session.name PHPSESSID           PHPSESSID 
session.referer_check no value   no value 
session.save_handler files       files 
session.save_path c:/wamp/tmp    c:/wamp/tmp 
session.serialize_handler php    php 
session.use_cookies On           On 
session.use_only_cookies On      On 
session.use_trans_sid 0          0 

更新-解決策

私のアプリは(私が作成した)別のドメインからページをプルするiframeを使用していたため、設定しようとしていたCookieがブロックされていました。P3Pヘッダーを設定すると、問題は解決したようです。

4

6 に答える 6

3

以前の質問からの私の提案はまだ有効です: セッション ID を比較してください。

解決策は、ブラウザーがセッション Cookie を受け入れないという単純なことかもしれません。

を呼び出して、セッション ID を取得しますsession_id()。セッションが同じ場合session_start()、定数値が得られるはずです。それ以外の場合は、リクエストごとに新しいセッションがインスタンス化されます。

もチェックしてくださいC:\wamp\tmp。このディレクトリ内の無数のファイルは、各リクエストの新しいセッションを示している可能性があります。

EDITリクエストごとに新しいセッションを確認したので、セッション cookie が受け入れられるかどうかを確認します。ブラウザの設定を確認し、その名前のドメイン (「localhost」だと思います) の CookiePHPSESSIDが見つかることを確認します。

于 2010-12-05T14:03:00.067 に答える
3

session_start()セッション データにアクセスするすべてのページで呼び出しますか?

編集:毎回同じセッション ID を受け取りますか?
また、設定が原因で、見落としているエラーや警告 (ヘッダーが既に送信されているなど) がある可能性はありますか?

于 2010-12-05T12:17:23.800 に答える
1

ここに意味があります

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
  $_SESSION['saveddata'] = $row;
}

$_SESSION['saveddata']反復ごとに値を書き換えます。あなたは次のようなことを意味しているかもしれません

 $_SESSION['saveddata'][] = $row;

それは理にかなっています$atid = $_SESSION['saveddata']['autotaskid'];

于 2010-12-05T11:26:54.950 に答える
1

セッション設定を確認します。あなたは完全なリストを持っています:

<?php

phpinfo();

?>

「セッション」テーブルまで下にスクロールします。

特に、session.save_pathディレクトリが存在し、書き込み可能であることを確認してください。

于 2010-12-05T12:18:10.773 に答える