3

我尝试使用下面的代码将 REQUEST_URI 存储在会话中。当访问者登陆我们网站的页面时,我需要存储第一个 REQUEST_URI,并且在他们开始浏览页面时不被覆盖。这不起作用,因为我浏览了我看到由 echo 显示的新 URI 的站点。

session_start();
if ( !isset( $_SESSION['theuri'] ) ) {
    if ( !empty( $_SERVER['REQUEST_URI'] ) ) {
        $_SESSION['theuri'] = $_SERVER['REQUEST_URI'];
    }
}

echo $_SESSION['theuri'];
4

4 回答 4

0

清除您的 cookie,然后重试。它可能是第一次设置的时候你从来没有 !empty() 条件并且从那时起就没有改变

于 2013-01-31T23:18:25.420 回答
0

你可以试试这个技巧:

if(session_id() == '') 
     session_start();

如果 WP 尝试为您启动会话,应该会有所帮助。

于 2013-01-31T23:20:44.023 回答
0

您必须在任何输出之前启动会话,以便正确设置 cookie。Wordpress 是无状态的,根本不使用会话。您提到您将此代码放在页脚中,因此可能已经有输出。

一个 hacky 解决方案是在 index.php 或 wp-config.php 的顶部输入 session_start()。

于 2013-01-31T23:24:52.213 回答
0

我发现这篇文章说要将此代码添加到我的functions.php,现在我页脚中的代码工作正常。

http://devondev.com/2012/02/03/using-the-php-session-in-wordpress/

add_action('init', 'myStartSession', 1);
add_action('wp_logout', 'myEndSession');
add_action('wp_login', 'myEndSession');

function myStartSession() {
    if(!session_id()) {
        session_start();
    }
}

function myEndSession() {
    session_destroy ();
}
于 2013-01-31T23:34:02.783 回答