0

最近、データベースを使用してユーザーの PHP セッションを管理するように切り替えました。私が実装したデータベース セッション ハンドラは、ほとんどの場合、これと同じです

そうは言っても、私はいくつかの奇妙な行動に出くわしました。1 回のページ読み込みで、PHP セッション ID が数回変更されます。たとえば、以下の出力は、1 つのページの読み込み中に、my _writefor mysession_set_save_handler()呼び出しで file_put_contents を使用してファイルに書き込まれました。

私はコードを検索しましたが、session_regenerate_id()呼び出されたこともありませんsession_id(<new_id>)。さらに、私の php.ini には session.auto_start が に設定されていOffます。基本的に、上記の事実を考慮して、1回のページ読み込みでセッションIDがどのように変化するかはわかりません。

私がそれに気付いた理由はREPLACE INTO、リンク先の Web ページからの SQL ステートメントがデータベースに 8 行ほどを作成しているためです (余分な異なるセッション ID ごとに 1 行)。ご覧のとおり、そのうちの 1 つが 4 回ほど繰り返されます。これは、データベースに入れられたときにデータが関連付けられている唯一のセッション ID です。

f951tbvjkc8c5mv25aakfhoq86
f951tbvjkc8c5mv25aakfhoq86
f951tbvjkc8c5mv25aakfhoq86
f951tbvjkc8c5mv25aakfhoq86
eodjh2vhuo5ni1b7ia5ro6itf7
bada69955ld96fks0g057pp7i2
4n4c00ddlolb9k2t3uh2h66v37
lsqhhmfsund3bp3ocotcrj0l05
qvfe3qp6nupokcncp8jja8tsk0
4qfp9m3knabs88t6n1fkjo8oq6
g52du9v2fcsak27tjo7519q7j0

ロードしているページには、独自のサーバーへの AJAX 要求が含まれていることに注意してください。さらに、この動作は、サイトのすべてのページ読み込みで発生するわけではありません。これまでのところ、いくつかの異なる AJAX 要求を行うこの 1 つのページに絞り込みました。

考え?

更新: カスタム ドメインのワイルドカードとして、サーバーに次の vhost があります。コメントアウトされた行は、何が原因だと思います。それをコメントアウトすると、うまくいくようです。そこにあると、奇妙な動作が発生するようです。

<VirtualHost *:80>
    DocumentRoot "/opt/local/www/mysite.com"
    ServerName default
    ServerAlias *
    ErrorLog "/opt/local/apache2/logs/mysite.com-error.log"
    CustomLog "/opt/local/apache2/logs/mysite.com-access.log" common
        <Directory "/opt/local/www/mysite.com">
                AllowOverride All
                php_value session.save_path "/opt/local/www/mysite.com/sessions"
                #php_value session.cookie_domain "mysite.local"
                php_value auto_prepend_file "/opt/local/www/mysite.com/core.php"
        </Directory>
</VirtualHost>
4

0 に答える 0