我尝试将REQUEST_URI存储在具有以下代码的会话中。当访问者登陆我们网站的页面时,我需要存储第一个REQUEST_URI,并且当他们开始浏览页面时不会覆盖它。这不起作用,因为我浏览网站时我看到了回显显示的新URI。
session_start();
if ( !isset( $_SESSION['theuri'] ) ) {
if ( !empty( $_SERVER['REQUEST_URI'] ) ) {
$_SESSION['theuri'] = $_SERVER['REQUEST_URI'];
}
}
echo $_SESSION['theuri'];
答案 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 ();
}