class IndexController extends Zend_Controller_Action
{
public function loginAction(){
if($this->auth->getIdentity()){
$this->_redirect("/");
}else{
if($this->_request->isPost()){
$filter = new Zend_Filter_StripTags();
$userName = $filter->filter($this->_request->getPost('username'));
$password = $this->_request->getPost('password');
$forword = $this->_request->getPost('forword');
if (empty($userName) || empty($password)) {
$this->view->message = "请填写用户名和密码!";
return;
}
$myAuthAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter(),'user','username','password','MD5(?)');
$myAuthAdapter->setIdentity($userName)->setCredential($password);
$result = $this->auth->authenticate($myAuthAdapter);
if($result->isValid()){// login success
$theUser = $myAuthAdapter->getResultRowObject();
$userinfoForDZ = array('time'=>$theUser->time,'username'=>$theUser->username,'password'=>$theUser->password,'email'=>$theUser->email);
$this->auth->getStorage()->write($theUser);
$dedePassport = new Fidy_Passport_Dede($this->config->passport->dede);
$this->view->dedeResult = $dedePassport->SynchDedeCms($theUser->username, 'login');
$discuzPassport = new Fidy_Passport_Discuz($this->config->passport->discuz, $userinfoForDZ, $forword);
$this->_redirect($discuzPassport->login());
}else{//login faild
$this->view->message = "用户名或者密码错误!";
}
}else{
$this->view->forward = "http://www.example.local/";
}
}
}
<?php
require_once(dirname(__FILE__)."/../../include/config_base.php");
header("Content-Type: text/html; charset=gb2312");
$ppName = "";
if($cfg_pp_isopen == 0){
echo "系统没开启通行证功能,禁止远程调用!";
exit();
}
$cfg_ndsql = 0;
if(empty($rmdata)){
echo "没接收到任何远程数据!";
exit();
}
$keys = Array('userid','signstr','action');
foreach($keys as $v) $v = '';
//解码GET字符串
$rmdata = base64_decode($rmdata);
$datas = explode('&',$rmdata);
foreach($datas as $ky){
$nkys = explode('=',$ky);
if(in_array($nkys[0],$keys) && isset($nkys[1])) ${$nkys[0]} = urldecode($nkys[1]);
}
$ntime = time();
if($action!='exit'){
//验证证书
if($userid==''||!TestStringSafe($userid)){
echo "用户ID为空或存在非法字符串!".$oldrmdata;
exit();
}
if(strlen($userid)>24){
echo "用户ID长度不能超过24位!";
exit();
}
$testSign = substr(md5($userid.$cfg_cookie_encode),0,24);
if($testSign!=$signstr){
echo "证书验证失败!";
exit();
}
}
if($action=='reg'){
Z_OpenSql();
$userpwd = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(1000,9999).chr(mt_rand(ord('A'),ord('Z')));
$userpwd = GetEncodePwd($userpwd);
$loginip = Z_GetIP();
$ppuserid = $userid.$ppName;
$uname = $ppuserid;
$inQuery1 = "
INSERT INTO `#@__member` (`userid` , `pwd` , `type` , `uname` , `membertype` , `uptime` , `exptime` ,
`money` , `email` , `jointime` , `joinip` , `logintime` , `loginip` ,
`c1` , `c2` , `c3` , `matt` , `guestbook` , `spaceshow` , `pageshow` , `spacestyle` ,
`spacename` , `spaceimage` , `news` , `mybb` , `listnum` , `scores` )
VALUES ('$ppuserid', '$userpwd', '0', '$uname', '10', '0', '0',
'0', '', '$ntime', '$loginip', '$ntime', '$loginip',
'0', '0', '0', '0', '0', '0', '0', '',
'', '', '', '', '20', '1000');
";
$cfg_ndsql->ExecuteNoneQuery($inQuery1);
$id = $cfg_ndsql->GetLastID();
if($id>0){
$inQuery2 = "
INSERT INTO `#@__member_perinfo` (`id`, `uname` , `sex` , `birthday` , `weight` ,`height` , `job` , `province` , `city` , `myinfo` ,
`tel` , `oicq` , `homepage` , `showaddr` ,`address` , `fullinfo`)
VALUES ('$id','$uname', '', '0000-00-00', '0','0', '0', '0', '0', '0' ,
'0' , '0' , '0' ,'0','0','');
";
$cfg_ndsql->ExecuteNoneQuery($inQuery2);
}
$row = $cfg_ndsql->GetOne("Select ID From #@__member where userid like '{$userid}$ppName' ");
$ID = $row['ID'];
Z_CloseSql();
echo 'OK!'.$ID;
exit();
}
/*--------------------------------
会员登录
function __UserLogin()
---------------------------------*/
else if($action=='login'){
Z_OpenSql();
$row = $cfg_ndsql->GetOne("Select ID,pwd From #@__member where userid like '{$userid}$ppName' ");
$loginip = Z_GetIP();
if(!is_array($row)){
$userpwd = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(1000,9999).chr(mt_rand(ord('A'),ord('Z')));
$userpwd = GetEncodePwd($userpwd);
$ppuserid = $userid.$ppName;
$uname = $ppuserid;
$inQuery1 = "
INSERT INTO `#@__member` (`userid` , `pwd` , `type` , `uname` , `membertype` , `uptime` , `exptime` ,
`money` , `email` , `jointime` , `joinip` , `logintime` , `loginip` ,
`c1` , `c2` , `c3` , `matt` , `guestbook` , `spaceshow` , `pageshow` , `spacestyle` ,
`spacename` , `spaceimage` , `news` , `mybb` , `listnum` , `scores` )
VALUES ('$ppuserid', '$userpwd', '0', '$uname', '10', '0', '0',
'0', '', '$ntime', '$loginip', '$ntime', '$loginip',
'0', '0', '0', '0', '0', '0', '0', '',
'', '', '', '', '20', '1000');
";
$cfg_ndsql->ExecuteNoneQuery($inQuery1);
$id = $cfg_ndsql->GetLastID();
if($id>0){
$inQuery2 = "
INSERT INTO `#@__member_perinfo` (`id`, `uname` , `sex` , `birthday` , `weight` ,`height` , `job` , `province` , `city` , `myinfo` ,
`tel` , `oicq` , `homepage` , `showaddr` ,`address` , `fullinfo`)
VALUES ('$id','$uname', '', '0000-00-00', '0','0', '0', '0', '0', '0' ,
'0' , '0' , '0' ,'0','0','');
";
$cfg_ndsql->ExecuteNoneQuery($inQuery2);
}
$row = $cfg_ndsql->GetOne("Select ID,pwd From #@__member where userid like '$userid' ");
}
$ID = $row['ID'];
$cfg_ndsql->ExecuteNoneQuery("update #@__member set logintime='$ntime',loginip='$loginip' where ID='$ID' ");
Z_CloseSql();
echo 'OK!'.$ID;
exit();
}
else if($action=='exit'){
echo 'OK!0';
exit();
}
else{
echo "无法识别你的动作!";
exit();
}
//其它功能如函数
function Z_OpenSql(){
global $cfg_ndsql;
if(!$cfg_ndsql) $cfg_ndsql = new DedeSql(false);
}
function Z_CloseSql(){
global $cfg_ndsql;
if($cfg_ndsql) $cfg_ndsql->Close();
}
function Z_GetIP(){
if(!empty($_SERVER["HTTP_CLIENT_IP"])) $cip = $_SERVER["HTTP_CLIENT_IP"];
else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if(!empty($_SERVER["REMOTE_ADDR"])) $cip = $_SERVER["REMOTE_ADDR"];
else $cip = "无法获取!";
return $cip;
}
?>