J Factory :: getUser()在joomla中返回0 id

时间:2012-09-07 19:14:52

标签: joomla joomla1.5 joomla2.5

我在模块中使用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。任何人都可以帮助我......

2 个答案:

答案 0 :(得分:2)

您从JFactory::getUser()获得的响应是​​当前JUser对象(与您的会话相关)或者是来宾的空JUser对象。 因此,在您的情况下,您要么没有登录,要么没有正确加载Joomla。

您应该与之交谈的唯一php文件是index.phpadministrator/index.php,这些文件正在加载所有必需的文件并执行您想要的操作。 (如果您使用的是某些CLI脚本,则可能还有其他选项)

您可以在Joomla Documentation

上找到有关Ajax的更多信息

答案 1 :(得分:1)

我遇到了类似的问题,结果证明是cookie域存在问题,我使用域example.com登录了该站点,但使用www.example.com访问了AJAX URL。只需更改域名以便匹配即可解决问题。

根据我的经验

$user = JFactory::getUser();
$id = $user->id;
如果用户已登录,

将始终返回正确的用户ID,无论他们是否为管理员用户,如果他们未登录,则返回0。因此,如果您认为自己已登录时获得0在,它必须是某种cookie的问题,或者Joomla会话没有正确启动,例如,不通过index.php访问该网站。