我在codeigniter开发了一个网站,并为博客集成了wordpress。我的问题是,如果我登录该网站,我无法在wordpress博客中使用codeigniter会话值。
在Codeigniter登录后,我正在使用codeigniter会话设置以下会话。
$this->session->set_userdata('get_user_session', $auD);
现在我需要在wordpress头文件或索引文件中使用会话。我在wordpress中尝试了以下代码。
session_start();
print_r($_SESSION);
我没有获得上述ci会话值。
答案 0 :(得分:2)
CodeIgniter的Session class:
>> stores session information for each user as serialized (and optionally encrypted) data in a cookie
。
您使用$this->session->set_userdata('key','value')
设置的值不会出现在$_SESSION
变量中。
CodeIgniter还支持在数据库中存储会话内容。
您可以使用该配置在WordPress博客中检索会话数据。
答案 1 :(得分:0)
使用COOKIES获取会话数据。 请参阅此链接:https://thomashunter.name/blog/accessing-codeigniter-session-data-using-external-scripts/
require_once("config.php");
$cisess_cookie = $_COOKIE['ci_session'];
$cisess_cookie = stripslashes($cisess_cookie);
$cisess_cookie = unserialize($cisess_cookie);
$cisess_session_id = $cisess_cookie['session_id'];
$cisess_connect = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD);
if (!$cisess_connect) {
die("<div class="error">" . mysql_error() . "</div>");
}
$cisess_query = "SELECT user_data FROM ci_sessions WHERE session_id = '$cisess_session_id' LIMIT 1";
mysql_select_db(MYSQL_DATABASE, $cisess_connect);
$cisess_result = mysql_query($cisess_query, $cisess_connect);
if (!$cisess_result) {
die("Invalid Query");
}
$cisess_row = mysql_fetch_assoc($cisess_result);
$cisess_data = unserialize($cisess_row['user_data']);
print_r($cisess_data);
答案 2 :(得分:-1)
我在 wp-config.php 中使用以下代码并为我工作。
在数据库中的 Codeigniter 中存储会话。
Codeigniter 版本 3.x.x
define('BASEPATH', 2021);
require_once(__DIR__.DIRECTORY_SEPARATOR.'panel'.DIRECTORY_SEPARATOR.'application'.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR."database.php");
$cisess_cookie = $_COOKIE['ci_session'];
$cisess_connect = mysqli_connect($db[$active_group]['hostname'], $db[$active_group]['username'], $db[$active_group]['password']);
if (!$cisess_connect) {
die("<div class='error'>" . mysqli_error($cisess_connect) . "</div>");
}
$cisess_query = "SELECT data FROM sessions WHERE id = '$cisess_cookie' LIMIT 1";
mysqli_select_db($cisess_connect,$db[$active_group]['database']);
$cisess_result = mysqli_query($cisess_connect,$cisess_query);
if (!$cisess_result) {
die("<div class='error'>" . mysqli_error($cisess_connect) . "</div>");
}
$cisess_row = mysqli_fetch_assoc($cisess_result);
$session_data = $cisess_row['data'];
$return_data = array();
$offset = 0;
while ($offset < strlen($session_data)) {
if (!strstr(substr($session_data, $offset), "|")) {
throw new Exception("invalid data, remaining: " . substr($session_data, $offset));
}
$pos = strpos($session_data, "|", $offset);
$num = $pos - $offset;
$varname = substr($session_data, $offset, $num);
$offset += $num + 1;
$data = unserialize(substr($session_data, $offset));
$return_data[$varname] = $data;
$offset += strlen(serialize($data));
}
print_r($return_data);
exit;