一页加载导致大量PHP会话ID

时间:2012-06-25 21:42:59

标签: php session session-cookies sessionid

我最近切换到使用我们的数据库为我们的用户管理PHP会话。我实现的数据库会话处理程序大部分与this one相同。

话虽如此,我遇到了一些奇怪的行为。在单页加载时,PHP会话ID正在改变几个不同的时间。例如,下面的输出在我的_write session_set_save_handler()调用中使用file_put_contents在一次页面加载期间写入文件。

我搜索了代码,session_regenerate_id()从未被调用,session_id(<new_id>)也未被调用。此外,我的php.ini将session.auto_start设置为Off。基本上,我不知道在给定上述事实的情况下,会话ID如何在一个页面加载中发生变化。

我注意到它的原因是因为链接到网页的REPLACE INTO SQL语句在我的数据库中创建了8行(每个额外的一行,不同的会话ID)。如您所见,其中一个重复了四次左右。这恰好是唯一一个在放入数据库时​​也具有与之关联的数据的会话ID。

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

值得注意的是,我正在加载的页面中有一些AJAX请求到我们自己的服务器。此外,我们网站上的所有页面加载都不会发生此行为。到目前为止,我已经将它缩小到这一页,它产生了一些不同的AJAX请求。

思想?

更新:我的服务器中有以下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>

0 个答案:

没有答案