我已经尝试了一切以实现这一目标。这是我目前的chatLogin
函数:
function getUserID() {
$userid = 0;
if (!empty($_SESSION['basedata']) && $_SESSION['basedata'] != 'null') {
$_REQUEST['basedata'] = $_SESSION['basedata'];
}
if (!empty($_REQUEST['basedata'])) {
$userid = $_REQUEST['basedata'];
}
if (!empty($_COOKIE['ci_session'])) {
$uid = unserialize($_COOKIE['ci_session']);
if(!empty($uid['uid'])){
$userid = $uid['uid'];
}
}
return $userid;
}
用户ID在Cookie中保存为uid
,无论如何都无法正常工作。
这是错误日志显示的内容:
[16-Oct-2015 01:14:46 UTC] PHP注意:unserialize():第49行/Applications/MAMP/htdocs/cometchat/integration.php中偏移量为0的40字节错误 [16-Oct-2015 01:14:46 UTC] PHP警告:无法修改标头信息 - 已在/ Applications / MAMP /中发送的标头(在/Applications/MAMP/htdocs/cometchat/integration.php:49处开始输出)第180行的htdocs / cometchat / cometchat_init.php
非常感谢任何帮助。我一直在谷歌搜索这个确切的问题超过3个小时,没有运气。非常感谢你们。
答案 0 :(得分:1)
$ _COOKIE ['ci_session']只是指向网络服务器中会话ID的指针。您无法通过反序列化来获取任何信息(请注意,您从错误日志中获得的第一个PHP通知是因为反序列化了无效的格式值)。
如果你以uid的形式保存为userid,只需使用$ _COOKIE ['uid']即可获得它。
关于你的getUserId有问题。如果你在会话中首先寻找userid,那么请求,然后cookie,正确的方法是:
function getUserID()
{
if (isset($_SESSION['basedata'])) return $_SESSION['basedata'];
if (isset($_REQUEST['basedata'])) return $_REQUEST['basedata'];
if (isset($_COOKIE['uid'])) return $_COOKIE['uid'];
return 0;
}
此致