1

我在模块中使用 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。谁可以帮我这个事....

4

2 回答 2

2

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

您应该使用的唯一 php 文件是index.phpand administrator/index.php,它们正在加载所有必要的文件并执行您想要的操作。(如果您使用某些 CLI 脚本,您可能还有其他选项)

您可以在Joomla 文档中找到有关 Ajax 的更多信息

于 2013-03-27T15:14:06.287 回答
1

我有一个类似的问题,原来是 cookie 域的问题,我使用域 example.com 登录到该站点,但使用 www.example.com 访问 AJAX URL。只需更改域以使其匹配即可解决问题。

在我的经验中

$user = JFactory::getUser();
$id = $user->id;

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

于 2013-10-01T10:23:42.307 回答