获取REQUEST_URI并且不要覆盖

时间:2013-01-31 22:59:55

标签: php session-variables session-cookies

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

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

echo $_SESSION['theuri'];

4 个答案:

答案 0 :(得分:0)

清除Cookie并重试。这可能是你第一次没有使用!empty()条件而且从未改变过

答案 1 :(得分:0)

你可以试试这个黑客:

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分: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 ();
}