DedeCMS与DZ、PW的整合

     本人最近一直在搞DEDE和php论坛的整合,从网上找了很多的示例,但是都不是很理想,通行证的方法有的时候会出现在FireFox下没有问题而IE有问题的情况(不知道别人有没有出现这种情况)
    今天下午终于搞定,用了一个网上的所谓的不用通行证的方法,实际上还是要开通通行证的。
本人使用的是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:
 $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的要注意转换的







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、解压后将tel文件夹上传到插件hack目录下 2、登录后台,打开:应用——插件中心——未安装插件——安装tel:电话114插件 3、安装好后,需要在:全局——导航设置——社区主导航——自定义添加导航目录如下: 电话114(黄页) 导航地址为:hack.php?H_name=tel 4、前台电话114分类不显示问题?需要在后台自己再添加一个新分类前台就会正常显示出来了; 5、找到ajax.php文件,以txt文本方式打开查看找到:$basename="../phpwind/hack.php?H_name=tel"; 6、修改上面查找到的../phpwind/根目录地址,否则前台将无法确认提交发布商家信息, 根据自己的实际地址目录文件名修改插件的根目录地址:(以“phpwind”为例) 根主目录修改成 $basename="phpwind/hack.php?H_name=tel"; 二级目录修改成 $basename="../phpwind/hack.php?H_name=tel"; 7、此插件是DZ官方售价200元,插件现已成功移植到PW8.7的版本,功能原来保持不变,目前已经测试可以在phpwind8.7GBK版本可以正常使用,8.3、8.5请自己测试吧!但愿都能用得上! 8、效果演示地址: http://love9mai.com/phpwind/hack.php?H_name=tel 9、使用声明,此插件添加了友情链接限制!亲,小弟我的是用8.7,从DZ移植过来也辛苦!只需要你加个关键词链接就可以免费正常使用了,官方是高价出售的,我认为你值得拥有了,说不定这个插件可以为你带来商机赚比这个200还要多呢!我也舍不得花大钱一个链接搞定! 10、如果你想需要修改限制添加为自己的友情链接请联系QQ:773433432 11、最后!欢迎到http://love9mai.com/phpwind/社区交流!还有部分好资源没分享出来呢!
PHPwind电话114商业插件DZ移植PW免费下载,使用问题欢迎到http://love9mai.com社区交流!使用方法按照如下步骤: 1、解压后将tel文件夹上传到插件hack目录下 2、登录后台,打开:应用——插件中心——未安装插件——安装tel:电话114插件 3、安装好后,需要在:全局——导航设置——社区主导航——自定义添加导航目录如下: 电话114(黄页) 导航地址为:hack.php?H_name=tel 4、前台电话114分类不显示问题?需要在后台自己再添加一个新分类前台就会正常显示出来了; 5、找到ajax.php文件,以txt文本方式打开查看找到:$basename="../phpwind/hack.php?H_name=tel"; 6、修改上面查找到的../phpwind/根目录地址,否则前台将无法确认提交发布商家信息, 根据自己的实际地址目录文件名修改插件的根目录地址:(以“phpwind”为例) 根主目录修改成 $basename="phpwind/hack.php?H_name=tel"; 二级目录修改成 $basename="../phpwind/hack.php?H_name=tel"; 7、此插件是DZ官方售价200元,插件现已成功移植到PW8.7的版本,功能原来保持不变,目前已经测试可以在phpwind8.7GBK版本可以正常使用,8.3、8.5请自己测试吧!但愿都能用得上! 8、效果演示地址:http://love9mai.com/phpwind/hack.php?H_name=tel 9、使用声明,此插件添加了友情链接限制!亲,小弟我的是用8.7,从DZ移植过来也辛苦!只需要你加个关键词链接就可以免费正常使用了,官方是高价出售的,我认为你值得拥有了,说不定这个插件可以为你带来商机赚比这个200还要多呢!我也舍不得花大钱一个链接搞定! 10、如果你想需要修改限制添加为自己的友情链接请联系QQ:773433432 11、最后!欢迎到http://love9mai.com/phpwind/社区交流!还有部分好资源没分享出来呢!
10.版权: 11.所牵涉到知识产权或其他权利归原始商定人所有,如有侵犯 12.您的权利,请您通知我们,我们会及时关闭此项目并终止此行为。 13.声明: 14.1. 该项目仅供群内朋友学习研究之用,禁止转载或转发给不在本群内的任何个人或团体 15.2. 请勿将该项目或其部分用于出售等商业目的,否则请自行承担一切法律或商业问题 16.3. 若您使用该项目或其部分用于二次开发,在您的代码中包含本文件完整信息 17.4. 只要您使用该项目或其部分,即代表您默认同意本声明且不用于商业用途 18.5. 若您正在使用该项目或其部分发布商业版或用于盈利目的,请您尊重我们的声明, 19.立即删除与我们相关的代码或程序,并做好善后处理 20. 21.//////////////////////////////////////////////////////////////// 22.////////////////////////////////////////////////////////////////1.2 Final// 23.2010年06月21日 24.1.修正瓢虫拿奖历后清包的问题 25. 26.2010年06月11日 27.1.修正数据库类在某些PHP扩展下无法使用析构函数的问题 28.2.修正后台版本检查的问题 29. 30.2010年6月8日 31.1.更新下UI 32. 33.2010年6月7日 34.1.修正只能偷一条鱼问题 35.2.修正积分对换问题 36.3.更新下UI 37.4.修正偷鱼可以多偷 38.5.修正治病、清垃圾不加经验提示 39. 40.2010年6月6日 41.1.添加pw7接口 42.2.添加dz7接口 43.3.修正多处bug,不再一一列出 44. 45.2010年6月5日 46.1.更新接口及构架,方便扩展其他接口 47.2.统一变量及定义 48.3.优化数据库操作 49.4.添加DX1接口 50.5.修正SQL注入问题 module包下载: http://u.115.com/file/f1d11360aa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值