判斷使用者是否登入函式
檔案目錄
e\member\class\user.php
函式
function islogin($uid=0,$uname='',$urnd=''){ global $empire,$dbtbpre,$public_r,$ecmsreurl,$ecms_config; if($uid) {$userid=(int)$uid;} else {$userid=(int)getcvar('mluserid');} if($uname) {$username=$uname;} else {$username=getcvar('mlusername');} $username=RepPostVar($username); if($urnd) {$rnd=$urnd;} else {$rnd=getcvar('mlrnd');} if($ecms_config['member']['loginurl']) {$gotourl=$ecms_config['member']['loginurl'];} else {$gotourl=$public_r['newsurl']."e/member/login/";} $petype=1; $rnd=RepPostVar($rnd); if(!$userid||!$username||!$rnd) { if(!getcvar('returnurl')) { esetcookie("returnurl",EcmsGetReturnUrl(),0); } if($ecmsreurl==1) { $gotourl="history.go(-1)"; $petype=9; } elseif($ecmsreurl==2) { $phpmyself=urlencode(eReturnSelfPage(1)); $gotourl=$public_r['newsurl']."e/member/login/login.php?prt=1&from=".$phpmyself; $petype=9; } printerror("NotLogin",$gotourl,$petype); } //cookie if(getcvar('mluserid')) { $qcklgr=qCheckLoginAuthstr(); if(!$qcklgr['islogin']) { EmptyEcmsCookie(); if(!getcvar('returnurl')) { esetcookie("returnurl",EcmsGetReturnUrl(),0); } if($ecmsreurl==1) { $gotourl="history.go(-1)"; $petype=9; } elseif($ecmsreurl==2) { $phpmyself=urlencode(eReturnSelfPage(1)); $gotourl=$public_r['newsurl']."e/member/login/login.php?prt=1&from=".$phpmyself; $petype=9; } printerror("NotSingleLogin",$gotourl,$petype); } } $cr=$empire->fetch1("select ".eReturnSelectMemberF('userid,username,email,groupid,userfen,money,userdate,zgroupid,havemsg,checked,registertime,ingid,agid,isern')." from ".eReturnMemberTable()." where ".egetmf('userid')."='$userid' and ".egetmf('username')."='$username' and ".egetmf('rnd')."='$rnd' limit 1"); if(!$cr['userid']) { EmptyEcmsCookie(); if(!getcvar('returnurl')) { esetcookie("returnurl",EcmsGetReturnUrl(),0); } if($ecmsreurl==1) { $gotourl="history.go(-1)"; $petype=9; } elseif($ecmsreurl==2) { $phpmyself=urlencode(eReturnSelfPage(1)); $gotourl=$public_r['newsurl']."e/member/login/login.php?prt=1&from=".$phpmyself; $petype=9; } printerror("NotSingleLogin",$gotourl,$petype); } if($cr['checked']==0) { EmptyEcmsCookie(); if($ecmsreurl==1) { $gotourl="history.go(-1)"; $petype=9; } elseif($ecmsreurl==2) { $phpmyself=urlencode(eReturnSelfPage(1)); $gotourl=$public_r['newsurl']."e/member/login/login.php?prt=1&from=".$phpmyself; $petype=9; } printerror("NotCheckedUser",'',$petype); } //預設會員組 if(empty($cr['groupid'])) { $user_groupid=eReturnMemberDefGroupid(); $usql=$empire->query("update ".eReturnMemberTable()." set ".egetmf('groupid')."='$user_groupid' where ".egetmf('userid')."='".$cr[userid]."'"); $cr['groupid']=$user_groupid; } //是否過期 if($cr['userdate']) { if($cr['userdate']-time()<=0) { OutTimeZGroup($cr['userid'],$cr['zgroupid']); $cr['userdate']=0; if($cr['zgroupid']) { $cr['groupid']=$cr['zgroupid']; $cr['zgroupid']=0; } } } $re[userid]=$cr['userid']; $re[rnd]=$rnd; $re[username]=$cr['username']; $re[email]=$cr['email']; $re[userfen]=$cr['userfen']; $re[money]=$cr['money']; $re[groupid]=$cr['groupid']; $re[userdate]=$cr['userdate']; $re[zgroupid]=$cr['zgroupid']; $re[havemsg]=$cr['havemsg']; $re[registertime]=$cr['registertime']; $re[ingid]=$cr['ingid']; $re[agid]=$cr['agid']; $re[isern]=$cr['isern']; $re['checked']=$cr['checked']; return $re; }
登入函式
路徑
e\member\class\member_loginfun.php
函式
//登入 function qlogin($add){ global $empire,$dbtbpre,$public_r,$ecms_config; if($ecms_config['member']['loginurl']) { Header("Location:".$ecms_config['member']['loginurl']); exit(); } $dopr=1; if($_POST['prtype']) { $dopr=9; } $username=trim($add['username']); $password=trim($add['password']); if(!$username||!$password) { printerror("EmptyLogin","history.go(-1)",$dopr); } $tobind=(int)$add['tobind']; //驗證碼 $keyvname='checkloginkey'; if($public_r['loginkey_ok']) { ecmsCheckShowKey($keyvname,$add['key'],$dopr); } $username=RepPostVar($username); $password=RepPostVar($password); $num=0; $r=$empire->fetch1("select ".eReturnSelectMemberF('*')." from ".eReturnMemberTable()." where ".egetmf('username')."='$username' limit 1"); if(!$r['userid']) { printerror("FailPassword","history.go(-1)",$dopr); } if(!eDoCkMemberPw($password,$r['password'],$r['salt'])) { printerror("FailPassword","history.go(-1)",$dopr); } if($r['checked']==0) { if($public_r['regacttype']==1) { printerror('NotCheckedUser','../member/register/regsend.php',1); } else { printerror('NotCheckedUser','',1); } } //繫結帳號 if($tobind) { MemberConnect_BindUser($r['userid']); } $rnd=make_password(20);//取得隨機密碼 //預設會員組 if(empty($r['groupid'])) { $r['groupid']=eReturnMemberDefGroupid(); } $r['groupid']=(int)$r['groupid']; $lasttime=time(); //IP $lastip=egetip(); $lastipport=egetipport(); $usql=$empire->query("update ".eReturnMemberTable()." set ".egetmf('rnd')."='$rnd',".egetmf('groupid')."='$r[groupid]' where ".egetmf('userid')."='$r[userid]'"); $empire->query("update {$dbtbpre}enewsmemberadd set lasttime='$lasttime',lastip='$lastip',loginnum=loginnum+1,lastipport='$lastipport' where userid='$r[userid]'"); //設定cookie $lifetime=(int)$add['lifetime']; $logincookie=0; if($lifetime) { $logincookie=time()+$lifetime; } $set1=esetcookie("mlusername",$username,$logincookie); $set2=esetcookie("mluserid",$r['userid'],$logincookie); $set3=esetcookie("mlgroupid",$r['groupid'],$logincookie); $set4=esetcookie("mlrnd",$rnd,$logincookie); //驗證符 qGetLoginAuthstr($r['userid'],$username,$rnd,$r['groupid'],$logincookie); //登入附加cookie AddLoginCookie($r); $location="../member/cp/"; $returnurl=getcvar('returnurl'); if($returnurl) { $location=$returnurl; } if(strstr($_SERVER['HTTP_REFERER'],"e/member/iframe")) { $location="../member/iframe/"; } if(strstr($location,"enews=exit")||strstr($location,"e/member/register")||strstr($_SERVER['HTTP_REFERER'],"e/member/register")) { $location="../member/cp/"; $_POST['ecmsfrom']=''; } ecmsEmptyShowKey($keyvname);//清空驗證碼 $set6=esetcookie("returnurl",""); if($set1&&$set2) { //易通行系統 DoEpassport('login',$r['userid'],$username,$password,$r['salt'],$r['email'],$r['groupid'],$r['registertime']); $location=DoingReturnUrl($location,$_POST['ecmsfrom']); printerror("LoginSuccess",$location,$dopr); } else { printerror("NotCookie","history.go(-1)",$dopr); } }
註冊函式
路徑
\e\member\class\member_registerfun.php
函式
//使用者註冊 function register($add){ global $empire,$dbtbpre,$public_r,$ecms_config; //關閉註冊 if($public_r['register_ok']) { printerror('CloseRegister','',1); } //驗證時間段允許操作 eCheckTimeCloseDo('reg'); //驗證IP eCheckAccessDoIp('register'); if(!empty($ecms_config['member']['registerurl'])) { Header("Location:".$ecms_config['member']['registerurl']); exit(); } //已經登陸不能註冊 if(getcvar('mluserid')) { printerror('LoginToRegister','',1); } CheckCanPostUrl();//驗證來源 $username=trim($add['username']); $password=trim($add['password']); $username=RepPostVar($username); $password=RepPostVar($password); $email=addslashes(RepPostStr($add['email'])); $email=RepPostVar($email); if(!$username||!$password||!$email) { printerror("EmptyMember","history.go(-1)",1); } $tobind=(int)$add['tobind']; //驗證碼 $keyvname='checkregkey'; if($public_r['regkey_ok']) { ecmsCheckShowKey($keyvname,$add['key'],1); } $user_groupid=eReturnMemberDefGroupid(); $groupid=(int)$add['groupid']; $groupid=empty($groupid)?$user_groupid:$groupid; CheckMemberGroupCanReg($groupid); //IP $regip=egetip(); $regipport=egetipport(); //使用者字數 $pr=$empire->fetch1("select min_userlen,max_userlen,min_passlen,max_passlen,regretime,regclosewords,regemailonly from {$dbtbpre}enewspublic limit 1"); $userlen=strlen($username); if($userlen<$pr[min_userlen]||$userlen>$pr[max_userlen]) { printerror('FaiUserlen','',1); } //密碼字數 $passlen=strlen($password); if($passlen<$pr[min_passlen]||$passlen>$pr[max_passlen]) { printerror('FailPasslen','',1); } if($add['repassword']!==$password) { printerror('NotRepassword','',1); } if(!chemail($email)) { printerror('EmailFail','',1); } if(strstr($username,'|')||strstr($username,'*')) { printerror('NotSpeWord','',1); } //同一IP註冊 eCheckIpRegTime($regip,$pr['regretime']); //保留使用者 toCheckCloseWord($username,$pr['regclosewords'],'RegHaveCloseword'); $username=RepPostStr($username); //重複使用者 $num=$empire->gettotal("select count(*) as total from ".eReturnMemberTable()." where ".egetmf('username')."='$username' limit 1"); if($num) { printerror('ReUsername','',1); } //重複郵箱 if($pr['regemailonly']) { $num=$empire->gettotal("select count(*) as total from ".eReturnMemberTable()." where ".egetmf('email')."='$email' limit 1"); if($num) { printerror('ReEmailFail','',1); } } //註冊時間 $lasttime=time(); $registertime=eReturnAddMemberRegtime(); $rnd=make_password(20);//產生隨機密碼 $userkey=eReturnMemberUserKey(); //密碼 $truepassword=$password; $salt=eReturnMemberSalt(); $password=eDoMemberPw($password,$salt); //稽核 $checked=ReturnGroupChecked($groupid); if($checked&&$public_r['regacttype']) { $checked=0; } $checked=(int)$checked; //驗證附加表必填項 $mr['add_filepass']=ReturnTranFilepass(); $fid=GetMemberFormId($groupid); $member_r=ReturnDoMemberF($fid,$add,$mr,0,$username); $sql=$empire->query("insert into ".eReturnMemberTable()."(".eReturnInsertMemberF('username,password,rnd,email,registertime,groupid,userfen,userdate,money,zgroupid,havemsg,checked,salt,userkey').") values('$username','$password','$rnd','$email','$registertime','$groupid','$public_r[reggetfen]','0','0','0','0','$checked','$salt','$userkey');"); //取得userid $userid=$empire->lastid(); //附加表 $addr=$empire->fetch1("select * from {$dbtbpre}enewsmemberadd where userid='$userid'"); if(!$addr[userid]) { $spacestyleid=ReturnGroupSpaceStyleid($groupid); $sql1=$empire->query("insert into {$dbtbpre}enewsmemberadd(userid,spacestyleid,regip,lasttime,lastip,loginnum,regipport,lastipport".$member_r[0].") values('$userid','$spacestyleid','$regip','$lasttime','$regip','1','$regipport','$regipport'".$member_r[1].");"); } //更新附件 UpdateTheFileOther(6,$userid,$mr['add_filepass'],'member'); ecmsEmptyShowKey($keyvname);//清空驗證碼 //繫結帳號 if($tobind) { MemberConnect_BindUser($userid); } if($sql) { //郵箱啟用 if($checked==0&&$public_r['regacttype']==1) { include('class/member_actfun.php'); SendActUserEmail($userid,$username,$email); } //稽核 if($checked==0) { $location=DoingReturnUrl("../../",$_POST['ecmsfrom']); printerror("RegisterSuccessCheck",$location,1); } $logincookie=0; if($ecms_config['member']['regcookietime']) { $logincookie=time()+$ecms_config['member']['regcookietime']; } $r=$empire->fetch1("select ".eReturnSelectMemberF('*')." from ".eReturnMemberTable()." where ".egetmf('userid')."='$userid' limit 1"); $set1=esetcookie("mlusername",$username,$logincookie); $set2=esetcookie("mluserid",$userid,$logincookie); $set3=esetcookie("mlgroupid",$groupid,$logincookie); $set4=esetcookie("mlrnd",$rnd,$logincookie); //驗證符 qGetLoginAuthstr($userid,$username,$rnd,$groupid,$logincookie); //登入附加cookie AddLoginCookie($r); $location="../member/cp/"; $returnurl=getcvar('returnurl'); if($returnurl&&!strstr($returnurl,"e/member/iframe")&&!strstr($returnurl,"e/member/register")&&!strstr($returnurl,"enews=exit")) { $location=$returnurl; } $set5=esetcookie("returnurl",""); //易通行系統 DoEpassport('reg',$userid,$username,$truepassword,$salt,$email,$groupid,$registertime); $location=DoingReturnUrl($location,$_POST['ecmsfrom']); printerror("RegisterSuccess",$location,1); } else {printerror("DbError","history.go(-1)",1);} }