【发布时间】:2011-12-19 00:34:50
【问题描述】:
我正在使用 Wordpress 开发一个网站。
我的永久链接结构设置为显示帖子/页面名称。因此访问名为 store 的页面将如下所示:www.mysite.com/store/?some=arguments
在我所有的 WP 模板中,我可以使用 print_r($_SESSION); 输出我的所有 SESSION 变量
对从jQuery.ajax 调用的文件执行相同操作只会输出一些 SESSION 变量。
我使用下面的代码来查看两个文件的 cookie 路径是否相同,它们是:
$sessCookie = ini_get('session.cookie_path');
echo 'session.cookie_path: '.$sessCookie;
我的文件中也有此代码以确保会话已启动:
if (!session_id())
session_start();
为什么我无法从 WP 模板和从 jQuery.ajax 调用的 php 文件输出相同的会话变量?
更新
jQuery.ajax 调用jquery.php 文件。在这个文件的顶部,它有以下代码:
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-blog-header.php');
此代码触发functions.php。在这个文件中,我有以下代码:
function session_manager() {
if (!session_id())
session_start();
// Get variables in query string
$_SESSION['action'] = (isset($_GET['action']) ? $_GET['action'] : '');
$user_geo_data = get_geoip_record();
$_SESSION['user_geo_location'] = get_object_vars($user_geo_data);
}
当jquery.php 触发functions.php 时,session_id() 似乎返回 false,因此我创建了一个新会话。
有没有办法继续使用同一个会话?
更新 2
似乎 WP 配置在初始化时会杀死所有 GLOBAL 变量。
http://wordpress.org/support/topic/wp-blog-headerphp-killing-sessions
【问题讨论】:
标签: php jquery wordpress session