【问题标题】:Problem with PHP sessions in WordPress with non-default permalinks带有非默认永久链接的 WordPress 中的 PHP 会话问题
【发布时间】:2011-04-09 08:12:48
【问题描述】:

我在更改 WordPress 中的默认永久链接时遇到了一个奇怪问题。

当我将此代码放在我的主题的functions.php文件中(甚至在WordPress的根index.php文件中)并在几个页面之间导航和更新(例如/about页面)时,我的计数器经常运行两次。

我尝试过的每台服务器以及任何主题或 WordPress 安装都会重现此问题。让我的大脑更加困惑的另一件事是它不会出现在 Safari、Internet Explorer(6、7 和 8)中,而是只出现在 Firefox 中。我使用的是 Firefox 3.6.8,并且在 Mac OS X 和 Windows XP 中都试过了。

session_start();

$counter = $_SESSION['wp_action_counter'];

if( !isset($counter) ){
$counter = 0;
}

$counter++;

echo $counter;

$_SESSION['wp_action_counter'] = $counter;

我的 .htaccess 规则如下所示

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

我很好奇为什么会发生这种情况,并且非常感谢能够帮助我解决问题的人。

【问题讨论】:

    标签: php wordpress firefox session mod-rewrite


    【解决方案1】:

    如果它增加了两次,这两个请求将发送到您的服务器,检查服务器日志,或者安装 firebug 并查看 net 选项卡,这样您就可以确定真正发生了什么,而不是假设它可能是什么(链接是prefetched,正在请求一个 php 生成的图像..)。

    【讨论】:

      【解决方案2】:

      只是一个想法...是否存在启动第二个请求的损坏的图像、脚本、css(或类似的东西)路径?我前段时间遇到过这个问题,IE 缓存了结果 404,但 FF 总是重新请求损坏的图像。图像路径被重写为触发计数器的我的索引路径...

      【讨论】:

        【解决方案3】:

        我终于找到问题所在了。

        当我的标题中有&lt;?php wp_head(); ?&gt; 时,WordPress 会添加这一行:

        <link rel='next' title='About' href='http://mysite.dev/about/' />
        

        此链接是prefetched,这就是计数器运行两次的原因。调整wp_head();的输出或者去掉就可以解决问题。

        【讨论】:

          【解决方案4】:

          您可以在此处找到有关如何控制标题中的输出的信息: http://wpquicktips.wordpress.com/2010/08/30/keep-a-track-of-what-happens-in-your-header-and-footer/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-10
            • 1970-01-01
            相关资源
            最近更新 更多