本人最近一直在搞DEDE和php论坛的整合,从网上找了很多的示例,但是都不是很理想,通行证的方法有的时候会出现在FireFox下没有问题而IE有问题的情况(不知道别人有没有出现这种情况)
今天下午终于搞定,用了一个网上的所谓的不用通行证的方法,实际上还是要开通通行证的。
本人使用的是DedeCms V5和Discuz V6.0
涉及的文件如下:
今天下午终于搞定,用了一个网上的所谓的不用通行证的方法,实际上还是要开通通行证的。
本人使用的是DedeCms V5和Discuz V6.0
涉及的文件如下:
dz6_passpor.php
index_do.php
inc_memberlogin.php
login.htm(可选,非必须覆盖文件)
安装方法:
index_do.php 请覆盖站点文件夹 /member/
dz6_passpor.php 请放入站点文件夹 /include/
inc_memberlogin.php 请覆盖站点文件夹 /include/
login.htm 请覆盖 /member/templets/login.htm
文件设置:修改dz6_passpor.php 文件内 第4 第5行
$bbspath="http://www.abc.cn/bbs"; //修改引号内为 论坛存放网站路径
$mysite="http://www.abc.cn/"; //修改引号内为 dede网站存放路径
dedecms设置:
进入dedecms后台关闭 通行证(默认是关闭的),进入“系统设置”-》“核心设置” 记下 “cookie加密码:“ 如:MjABy1618X
注意这个将填写到discuz后台的通行证私有密匙。
discuz设置:
进入 dz论坛后台,“扩展设置”-》通行证设置,启用通行证:是,并设置。
设置方法:
应用程序 URL 地址: http://www.abc.cn/ (这个改成你的 dedecms网址,应该和上面”dede网站存放路径“一致,注意的是“http://”和URL中最后的“/”)一定要记得加上
通行证私有密匙:填写dede自动生成的cookie加密码,如MjABy1618X
应用程序注册地址: member/index_do.php?fmdo=user&dopost=regnew
应用程序登录地址: member/login.php
应用程序退出地址: member/index_do.php?fmdo=login&dopost=exit
【utf-8】注册验证用户名解决方法
打开 member/templets/reg_new.htm
在13行处找到:
myajax.SendGet2("index_do.php?userid=" + document.form2.userid.value+"&fmdo=user&dopost=checkuser");
替换为:
myajax.SendGet2("index_do.php?userid=" + escape(document.form2.userid.value) +"&fmdo=user&dopost=checkuser");
如果想让登陆后返回登陆前的原页面,需要做如下修改:【已有现成】
修改的文件:/member/templets/login.htm
在41行找到
<input type="hidden" name="gourl" value="<?php if(!empty($gourl)) echo $gourl;?>">
替换为:
<input type="hidden" name="gourl" value="<?php if(!empty($forward)) echo $forward;?>">
不能贴附件,不过要改基本上都是这些了
dz6_passpor.php:
我的都是用的UTF-8的,使用GBK的要注意转换的
index_do.php
inc_memberlogin.php
login.htm(可选,非必须覆盖文件)
安装方法:
index_do.php 请覆盖站点文件夹 /member/
dz6_passpor.php 请放入站点文件夹 /include/
inc_memberlogin.php 请覆盖站点文件夹 /include/
login.htm 请覆盖 /member/templets/login.htm
文件设置:修改dz6_passpor.php 文件内 第4 第5行
$bbspath="http://www.abc.cn/bbs"; //修改引号内为 论坛存放网站路径
$mysite="http://www.abc.cn/"; //修改引号内为 dede网站存放路径
dedecms设置:
进入dedecms后台关闭 通行证(默认是关闭的),进入“系统设置”-》“核心设置” 记下 “cookie加密码:“ 如:MjABy1618X
注意这个将填写到discuz后台的通行证私有密匙。
discuz设置:
进入 dz论坛后台,“扩展设置”-》通行证设置,启用通行证:是,并设置。
设置方法:
应用程序 URL 地址: http://www.abc.cn/ (这个改成你的 dedecms网址,应该和上面”dede网站存放路径“一致,注意的是“http://”和URL中最后的“/”)一定要记得加上
通行证私有密匙:填写dede自动生成的cookie加密码,如MjABy1618X
应用程序注册地址: member/index_do.php?fmdo=user&dopost=regnew
应用程序登录地址: member/login.php
应用程序退出地址: member/index_do.php?fmdo=login&dopost=exit
【utf-8】注册验证用户名解决方法
打开 member/templets/reg_new.htm
在13行处找到:
myajax.SendGet2("index_do.php?userid=" + document.form2.userid.value+"&fmdo=user&dopost=checkuser");
替换为:
myajax.SendGet2("index_do.php?userid=" + escape(document.form2.userid.value) +"&fmdo=user&dopost=checkuser");
如果想让登陆后返回登陆前的原页面,需要做如下修改:【已有现成】
修改的文件:/member/templets/login.htm
在41行找到
<input type="hidden" name="gourl" value="<?php if(!empty($gourl)) echo $gourl;?>">
替换为:
<input type="hidden" name="gourl" value="<?php if(!empty($forward)) echo $forward;?>">
不能贴附件,不过要改基本上都是这些了
dz6_passpor.php:
$val) { // $arrayenc 数组增加一个元素,其内容为 "$key=经过 urlencode() 后的 $val 值" $arrayenc[] = $key.'='.urlencode($val); } // 返回以 "&" 连接的 $arrayenc 的值(implode),例如 $arrayenc = array('aa', 'bb', 'cc', 'dd'), // 则 implode('&', $arrayenc) 后的结果为 ”aa&bb&cc&dd" return implode('&', $arrayenc); } ?>inc_memberlogin.php:
GetOne("select sum(filesize) as fs From #@__uploads where memberID='$uid'; "); return $row['fs']; } function CheckUserSpace($uid){ global $cfg_mb_max,$dsql; if(!is_object($dsql)) $dsql = new DedeSql(false); $hasuse = GetUserSpace($uid,$dsql); $maxSize = $cfg_mb_max * 1024 * 1024; if($hasuse >= $maxSize){ $dsql->Close(); ShowMsg('你的空间已满,不允许上传新文件!','-1'); exit(); } } //检测用户的附件类型 function CheckAddonType($aname){ global $cfg_mb_mediatype; if(empty($cfg_mb_mediatype)){ $cfg_mb_mediatype = "jpg|gif|png|bmp|swf|mpg|mp3|rm|rmvb|wmv|asf|wma|zip|rar|doc|xsl|ppt|wps"; } $anames = explode('.',$aname); $atype = $anames[count($anames)-1]; if(count($anames)==1) return false; else{ $atype = strtolower($atype); $cfg_mb_mediatypes = explode('|',trim($cfg_mb_mediatype)); if(in_array($atype,$cfg_mb_mediatypes)) return true; else return false; } } $GLOBALS['MemberAreas'] = Array(); //获取省份信息 function GetProvince($pid,$dsql){ global $dsql,$MemberAreas; if($pid<=0) return "未知"; else{ if(isset($MemberAreas[$pid])) return $MemberAreas[$pid]; $dsql->SetQuery("Select `id`,`name` From #@__area "); $dsql->Execute('eee'); while($row = $dsql->GetObject('eee')){ $MemberAreas[$row->id] = $row->name; } if(isset($MemberAreas[$pid])) return $MemberAreas[$pid]; else return "未知"; } } //获取用户的会话信息 function GetUserInfos($uid) { $tpath = ceil($uid/5000); $userfile = dirname(__FILE__)."/../data/cache/user/$tpath/{$uid}.php"; if(!file_exists($userfile)) return ''; else{ require_once($userfile); return $cfg_userinfos; } } //写入用户的会话信息 function WriteUserInfos($uid,$row) { $tpath = ceil($uid/5000); $ndir = dirname(__FILE__)."/../data/cache/user/$tpath/"; if(!is_dir($ndir)){ mkdir($ndir,$GLOBALS['cfg_dir_purview']); chmod($ndir,$GLOBALS['cfg_dir_purview']); } $userfile = $ndir.$uid.'.php'; $infos = "<"."?php/r/n"; $infos .= "/$cfg_userinfos['wtime'] = '".mytime()."';/r/n"; foreach($row as $k=>$v){ if(ereg('[^0-9]',$k)){ $v = str_replace("'","//'",$v); $v = ereg_replace("(</?|/?>)","",$v); if(in_array($k, array('userid','uname','pwd'))){ $infos .= "/$cfg_userinfos['{$k}'] = ".'base64_decode("'.base64_encode($v)."/");/r/n"; }else{ $infos .= "/$cfg_userinfos['{$k}'] = '{$v}';/r/n"; } } } $infos .= "/r/n?".">"; @$fp = fopen($userfile,'w'); @flock($fp); @fwrite($fp,$infos); @fclose($fp); return $infos; } //删除用户的会话信息 function DelUserInfos($uid) { $tpath = ceil($uid/5000); $userfile = dirname(__FILE__)."/../data/cache/user/$tpath/".$uid.'.php'; if(file_exists($userfile)) @unlink($userfile); } //------------------------ //网站会员登录类 //------------------------ class MemberLogin { var $M_ID; var $M_LoginID; var $M_Type; var $M_utype; var $M_Money; var $M_UserName; var $M_MySafeID; var $M_LoginTime; var $M_KeepTime; var $M_UserPwd; var $M_UpTime; var $M_ExpTime; var $M_HasDay; var $M_Scores; var $M_Honor; var $M_Newpm; var $M_Email;haha123_0添加整合discuz6 //php5构造函数 function __construct($kptime = 0) { if(empty($kptime)) $this->M_KeepTime = 3600 * 24 * 15; else $this->M_KeepTime = $kptime; $this->M_ID = $this->GetNum(GetCookie("DedeUserID")); $this->M_LoginTime = GetCookie("DedeLoginTime"); if(empty($this->M_LoginTime)) $this->M_LoginTime = time(); if(empty($this->M_ID)) { $this->ResetUser(); }else { $this->M_ID = ereg_replace("[^0-9]","",$this->M_ID); //读取用户缓存信息 $row = GetUserInfos($this->M_ID); //如果不存在就更新缓存 if(!is_array($row) && $this->M_ID>0) $row = $this->FushCache(); //存在用户信息 if(is_array($row)) { $this->M_LoginID = $row['userid']; $this->M_UserPwd = $row['pwd']; $this->M_Type = $row['membertype']; $this->M_utype = $row['type']; $this->M_Money = $row['money']; $this->M_UserName = $row['uname']; $this->M_UpTime = $row['uptime']; $this->M_ExpTime = $row['exptime']; $this->M_Scores = $row['scores']; $this->M_Honor = $row['honor']; $this->M_Newpm = $row['newpm']; $this->M_HasDay = 0; $this->M_Email = $row['email'];//haha123_0添加整合discuz6 if($this->M_UpTime>0) { $nowtime = time(); $mhasDay = $this->M_ExpTime - ceil(($nowtime - $this->M_UpTime)/3600/24) + 1; $this->M_HasDay = $mhasDay; } }else { $this->ResetUser(); } } } function MemberLogin($kptime = 0){ $this->__construct($kptime); } //更新缓存 function FushCache($mid=0) { if(empty($mid)) $mid = $this->M_ID; $dsql = new DedeSql(false); $row = $dsql->GetOne("Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID='{$mid}' "); if(is_array($row)) { $scrow = $dsql->GetOne("Select titles From #@__scores where integral<={$row['scores']} order by integral desc"); $row['honor'] = $scrow['titles']; } if(is_array($row)) return WriteUserInfos($mid,$row); else return ''; } //退出cookie的会话 function ExitCookie(){ DelUserInfos($this->M_ID); $this->ResetUser(); } //验证用户是否已经登录 function IsLogin(){ if($this->M_ID > 0) return true; else return false; } //重置用户信息 function ResetUser(){ $this->M_ID = 0; $this->M_LoginID = ""; $this->M_Type = -1; $this->M_utype = 0; $this->M_Money = 0; $this->M_UserName = ""; $this->M_LoginTime = 0; $this->M_UpTime = 0; $this->M_ExpTime = 0; $this->M_HasDay = 0; $this->M_Scores = 0; $this->M_Newpm = 0; $this->M_Email = "";//haha123_0添加整合discuz6 DropCookie("DedeUserID"); DropCookie("DedeLoginTime"); } //获取整数值 function GetNum($fnum){ $fnum = ereg_replace("[^0-9/.]","",$fnum); return $fnum; } //用户登录 function CheckUser($loginuser,$loginpwd) { $loginuser = ereg_replace("[;%'///?/*/$]","",$loginuser); $dsql = new DedeSql(false); $row = $dsql->GetOne("Select ID,pwd From #@__member where userid='$loginuser' "); if(is_array($row)) //用户存在 { //密码错误 if($row['pwd'] != $loginpwd){ return -1; } else{ //成功登录 $dsql->ExecuteNoneQuery("update #@__member set logintime='".mytime()."',loginip='".GetIP()."' where ID='{$row['ID']}';"); $dsql->Close(); $this->PutLoginInfo($row['ID']); $this->FushCache(); return 1; } }else{ //用户不存在 return 0; } } //保存用户cookie function PutLoginInfo($uid){ $this->M_ID = $uid; $this->M_LoginTime = mytime(); PutCookie("DedeUserID",$uid,$this->M_KeepTime); PutCookie("DedeLoginTime",$this->M_LoginTime,$this->M_KeepTime); } //获得会员目前的状态 function GetSta($dsql) { $sta = ""; if($this->M_Type==0) $sta .= "你目前的身份是:未审核会员 "; else{ $row = $dsql->GetOne("Select membername From #@__arcrank where rank='".$this->M_Type."'"); $sta .= "你目前的身份是:".$row['membername']; if($this->M_Type>10){ $sta .= " 剩余天数: ".$this->M_HasDay." 天 "; } } $sta .= " 你目前拥有金币:".$this->M_Money." 个。"; return $sta; } } ?>index_do.php:
用户名含有非法字符! "; }else{ $dsql = new DedeSql(false); $dsql->SetQuery("Select ID From #@__member where userid='$userid'"); $dsql->Execute(); $rowcount = $dsql->GetTotalRow(); $dsql->Close(); if($rowcount>0){ $msg = "用户名 [$userid],已经被人使用,请使用其它用户名。"; } else{ $msg = "用户名 [$userid],可以正常使用。"; } } echo $msg; exit(); } /* 新用户注册 function AUserReg() */ else if($dopost=="regnew") { if($cfg_pp_isopen==1 && $cfg_pp_regurl!=''){ header("Location:{$cfg_pp_regurl}"); exit(); } require_once(dirname(__FILE__)."/reg_new.php"); exit(); } else if($dopost=="regok") { if($cfg_pp_isopen==1 && $cfg_pp_regurl!=''){ header("Location:{$cfg_pp_regurl}"); exit(); } $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali==""){ ShowMsg("验证码错误!","-1"); exit(); } $userid = trim($userid); $pwd = trim($userpwd); $pwdc = trim($userpwdok); if(!TestStringSafe($userid)||!TestStringSafe($pwd)) { ShowMsg("你的用户名或密码不合法!","-1"); exit(); } if(strlen($userid)<3||strlen($pwd)<3){ ShowMsg("你的用户名或密码小于三位,不允许注册!","-1"); exit(); } if(strlen($userid)>24||strlen($pwd)>24){ ShowMsg("你的用户名或密码长度不能超过24位!","-1"); exit(); } if($pwdc!=$pwd){ ShowMsg("你两次输入的密码不一致!","-1"); exit(); } $dsql = new DedeSql(false); //会员的默认金币 $dfrank = $dsql->GetOne("Select money From #@__arcrank where rank='10' "); if(is_array($dfrank)) $dfmoney = $dfrank['money']; else $dfmoney = 0; $dsql->SetQuery("Select ID From #@__member where userid='$userid'"); $dsql->Execute(); $rowcount = $dsql->GetTotalRow(); if($rowcount>0){ $dsql->Close(); ShowMsg("你指定的用户名已存在,请使用别的用户名!","-1"); exit(); } $uname = eregi_replace("['/"/$ /r/n/t;<>/*%/?]", '', $uname); $pwd = GetEncodePwd($pwd); $jointime = mytime(); $logintime = mytime(); $joinip = GetIP(); $loginip = GetIP(); //设置可选注册项目的默认值 $dfregs['birthday_y'] = '0000'; $dfregs['birthday_m'] = '00'; $dfregs['birthday_d'] = '00'; $dfregs['birthday'] = '0000-00-00'; $dfregs['weight'] = '0'; $dfregs['height'] = '0'; $dfregs['job'] = ''; $dfregs['province'] = '0'; $dfregs['city'] = '0'; $dfregs['myinfo'] = ''; $dfregs['tel'] = ''; $dfregs['type'] = 0; $dfregs['oicq'] = ''; $dfregs['homepage'] = ''; $dfregs['address'] = ''; $dfregs['spacename'] = ''; $dfregs['showaddr'] = '0'; foreach($dfregs as $k=>$v){ if(!isset($$k)) $$k = $v; } $membertype = 10; if($cfg_member_regsta == 'Y'){ $membertype = 0; } if($type == 1){ if(trim($comname) == ''){ ShowMsg("公司用户必须填写公司名称","-1"); exit(); } $comname = htmlEncode(trim($comname)); }else{ $type = 0; } if(empty($spacename) && !empty($comname)) $spacename = $comname; if(empty($spacename)) $spacename = $uname.'的个人空间'; $birthday = GetAlabNum($birthday_y)."-".GetAlabNum($birthday_m)."-".GetAlabNum($birthday_d); if($birthday=='0-0-0'){ $birthday = '0000-00-00'; } $height = GetAlabNum($height); $inQuery = " 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 ('$userid', '$pwd', '$type', '$uname', '$membertype', '0', '0', '0', '$email', '$jointime', '$joinip', '$jointime', '$joinip', '0', '0', '0', '0', '0', '0', '0', '', '$spacename', '', '', '', '20', '{$cfg_df_score}') "; if($dsql->ExecuteNoneQuery($inQuery)) { $id = $dsql->GetLastID(); if($type == 1) { $inQuery = "INSERT INTO #@__member_cominfo(id, comname) VALUES ('$id', '$comname');"; $dsql->ExecuteNoneQuery($inQuery); } else { $inQuery = " INSERT INTO `#@__member_perinfo` (`id`, `uname` , `sex` , `birthday` , `weight` ,`height` , `job` , `province` , `city` , `myinfo` , `tel` , `oicq` , `homepage` , `showaddr` ,`address` , `fullinfo`) VALUES ('$id','$uname', '$sex', '$birthday', '$weight','$height', '$job', '$province', '$city', '$myinfo' , '$tel' , '$oicq' , '$homepage' ,'$showaddr','$address','');"; $dsql->ExecuteNoneQuery($inQuery); } /* 添加 discuz6整合 通行证 注册 */ if ($sex=="男"){ $gender=1; }elseif($sex=="女"){ $gender=2; }else{ $gender=0; } $member = array( 'cookietime'=> 31536000, 'time'=> date("U"), 'username'=> $userid, 'password'=>$pwd, 'email'=> $email, 'credits'=>0, 'regip'=> get_client_ip(),/*$_SERVER["REMOTE_ADDR"],*/ 'regdate'=> date("U"), 'msn'=> $email, 'gender'=>$gender, 'nickname'=>$uname ); $action= 'login'; $auth = passport_encrypt(passport_encode($member), $passport_key); $dsql->Close(); $ml = new MemberLogin(); $rs = $ml->CheckUser($userid,$pwd); if($rs==1) { if($type == 1){ $forward=$mysite."member/mycominfo.php"; $verify = md5($action.$auth.$forward.$passport_key); $trun_str=$bbspath."/api/passport.php". "?action=$action". "&auth=".rawurlencode($auth). "&forward=".rawurlencode($forward). "&verify=$verify"; echo "<script> location='{$trun_str}'; </script>"; exit(); } $forward=$mysite."member/control.php"; $verify = md5($action.$auth.$forward.$passport_key); $trun_str=$bbspath."/api/passport.php". "?action=$action". "&auth=".rawurlencode($auth). "&forward=".rawurlencode($forward). "&verify=$verify"; echo "<script> location ='{$trun_str}'; </script>"; exit(); }else { $forward=$mysite."member/login.php"; $verify = md5($action.$auth.$forward.$passport_key); $trun_str=$bbspath."/api/passport.php". "?action=$action". "&auth=".rawurlencode($auth). "&forward=".rawurlencode($forward). "&verify=$verify"; echo "<script> location='{$trun_str}'; </script>"; exit(); } }else { echo $dsql->GetError(); $dsql->Close(); ShowMsg("注册失败,请检查资料是否有误或与管理员联系!","javascript:;"); exit(); } } /* 更改用户资料 function AEditUser() */ else if($dopost=="editUserSafe") { if($cfg_pp_isopen==1 && $cfg_pp_editsafeurl!=''){ header("Location:{$cfg_pp_editsafeurl}"); exit(); } CheckRank(0,0); $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali==""){ ShowMsg("验证码错误!","-1"); exit(); } if($oldpwd==""){ ShowMsg("你没有填写你的旧密码!","-1"); exit(); } $pwd = trim($userpwd); $pwdc = trim($userpwdok); if($pwd!=""){ if(strlen($pwd)>24){ ShowMsg("密码长度不能超过24位!","-1"); exit(); } if(!TestStringSafe($pwd)){ ShowMsg("你的新密码含有非法字符!","-1"); exit(); } if($pwdc!=$pwd){ ShowMsg("你两次输入的密码不一致!","-1"); exit(); } }else{ ShowMsg("你没有设置要更改的密码!","-1"); exit(); } $dsql = new DedeSql(false); $row = $dsql->GetOne("Select pwd From #@__member where ID='".$cfg_ml->M_ID."'"); $oldpwd = GetEncodePwd($oldpwd); if(!is_array($row)||$row['pwd']!=$oldpwd){ $dsql->Close(); ShowMsg("你输入的旧密码错误!","-1"); exit(); } $pwd = GetEncodePwd($pwd); $query = "update #@__member set pwd = '$pwd' where ID='".$cfg_ml->M_ID."'"; $dsql->ExecuteNoneQuery($query); ShowMsg("成功更改你的密码!","-1"); exit(); } else if($dopost=="editUser") { CheckRank(0,0); $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali==""){ ShowMsg("验证码错误!","-1"); exit(); } $query1 = " update #@__member set email = '$email',uname = '$uname' where ID='".$cfg_ml->M_ID."' "; $query2 = " update #@__member_perinfo set uname = '$uname', sex = '$sex', birthday = '$birthday', weight = '$weight', height = '$height', job = '$job', province = '$province', city = '$city', myinfo = '$myinfo', fullinfo = '$fullinfo', showaddr = '$showaddr', address = '$address', oicq = '$oicq', tel = '$tel', homepage = '$homepage' where ID='".$cfg_ml->M_ID."' "; $dsql = new DedeSql(false); $dsql->ExecuteNoneQuery($query1); $dsql->ExecuteNoneQuery($query2); $dsql->Close(); ShowMsg("成功更新你的个人资料!","edit_info.php"); exit(); } /* 更改个人空间资料 function EditSpace() */ else if($dopost=="editSpace") { CheckRank(0,0); $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali==""){ ShowMsg("验证码错误!","-1"); exit(); } require_once("./inc/inc_archives_functions.php"); $title = "空间形象"; $spaceimage = GetUpImage('spaceimage',true,true,150,112,'myface'); if($spaceimage=="" && $oldimg!="" && $oldimg!="img/pview.gif"){ if(file_exists($cfg_basedir.$oldimg)){ $spaceimage = $oldimg; } } $dsql = new DedeSql(false); $news = addslashes(cn_substr(stripslashes($news),1024)); $news = eregi_replace("<(iframe|script|javascript)","",$news); $spacename = ereg_replace("[><]","",$spacename); $mybb = addslashes(html2text(stripslashes($mybb))); $upquery = "Update #@__member set spacename='$spacename',spaceimage='$spaceimage',news='$news',mybb='$mybb' where ID='".$cfg_ml->M_ID."'; "; $ok = $dsql->ExecuteNoneQuery($upquery); if($ok){ $dsql->Close(); ShowMsg("成功更新你的个人空间介绍!","space_info.php?".time().mt_rand(100,900)); exit(); }else{ $dsql->Close(); ShowMsg("更新资料失败!","space_info.php?".time().mt_rand(100,900)); exit(); } } // break; /********************* function B_Login() *******************/ case "login": // /* 用户登录 function BUserLogin() */ if($dopost=="login") { if($cfg_pp_isopen==1 && $cfg_pp_loginurl!=''){ header("Location:{$cfg_pp_loginurl}"); exit(); } $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali==""){ ShowMsg("验证码错误!","-1"); exit(); } if(!TestStringSafe($userid)||!TestStringSafe($pwd)) { ShowMsg("用户名或密码不合法!","-1",0,2000); exit(); } if($userid==""||$pwd==""){ ShowMsg("用户名或密码不能为空!","-1",0,2000); exit(); } //检查帐号 $rs = $cfg_ml->CheckUser($userid,GetEncodePwd($pwd)); if($rs==0) { ShowMsg("用户名不存在!","-1",0,2000); exit(); } else if($rs==-1){ ShowMsg("密码错误!","-1",0,2000); exit(); } else{ $dsql = new DedeSql(false); $row = $dsql->GetOne("Select email,sex,uname From #@__member where ID='".$cfg_ml->M_ID."'"); $email=$row['email']; $sex=$row['sex']; $uname=$row['uname']; $dsql->SetQuery("update #@__member set logintime='".mytime()."',loginip='".GetIP()."' where ID='".$cfg_ml->M_ID."'"); $dsql->ExecuteNoneQuery(); $dsql->Close(); /* 通行证 登陆 discuz6*/ if ($sex=="男"){ $gender=1; }elseif($sex=="女"){ $gender=2; }else{ $gender=0; } $member = array ( 'cookietime'=> 31536000, 'time'=> date("U"), 'username'=>trim($userid), 'password'=>md5($pwd), 'email'=> $email, 'credits'=> 0, 'regip'=> get_client_ip(),/*$_SERVER["REMOTE_ADDR"],*/ 'regdate'=> date("U"), 'msn'=> $email, 'gender'=>$gender, 'nickname'=>$uname ); $action= 'login'; $auth = passport_encrypt(passport_encode($member), $passport_key); if(!isset($_GET["forward"])|| $_GET["forward"] == ""){ $mb_login_url = $gourl; }else{ $mb_login_url=$_GET["forward"]; } if(empty($mb_login_url)) $mb_login_url = $mysite."member/control.php"; $forward=$mb_login_url; $verify = md5($action.$auth.$forward.$passport_key); $trun_str=$bbspath."/api/passport.php". "?action=$action". "&auth=".rawurlencode($auth). "&forward=".rawurlencode($forward). "&verify=$verify"; echo "<script> location='{$trun_str}'; </script>"; unset($member); session_unregister('dz_forward'); exit(); } } /* 退出登录 function BUserExit() */ else if($dopost=="exit") { /*通行证 退出 discuz6*/ $member = array ( 'time'=>date("U"), 'username' => $cfg_ml->M_LoginID, 'password' =>$cfg_ml->M_UserPwd, 'email'=>$cfg_ml->M_Email ); $action= 'logout'; $auth = passport_encrypt(passport_encode($member), $passport_key); $cfg_ml->ExitCookie(); if($cfg_pp_isopen==1 && $cfg_pp_exiturl!=''){ echo "<script> location='{$cfg_pp_exiturl}'; </script>"; exit(); } $cfg_ml->ExitCookie(); if(!isset($_GET["forward"])|| $_GET["forward"] == ""){ if(empty($cfg_mb_exiturl)) $cfg_mb_exiturl = $cfg_indexurl; if(empty($cfg_mb_exiturl)) $cfg_mb_exiturl = '/'; }else{ $cfg_mb_exiturl=$_GET["forward"]; } $forward=$cfg_mb_exiturl; //可以修改此处为会员退出后跳转的网址。默认是退出返回原页面。 $verify = md5($action.$auth.$forward.$passport_key); $trun_str=$bbspath."/api/passport.php". "?action=$action". "&auth=".rawurlencode($auth). "&forward=".rawurlencode($forward). "&verify=$verify"; echo "<script> location='{$trun_str}'; </script>"; unset($member); /*通行证 退出 discuz6*/ } /* 获取密码 function BUserGetPwd() */ else if($dopost=="getpwd") { if($cfg_pwdtype=='md5'){ ShowMsg("系统的密码被设置为单向加密,无法取回,请与管理员联系。","javascript:;"); exit(); } $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali==""){ ShowMsg("验证码错误!","-1"); exit(); } if(!ereg("(.*)@(.*)/.(.*)",$email)||!TestStringSafe($email)){ ShowMsg("邮箱地址格式不正确!","-1"); exit(); } $dsql = new DedeSql(false); $row = $dsql->GetOne("Select userid,pwd,uname,email From #@__member where email='$email'"); if(!is_array($row)){ $dsql->Close(); ShowMsg("系统找不到此邮箱地址!","-1"); exit(); } $dsql->Close(); $mailtitle = "你在".$cfg_webname."的用户名和密码"; $mailbody = "/r/n用户名:'".$row['userid']."' 密码:'".$row['pwd']."'/r/n/r/n, $cfg_powerby"; $headers = "From: ".$cfg_adminemail."/r/nReply-To: $cfg_adminemail"; sendmail($email, $mailtitle, $mailbody, $headers); $gurl = explode("@",$email); ShowMsg("成功发出你的用户名和密码,请注意查收!","login.php"); exit(); } // break; } function js_unescape($str) { $ret = ''; $len = strlen($str); for ($i = 0; $i < $len; $i++) { if ($str[$i] == '%' && $str[$i+1] == 'u') { $val = hexdec(substr($str, $i+2, 4)); if ($val < 0x7f) $ret .= chr($val); else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f)); else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f)); $i += 5; } else if ($str[$i] == '%') { $ret .= urldecode(substr($str, $i, 3)); $i += 2; } else $ret .= $str[$i]; } return $ret; } ?>discuz6.0的设置:
我的都是用的UTF-8的,使用GBK的要注意转换的