我在模块中使用ajax页面来保存数据。当我使用JFactory::getUser()
时,我得到的结果为
JUser Object
(
[isRoot:protected] =>
[id] => 0
[name] =>
[username] =>
[email] =>
[password] =>
[password_clear] =>
[usertype] =>
[block] =>
[sendEmail] => 0
[registerDate] =>
[lastvisitDate] =>
[activation] =>
[params] =>
[groups] => Array()
[guest] => 1
[lastResetTime] =>
[resetCount] =>
[_params:protected] => JRegistry Object
(
[data:protected] => stdClass Object ()
)
[_authGroups:protected] =>
[_authLevels:protected] =>
[_authActions:protected] =>
[_errorMsg:protected] =>
[_errors:protected] => Array()
[aid] => 0
在运行此代码之前已登录,为什么这仍然返回0用户ID。任何人都可以帮助我......
答案 0 :(得分:2)
您从JFactory::getUser()
获得的响应是当前JUser对象(与您的会话相关)或者是来宾的空JUser对象。
因此,在您的情况下,您要么没有登录,要么没有正确加载Joomla。
您应该与之交谈的唯一php文件是index.php
和administrator/index.php
,这些文件正在加载所有必需的文件并执行您想要的操作。 (如果您使用的是某些CLI脚本,则可能还有其他选项)
答案 1 :(得分:1)
我遇到了类似的问题,结果证明是cookie域存在问题,我使用域example.com登录了该站点,但使用www.example.com访问了AJAX URL。只需更改域名以便匹配即可解决问题。
根据我的经验
$user = JFactory::getUser();
$id = $user->id;
如果用户已登录,将始终返回正确的用户ID,无论他们是否为管理员用户,如果他们未登录,则返回0。因此,如果您认为自己已登录时获得0在,它必须是某种cookie的问题,或者Joomla会话没有正确启动,例如,不通过index.php访问该网站。