我在用户统一注册方面做了些尝试,现在有些成功,但是有部分也做不成功,列出来大家讨论一下,希望能大家能讨论出个解决办法来。
我的目前架构是这样的,有一台oracle数据库有个表userbaseinfo,我在这个表中记录所有其他系统的用户注册登陆信息,比如用户名,密码等,其他的子系统注册的时候都向这个表写入数据,写入的时候好查找是否重复。结合plog,我在
class/dao/users.class.php中增加了个函数如下:
然后增加了个验证函数如下:
function getUserBaseInfo( $username)
{
$a=new db_sql;
$a->query("select count(LOGINNAME) as users_num from USERBASEINFO where LOGINNAME='$username'");
while($a->next_record()){
$users_num=$a->Record["users_num"];
}
if($users_num>0)
return true;
else
return false;
}
在function userExists( $userName ) 函数后面加入了
function UserBaseInfoUserExists( $userName )
{
return( $this->getUserBaseInfo( $userName ));
}
并且在 function addUser( &$user )中增加了以下语句:
//对oracle数据库的用户
$a=new db_sql;
$sqlstr=("INSERT INTO USERBASEINFO(USERID,LOGINNAME, PASSWORD, EMAIL, PASSWORDENCRYPT)
values(Sequence_USERBASEINFO.nextval,'".Db::qstr($user->getUserName())."', '".$user->getPassword()."','".
Db::qstr($user->getEmail())."','".md5($user->getPassword())."')");
$a->query($sqlstr);
$userId = $this->_db->Insert_ID();
$user->setId( $userId );
return $userId;
}
以上部分的实现解决在oracle中插入数据是没问题的。
关于登陆部分,我想这样构造,在
然后在class\action\admin\adminloginaction.class.php中大约67行左右 把if( !$users->authenticateUser( $this->_userName, $this->_userPassword )
改成了if( !$users->authenticateUser( $this->_userName, $this->_userPassword ) && !$users->authenticateUserbaseinfoUser( $this->_userName, $this->_userPassword )){
然后75行左右加入了
if( !$users->authenticateUser( $this->_userName, $this->_userPassword ) && $users->authenticateUserbaseinfoUser( $this->_userName, $this->_userPassword )){
//执行插入操作
$users->addForUserbaseinfoUser( $this->_userName, $this->_userPassword );
authenticateUserbaseinfoUser这个函数在class/dao/users.class.php中定义
function authenticateUserbaseinfoUser( $user, $pass )
{
$a=new db_sql;
$query="select count(loginname) as users_num from userbaseinfo where loginname='".Db::qstr($user)."' and passwordencrypt='".md5($pass)."'";
$a->query($query);
while($a->next_record()){
$users_num=$a->record["users_num"];
}
if( $result == false )
return false;
if($users_num==1)
return true;
else
return false;
}
addForUserbaseinfoUser函数在class/dao/users.class.php中定义如下:
function addForUserbaseinfoUser( $user, $pass )
{
$a=new db_sql;
$query="select email as email,passwordencrypt as passwordencrypt from userbaseinfo where loginname='".Db::qstr($user)."' and passwordencrypt='".md5($pass)."'";
$a->query($query);
while($a->next_record()){
$users_num=$a->record["users_num"];
}
$sql1="insert into ".$this->getPrefix()."users(user,password,email,properties,status,resource_picture_id)
values($user,$passwordencrypt,$email,'a:0:{}',1,0)";
$result = $this->Execute( $sql1 );
$sql2="select blogs.owner_id as owner_id from ".$this->getPrefix()."blogs blogs,".$this->getPrefix()."users users where blogs.owner_id=users.id and users.user=$user";
$result = $this->Execute( $sql2 );
$sql3="insert into ".$this->getPrefix()."blogs(blog,owner_id,settings,status,show_in_summary) values($user,$owner_id,'".'O:12:"blogsettings":3:{s:6:"_objId";N;s:3:"log";O:6:"logger":2:{s:9:"appenders";a:1:{i:0;O:12:"fileappender":4:{s:4:"file";s:12:"tmp/plog.log";s:2:"fp";i:0;s:6:"layout";O:13:"patternlayout":2:{s:7:"message";N;s:7:"pattern";s:28:"%d %N - [%f:%l (%c:%F)] %m%n";}s:11:"_properties";a:4:{s:6:"layout";s:28:"%d %N - [%f:%l (%c:%F)] %m%n";s:8:"appender";s:4:"file";s:4:"file";s:12:"tmp/plog.log";s:4:"prio";s:5:"debug";}}}s:4:"prio";s:5:"debug";}s:6:"_props";a:11:{s:6:"locale";s:5:"zh_CN";s:14:"show_posts_max";s:2:"50";s:8:"template";s:8:"standard";s:17:"show_more_enabled";s:1:"1";s:16:"recent_posts_max";s:2:"50";s:17:"xmlrpc_ping_hosts";a:1:{i:0;s:27:"http://rpc.weblogs.com/RPC2";}s:16:"htmlarea_enabled";s:1:"1";s:16:"comments_enabled";s:1:"1";s:16:"categories_order";i:0;s:14:"comments_order";s:1:"1";s:11:"time_offset";s:1:"0";}}'."',1,1)";
$result = $this->Execute( $sql3 );
$sql4="select articles_categories.blog_id as blog_id from ".$this->getPrefix()."articles_categories articles_categories,".$this->getPrefix()."blogs blogs,".$this->getPrefix()."users users where articles_categories.blog_id=blogs.id and blogs.owner_id=users.id and users.user=$user";
$result = $this->Execute( $sql4 );
if( !$result )
return false;
$sql5="insert ".$this->getPrefix()."articles_categories(name,blog_id,in_main_page,parent_id,properties) values('工作日志',$blog_id,1,0,'a:0:{}');
$result = $this->Execute( $sql4 );
return true;
}
出了如下错误:
Parse error: parse error in /www/blog/class/dao/users.class.php on line 157
Fatal error: Cannot instantiate non-existent class: users in /www/blog/class/dao/articles.class.php on line 49
不知道如何解决了,请各位讨论一下,