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.phpadministrator/index.php(いくつかの CLI スクリプトを使用している場合は、他のオプションがあるかもしれません)

Ajax の詳細については、Joomla のドキュメントを参照してください。

于 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 の問題である必要があります。または、index.php を介してサイトにアクセスしないなど、Joomla セッションが正しく開始されていません。

于 2013-10-01T10:23:42.307 に答える