User:
Pass:
Keep:   
Xoops Cube Project
XOOPS Cube Project Site
Powered by Google


Powered by XOOPS Cube Legacy 2.1.8
PukiWikiMod 1.5.1
WordPress Module 0.6.0 Alpha
sysutilでログイン後のページ 投稿者: きさら 投稿日:2007/05/09(Wed) 15:16 No.230  
Nobunobu様

はじめまして。

sysutilのページに書き込みできないので、こちらで。

sysutilをxoops 2.0.16a で使わせていただこうといろいろいじっていますが、問題が出てしまいました。
「IDとパスワードを記憶」にチェックを入れてログインをすると直後のページがログイン前になってしまいます。
リロードするとログイン状態になりますが、ちょっと困ってしまいます。

ハック版オートログインを採用しようか迷いましたがちょっと調べてみたところ、ある程度原因らしきものが分かりました。
既知の現象でしたら申し訳ない。

sysutil_autologin.inc.php の77行目

$xoopsUser =& $member_handler->getUser($_SESSION['xoopsUserId']);

この $xoopsUser がシステム予約のものと同じせいで不都合が出ているようです。
この後処理が進んで common.php 175行目

$xoopsUser = '';

ここで クリアされますが、$xoopsUser が参照なので、実体が破壊されます。
この後いくらgetUserしても破壊されたものしか取れません。
( getUser内の if (!isset($this->_members[$id])) が''に引っかかりません )

したがって、システム予約の変数名と違うものにすれば大丈夫っぽいです。
sysutil_autologin.inc.php の77行目からを以下のようにすれば現象を回避できました。

$alxoopsUser =& $member_handler->getUser($_SESSION['xoopsUserId']);
if (is_object($alxoopsUser)) {
$expire = time() +SYSUTIL_AUTOLOGIN_LIFETIME ; // 1 week default
setcookie('autologin_uname', $alxoopsUser->getVar('uname'), $expire, $xoops_cookie_path, '', 0);
$Ynj = date( 'Y-n-j' ) ;
setcookie('autologin_pass', $Ynj . ':' . md5( $alxoopsUser->getVar('pass') . $Ynj ) , $expire, $xoops_cookie_path,'', 0);
setcookie('autologin_rememberme', '', time() - 3600, $xoops_cookie_path, '', 0);
}

いかがでしょう?


Re: sysutilでログイン後のページ 投稿者: Masanori 投稿日:2008/08/05(Tue) 03:26 No.302  

私も、2.0.16aで同じような症状が発生しています・・・
きさらさんの、ハック?を適用して、今のところ解決できました。
どこが悪いか、わかるなんてすごいですね・・・。(私には、全然わからないです)

Nobunobu様によって、公式な対応策が出ることを待っています。


NO: PASS:

このプログラムは KENT 氏の yybbs を xoops(PHP) に移植したものです
- KENT -