外部アプリからインポートするときに、新しいユーザーとそのすべてのカテゴリ、サブカテゴリ、および記事を作成しています。すべてのコンテンツの適切な所有権を取得するには、新しいユーザーをログインさせ、コンテンツのインポートを完了してからログアウトします。サイトのログインページからテストすると、すべての資格情報が機能します。
これは問題なく機能し、最初のログインは期待どおりに機能します。ただし、次回->login()
を試行すると、_#__session
_の重複エントリエラーが発生するため、ログアウトはセッションに関連する何かを「欠落」しているように見えます。
_$app = JFactory::getApplication();
foreach($imports as $import) {
$credentials = array();
$credentials['username'] = $import->username;
$credentials['password'] = 'abc123';
$app->login($credentials)) // Error occurs here the 2nd time this executes
...
... all the importing work that works as expected.
...
$app->logout; // Logout completes
}
_
このエラーはapplication\cms.phpで発生し、新しいセッションを挿入しようとすると、関数checkSession`になります。
Duplicate entry '' for key 'PRIMARY' SQL=INSERT INTO 'xyz_session' ('session_id', 'client_id', 'guest', 'time', 'userid', 'username') VALUES ('', 0, 1, '0', 0, '')
明らかに、ログアウトする以上のことがセッションにありますが、しばらく_$session
_をいじった後、エラーの発生を防ぎ、次のログインを許可するレシピを見つけることができません。
これはすべて、サイトのゲストユーザーに関連付けられているようです。ログアウト後に以下のコードを追加すると、問題が解決しました。
$app->logout();
$session =& JFactory::getSession();
$session->destroy();
$session->start();