1.安装74cms完成后登录总后台在菜单条工具选项中添加uc整合菜单。

在admin/templates/sys/admin_left_tools.htm这个文件中添加

<li >
<a href="admin_uc_setting.php"  target="mainFrame"  >整合UCenter </a>
</li>

2.在admin目录下创建 admin_uc_setting.php这个文件,内容如下

<?php
define('IN_QISHI', true);
require_once(dirname(__FILE__).'/../data/config.php');
require_once(dirname(__FILE__).'/include/admin_common.inc.php');
require_once(ADMIN_ROOT_PATH.'include/admin_uc_fun.php');
$act = !empty($_REQUEST['act']) ? trim($_REQUEST['act']) : 'uc_install';
check_permissions($_SESSION['admin_purview'],"UCenter");
if($act=='uc_install')
{//include('data/config.php');$UC_config=array('appid'=>UC_APPID,'ucapi'=>UC_API,'ucip'=>UC_IP,'uckey'=>UC_KEY,'ucconnect'=>UC_CONNECT,'ucdbhost'=>UC_DBHOST,'ucdbuser'=>UC_DBUSER,'ucdbpw'=>UC_DBPW,'ucdbname'=>UC_DBNAME,'ucdbtablepre'=>UC_DBTABLEPRE,);$smarty->assign('uc_config',$UC_config);$smarty->assign('pageheader',"74CMS 管理中心 - 整合UCenter");$smarty->display('uc/admin_uc_setting.htm');
}
else if($act=='uc_set_save')
{//print_r($_POST['uc_config']);if(uc_write_config($_POST['uc_config'],dirname(__FILE__).'/../data/config.php')){adminmsg('修改成功!',2);}else{adminmsg('修改失败!');};
}
?>3.创建admin_uc_setting.php这个文件中使用的函数文件admin_uc_fun.php,内容如下<?phpif(!defined('IN_QISHI')){die('Access Denied!');}
function uc_open($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = true)
{$return = '';$matches = parse_url($url);$host = $matches['host'];$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';$port = !empty($matches['port']) ? $matches['port'] : 80;if($post){$out = "POST $path HTTP/1.0\r\n";$out .= "Accept: */*\r\n";$out .= "Accept-Language: zh-cn\r\n";$out .= "Content-Type: application/x-www-form-urlencoded\r\n";$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";$out .= "Host: $host\r\n";$out .= 'Content-Length: '.strlen($post)."\r\n";$out .= "Connection: Close\r\n";$out .= "Cache-Control: no-cache\r\n";$out .= "Cookie: $cookie\r\n\r\n";$out .= $post;}else{$out = "GET $path HTTP/1.0\r\n";$out .= "Accept: */*\r\n";$out .= "Accept-Language: zh-cn\r\n";$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";$out .= "Host: $host\r\n";$out .= "Connection: Close\r\n";$out .= "Cookie: $cookie\r\n\r\n";}$fp = @fsockopen(($host ? $host : $ip), $port, $errno, $errstr, $timeout);if(!$fp){return '';}else{stream_set_blocking($fp, $block);stream_set_timeout($fp, $timeout);@fwrite($fp,$out);$status = stream_get_meta_data($fp);if(!$status['timed_out']){while (!feof($fp)){if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header == "\n")){break;}}$stop = false;while(!feof($fp) && !$stop){$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));$return .= $data;if($limit){$limit -= strlen($data);$stop = $limit <= 0;}}}@fclose($fp);return $return;}
}
function uc_write_config($config, $file)
{$success = false;if(!empty($config)){foreach ($config as $key =>$value){$$key=$value;}}//list($appauthkey, $appid, $ucdbhost, $ucdbname, $ucdbuser, $ucdbpw, $ucdbcharset, $uctablepre, $uccharset, $ucapi, $ucip) = explode('|', $config);if($content = file_get_contents($file)){$content = trim($content);$content = substr($content, -2) == '?>' ? substr($content, 0, -2) : $content;$link = mysql_connect($ucdbhost, $ucdbuser, $ucdbpw, 1);$uc_connnect = $link && mysql_select_db($ucdbname, $link) ? 'mysql' : '';$content = uc_insert_config($content, "/define\('UC_CONNECT',\s*'.*?'\);/i", "define('UC_CONNECT', '$uc_connnect');");$content = uc_insert_config($content, "/define\('UC_DBHOST',\s*'.*?'\);/i", "define('UC_DBHOST', '$ucdbhost');");$content = uc_insert_config($content, "/define\('UC_DBUSER',\s*'.*?'\);/i", "define('UC_DBUSER', '$ucdbuser');");$content = uc_insert_config($content, "/define\('UC_DBPW',\s*'.*?'\);/i", "define('UC_DBPW', '$ucdbpw');");$content = uc_insert_config($content, "/define\('UC_DBNAME',\s*'.*?'\);/i", "define('UC_DBNAME', '$ucdbname');");$content = uc_insert_config($content, "/define\('UC_DBCHARSET',\s*'.*?'\);/i", "define('UC_DBCHARSET', 'GBK');");$content = uc_insert_config($content, "/define\('UC_DBTABLEPRE',\s*'.*?'\);/i", "define('UC_DBTABLEPRE', '$ucdbtablepre');");$content = uc_insert_config($content, "/define\('UC_DBCONNECT',\s*'.*?'\);/i", "define('UC_DBCONNECT', '0');");$content = uc_insert_config($content, "/define\('UC_KEY',\s*'.*?'\);/i", "define('UC_KEY', '$uckey');");$content = uc_insert_config($content, "/define\('UC_API',\s*'.*?'\);/i", "define('UC_API', '$ucapi');");$content = uc_insert_config($content, "/define\('UC_CHARSET',\s*'.*?'\);/i", "define('UC_CHARSET', 'gb2312');");$content = uc_insert_config($content, "/define\('UC_IP',\s*'.*?'\);/i", "define('UC_IP', '$ucip');");$content = uc_insert_config($content, "/define\('UC_APPID',\s*'?.*?'?\);/i", "define('UC_APPID', '$appid');");$content = uc_insert_config($content, "/define\('UC_PPP',\s*'?.*?'?\);/i", "define('UC_PPP', '20');");$content .= "\r\n".'?>';if(@file_put_contents($file, $content)){$success = true;}}return $success;
}
function uc_insert_config($s, $find, $replace)
{if(preg_match($find, $s)){$s = preg_replace($find, $replace, $s);}else{$s .= "\r\n".$replace;}return $s;
}
?>

View Code

将admin_uc_fun.php这个文件放到admin/include目录下。

4.在admin/templates/下创建uc目录,并创建admin_uc_setting.htm这个文件,文件内容如下;

{#include file="sys/admin_header.htm"#}
<div class="admin_main_nr_dbox">
<div class="toptip"><h2>提示:</h2><p>
整合UCenter完毕后自动生成以下配置信息,多数情况修无需编辑此信息。
</p>
</div>
<div class="toptit">编辑UCenter整合信息</div><table width="100%" border="0" cellspacing="0" cellpadding="4"><tr><td style=" line-height:220%; color:#666666; padding-left:15px;"><form id="form1" name="form1" method="post" action="?act=uc_set_save"><table>
<tr><td colspan="2" align="left">应用ID:{#$uc_config.appid#}</td>
</tr>
<tr><td><input type="text" name="uc_config[appid]" value="{#$uc_config.appid#}"  class="input_text_200" /></td><td>填写UCenter添加应用的id。</td></tr>
<tr><td colspan="2" align="left">服务端地址:</td>
</tr>
<tr><td width="200"><input type="text" name="uc_config[ucapi]" value="{#$uc_config.ucapi#}"  class="input_text_200"/></td><td>在您 UCenter地址或者目录改变的情况下,修改此项,一般情况请不要改动例如: http://www.site.com/ucenter (最后不要加'/')。</td>
</tr>
<tr><td colspan="2" align="left">服务端 IP:</td>
</tr>
<tr><td><input type="text" name="uc_config[ucip]" value="{#$uc_config.ucip#}"  class="input_text_200" /></td><td>正常情况下留空即可。如果由于域名解析问题导致 UCenter 与该应用通信失败,请尝试设置为该应用所在服务器的 IP 地址。</td></tr>
<tr><td colspan="2" align="left">通信密钥:</td></tr><tr><td><input type="text" name="uc_config[uckey]"  value="{#$uc_config.uckey#}"  class="input_text_200"/></td><td>只允许使用英文字母及数字,限 64 字节。应用端的通信密钥必须与此设置保持一致,否则该应用将无法与 UCenter 正常通信</td>
</tr>
<tr><td colspan="2" align="left">连接方式:</td>
</tr><tr><td>      <select name="uc_config[ucconnect]" onChange="if(this.value==''){document.getElementById('ucmysql').style.display = 'none';}else{document.getElementById('ucmysql').style.display = '';}" style=" width:207px;font-size:12px;"><option value="mysql" {#if $uc_config.ucconnect eq 'mysql'#}selected="selected"{#/if#}> 数据库方式(MySQL) </option><option value="" {#if $uc_config.ucconnect eq ''#}selected="selected"{#/if#}> 接口方式(fsockopen) </option></select></td><td>请根据您的服务器网络环境选择适当的连接方式</td></tr><tr><td colspan="2"><table id="ucmysql" ><tr><td colspan="2" align="left">数据库服务器:</td></tr><tr><td width="200"><input type="text"   name="uc_config[ucdbhost]" value="{#$uc_config.ucdbhost#}"  class="input_text_200"/>                  </td><td>默认:localhost, 如果 MySQL 端口不是默认的 3306,请填写如下形式:127.0.0.1:端口号</td></tr><tr><td colspan="2" align="left">数据库用户名:</td></tr><tr><td><input type="text"   name="uc_config[ucdbuser]" value="{#$uc_config.ucdbuser#}" class="input_text_200"/> </td><td>登录uc服务端的数据库用户名</td>  </tr><tr><td colspan="2" align="left">数据库密码:</td></tr>                <tr><td><input type="text" name="uc_config[ucdbpw]" value="{#$uc_config.ucdbpw#}" class="input_text_200"/> </td><td>登录uc服务端数据库使用的密码</td>  </tr><tr><td colspan="2" align="left">数据库名:</td></tr>                <tr><td><input type="text"  name="uc_config[ucdbname]" value="{#$uc_config.ucdbname#}" class="input_text_200"/> </td><td>uc服务端的数据库名称。</td>  </tr><tr><td colspan="2" align="left">数据库表前缀:</td></tr>                <tr><td><input type="text"   name="uc_config[ucdbtablepre]" value="{#$uc_config.ucdbtablepre#}" class="input_text_200"/> </td><td>uc服务端使用的数据库表前缀</td>  </tr></table>            </td></tr>    <tr><td colspan="2" align="left">正确的配置信息:</td></tr><tr><td><textarea  onFocus="this.select()" style="width:200px; height:100px; font-size:14px; font-family: Arial, Helvetica, sans-serif">
define('UC_CONNECT', '{#$uc_config.ucconnect#}');
define('UC_DBHOST', '{#$uc_config.ucdbhost#}');
define('UC_DBUSER', '{#$uc_config.ucdbuser#}');
define('UC_DBPW', '********');
define('UC_DBNAME', '{#$uc_config.ucdbname#}');
define('UC_DBCHARSET', '{#$uc_config.ucdbcharest#}');
define('UC_DBTABLEPRE', '{#$uc_config.ucdbtablepre#}');
define('UC_DBCONNECT', '0');
define('UC_KEY', '{#$uc_config.uckey#}');
define('UC_API', '{#$uc_config.ucapi#}');
define('UC_CHARSET', '{#$uc_config.uccharest#}');
define('UC_IP', '{#$uc_config.ucip#}');
define('UC_APPID', '{#$uc_config.ucappid#}');
define('UC_PPP', '20');</textarea></td><td>当应用的 UCenter 配置信息丢失时可复制左侧的代码到应用的配置文件中</td></tr><tr><td height="88" colspan="2"><input name="save" type="submit" class="admin_submit"    value="修改"/></td></tr>
</table></form></td></tr></table>
</div>
{#include file="sys/admin_footer.htm"#}
</body>
</html>

View Code

5..在后台工具中配置ucenter的内容,如没出现选项,可更新缓存后。如图:

6.在plus目录下ajax_user.php找到这个文件,在文件内容替换成

<?php
define('IN_QISHI', true);
require_once(dirname(dirname(__FILE__)).'/include/plus.common.inc.php');
include_once(QISHI_ROOT_PATH.'api/uc_client/client.php');//引入uc
$act = !empty($_REQUEST['act']) ? trim($_REQUEST['act']) : '';
//获取用户数据
function getpassport($username, $password) {$passport = array();$ucresult = uc_user_login($username, $password);if($ucresult[0] > 0) {$passport['uid'] = $ucresult[0];$passport['username'] = $ucresult[1];$passport['email'] = $ucresult[3];}return $passport;
}
if($act =='do_login')
{$username=isset($_REQUEST['username'])?trim($_REQUEST['username']):"";$password=isset($_REQUEST['password'])?trim($_REQUEST['password']):"";$expire=isset($_POST['expire'])?intval($_POST['expire']):"";$account_type=1;if (preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/",$username)){$account_type=2;}elseif (preg_match("/^(13|15|18)\d{9}$/",$username)){$account_type=3;}$url=isset($_POST['url'])?$_POST['url']:"";if (strcasecmp(QISHI_DBCHARSET,"utf8")!=0){$username=iconv("utf-8",QISHI_DBCHARSET,$username);$password=iconv("utf-8",QISHI_DBCHARSET,$password);}$captcha=get_cache('captcha');if ($captcha['verify_userlogin']=="1"){$postcaptcha=$_POST['postcaptcha'];if ($captcha['captcha_lang']=="cn" && strcasecmp(QISHI_DBCHARSET,"utf8")!=0){$postcaptcha=iconv("utf-8",QISHI_DBCHARSET,$postcaptcha);}if (empty($postcaptcha) || empty($_SESSION['imageCaptcha_content']) || strcasecmp($_SESSION['imageCaptcha_content'],$postcaptcha)!=0){unset($_SESSION['imageCaptcha_content']);exit("errcaptcha");}}require_once(QISHI_ROOT_PATH.'include/fun_user.php');if ($username && $password){$user=get_user_inusername($username);if(empty($user)){//修改64-72行同步获取用户源if(!$passport = getpassport($username, $password)) {exit("login_failure_please_re_login");}else{user_register($passport['username'],$password,2,$passport['email'],true,$passport['uid']);}}$login=user_login($username,$password,$account_type,true,$expire);$url=$url?$url:$login['qs_login'];if ($login['qs_login']){/*uc同步登录*/if(defined('UC_API')){$login['uc_login']=uc_user_synlogin($_SESSION['uid']);}exit($login['uc_login']."<script language=\"javascript\" type=\"text/javascript\">window.location.href=\"".$url."\";</script>");}else{exit("err");}}exit("err");
}
elseif ($act=='do_reg')
{$captcha=get_cache('captcha');if ($captcha['verify_userreg']=="1"){$postcaptcha=$_POST['postcaptcha'];if ($captcha['captcha_lang']=="cn" && strcasecmp(QISHI_DBCHARSET,"utf8")!=0){$postcaptcha=iconv("utf-8",QISHI_DBCHARSET,$postcaptcha);}if (empty($postcaptcha) || empty($_SESSION['imageCaptcha_content']) || strcasecmp($_SESSION['imageCaptcha_content'],$postcaptcha)!=0){exit("err");}}require_once(QISHI_ROOT_PATH.'include/fun_user.php');$username = isset($_POST['username'])?trim($_POST['username']):exit("err");$password = isset($_POST['password'])?trim($_POST['password']):exit("err");$member_type = isset($_POST['member_type'])?intval($_POST['member_type']):exit("err");$email = isset($_POST['email'])?trim($_POST['email']):exit("err");if (strcasecmp(QISHI_DBCHARSET,"utf8")!=0){$username=iconv("utf-8",QISHI_DBCHARSET,$username);$password=iconv("utf-8",QISHI_DBCHARSET,$password);}$register=user_register($username,$password,$member_type,$email);if ($register>0){ $ucjs="";$login_js=user_login($username,$password);/*uc注册*/if(defined('UC_API')){$uid=uc_user_register($username,$password,$email);if($uid>0)$ucjs=uc_user_synlogin($uid);//uc登录通知
  }$mailconfig=get_cache('mailconfig');if ($mailconfig['set_reg']=="1"){dfopen($_CFG['site_domain'].$_CFG['site_dir']."plus/asyn_mail.php?uid=".$_SESSION['uid']."&key=".asyn_userkey($_SESSION['uid'])."&sendemail=".$email."&sendusername=".$username."&sendpassword=".$password."&act=reg");}//$ucjs=$login_js['uc_login'];$qsurl=$login_js['qs_login'];$qsjs="<script language=\"javascript\" type=\"text/javascript\">window.location.href=\"".$qsurl."\";</script>";if ($ucjs || $qsurl){exit($ucjs.$qsjs);}else{exit("err");}}else{exit("err");}
}
elseif($act =='check_usname')
{require_once(QISHI_ROOT_PATH.'include/fun_user.php');$usname=trim($_REQUEST['usname']);if (strcasecmp(QISHI_DBCHARSET,"utf8")!=0){$usname=iconv("utf-8",QISHI_DBCHARSET,$usname);}if(defined('UC_API')){if(uc_user_checkname($usname)>0){exit("true");}else{exit("false");}}else{$user=get_user_inusername($usname);empty($user)?exit("true"):exit("false");}
}
elseif($act == 'check_email')
{require_once(QISHI_ROOT_PATH.'include/fun_user.php');$email=trim($_REQUEST['email']);if (strcasecmp(QISHI_DBCHARSET,"utf8")!=0){$email=iconv("utf-8",QISHI_DBCHARSET,$email);}if(defined('UC_API')){if(uc_user_checkemail($email)>0){exit("true");}else{exit("false");}}else{$user=get_user_inemail($email);empty($user)?exit("true"):exit("false");}
}
elseif ($act=="top_loginform")
{$contents='';if ($_COOKIE['QS']['username'] && $_COOKIE['QS']['password']){$tpl='../templates/'.$_CFG['template_dir']."plus/top_login_success.htm";}else{ $tpl='../templates/'.$_CFG['template_dir']."plus/top_login_form.htm";}$contents=file_get_contents($tpl);$contents=str_replace('{#$activate_username#}',$_SESSION['activate_username'],$contents);$contents=str_replace('{#$site_name#}',$_CFG['site_name'],$contents);$contents=str_replace('{#$username#}',$_COOKIE['QS']['username'],$contents);$contents=str_replace('{#$site_template#}',$_CFG['site_template'],$contents);$contents=str_replace('{#$user_url#}',url_rewrite('QS_login'),$contents);$contents=str_replace('{#$reg_url#}',$_CFG['site_dir']."user/user_reg.php",$contents);$contents=str_replace('{#$activate_url#}',$_CFG['site_dir']."user/user_reg.php?act=activate",$contents);if ($_SESSION['username'] && $_SESSION['uid'] && empty($_SESSION['uqqid']) && $_CFG['qq_apiopen']=="1"){$html="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"{$_CFG['site_template']}images/75.gif\" align=\"absmiddle\"/>";$html.="<a href=\"{$_CFG['site_dir']}user/qqconnect.php?act=binding\" >绑定QQ帐号</a>";$contents=str_replace('{#$qqconnect#}',$html,$contents);}elseif (empty($_COOKIE['QS']['username']) && $_CFG['qq_apiopen']=="1"){$html="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"{$_CFG['site_template']}images/75.gif\" align=\"absmiddle\"/>";$html.="<a href=\"{$_CFG['site_dir']}user/qqconnect.php\" >用QQ帐号登录</a>";$contents=str_replace('{#$qqconnect#}',$html,$contents);}else{$contents=str_replace('{#$qqconnect#}',"",$contents);}exit($contents);
}
elseif ($act=="loginform")
{$contents='';if ($_COOKIE['QS']['username'] && $_COOKIE['QS']['password']){$tpl='../templates/'.$_CFG['template_dir']."plus/login_success.htm";}else{$tpl='../templates/'.$_CFG['template_dir']."plus/login_form.htm";}$contents=file_get_contents($tpl);$contents=str_replace('{#$activate_username#}',$_SESSION['activate_username'],$contents);$contents=str_replace('{#$site_name#}',$_CFG['site_name'],$contents);$contents=str_replace('{#$username#}',$_COOKIE['QS']['username'],$contents);$contents=str_replace('{#$site_template#}',$_CFG['site_template'],$contents);$contents=str_replace('{#$user_url#}',url_rewrite('QS_login'),$contents);$contents=str_replace('{#$reg_url#}',$_CFG['site_dir']."user/user_reg.php",$contents);$contents=str_replace('{#$activate_url#}',$_CFG['site_dir']."user/user_reg.php?act=activate",$contents);exit($contents);
}
?>

View Code

如有不同可查看代码仔细进行替换。

7.在user目录下找到login.php的文件,在if($act == 'logout')27行后添加

if(defined('UC_API')){$logoutjs.=uc_user_synlogout();}

这个,以同步登出。

8.在api目录下建立uc.php文件,如有此文件可,相应进行内容对比替换。内容如下

<?php
define('IN_QISHI', TRUE);
include_once (dirname(__FILE__)."/../include/common.inc.php");
require_once(QISHI_ROOT_PATH.'include/mysql.class.php');
$qsdb = new mysql($dbhost,$dbuser,$dbpass,$dbname);
unset($dbhost,$dbuser,$dbpass,$dbname);
define('UC_CLIENT_VERSION', '1.5.0'); //note UCenter 版本标识
define('UC_CLIENT_RELEASE', '20081031');
define('API_DELETEUSER', 1);  //note 用户删除 API 接口开关
define('API_RENAMEUSER', 1);  //note 用户改名 API 接口开关
define('API_GETTAG', 1);  //note 获取标签 API 接口开关
define('API_SYNLOGIN', 1);  //note 同步登录 API 接口开关
define('API_SYNLOGOUT', 1);  //note 同步登出 API 接口开关
define('API_UPDATEPW', 1);  //note 更改用户密码 开关
define('API_UPDATEBADWORDS', 1); //note 更新关键字列表 开关
define('API_UPDATEHOSTS', 1);  //note 更新域名解析缓存 开关
define('API_UPDATEAPPS', 1);  //note 更新应用列表 开关
define('API_UPDATECLIENT', 1);  //note 更新客户端缓存 开关
define('API_UPDATECREDIT', 1);  //note 更新用户积分 开关
define('API_GETCREDITSETTINGS', 1); //note 向 UCenter 提供积分设置 开关
define('API_GETCREDIT', 1);  //note 获取用户的某项积分 开关
define('API_UPDATECREDITSETTINGS', 1); //note 更新应用积分设置 开关
define('API_RETURN_SUCCEED', '1');
define('API_RETURN_FAILED', '-1');
define('API_RETURN_FORBIDDEN', '-2');
define('UC_CLIENT_ROOT', QISHI_ROOT_PATH.'api/uc_client');
//note 普通的 http 通知方式
if(!defined('IN_UC'))
{error_reporting(0);set_magic_quotes_runtime(0);defined('MAGIC_QUOTES_GPC') || define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());$_DCACHE = $get = $post = array();$code = @$_GET['code'];parse_str(_authcode($code, 'DECODE', UC_KEY), $get);if(MAGIC_QUOTES_GPC){$get = _stripslashes($get);}$timestamp = time();if($timestamp - $get['time'] > 3600) {exit('Authracation has expiried');}if(empty($get)) {exit('Invalid Request');}$action = $get['action'];require_once UC_CLIENT_ROOT.'/lib/xml.class.php';$post = xml_unserialize(file_get_contents('php://input'));if(in_array($get['action'], array('test', 'deleteuser', 'renameuser', 'gettag', 'synlogin', 'synlogout', 'updatepw', 'updatebadwords', 'updatehosts', 'updateapps', 'updateclient', 'updatecredit', 'getcreditsettings', 'updatecreditsettings'))){$uc_note = new uc_note();exit($uc_note->$get['action']($get, $post));}else{exit(API_RETURN_FAILED);}
//note include 通知方式
} else {exit('Invalid Request');
}class uc_note
{var $dbconfig = '';var $db = '';var $appdir = '';var $tablepre = '';function _serialize($arr, $htmlon = 0){if(!function_exists('xml_serialize')){include_once UC_CLIENT_ROOT.'/lib/xml.class.php';}return xml_serialize($arr, $htmlon);}function uc_note(){$this->appdir = QISHI_ROOT_PATH;$this->dbconfig = QISHI_ROOT_PATH.'data/config.php';$this->db = $GLOBALS['qsdb'];$this->tablepre = $GLOBALS['pre'];}function test($get, $post){return API_RETURN_SUCCEED;}function deleteuser($get, $post){!API_DELETEUSER && exit(API_RETURN_FORBIDDEN);/* include_once(QISHI_ROOT_PATH.'api/uc_client/client.php');$uc_uid_arr=explode(",",$uids);foreach($uc_uid_arr as $uc_uid){$uc_user_arr=uc_get_user(intval($uc_uid),1);$usname_arr[]=$uc_user_arr[1];}//file_put_contents("test.txt",  var_export($usname_arr, true), LOCK_EX);foreach($usname_arr as $usname){$this->db->query("DELETE FROM ".table('members')." WHERE username='".$usname."'");} */return API_RETURN_SUCCEED;}function renameuser($get, $post) {$uid = $get['uid'];$usernameold = $get['oldusername'];$usernamenew = $get['newusername'];if(!API_RENAMEUSER) {return API_RETURN_FORBIDDEN;}return API_RETURN_SUCCEED;}function synlogin($get,$post){global $QS_cookiedomain,$QS_cookiepath;$username = $get['username'];if(!API_SYNLOGIN){return API_RETURN_FORBIDDEN;}//note 同步登录 API 接口\header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');$result=$this->db->getone("SELECT * FROM ".$this->tablepre."members WHERE username='".$username."' LIMIT 1 ");if(is_array($result)){setcookie('QS[uid]',$result['uid'], time()+3600*24,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[username]',$result['username'], time()+3600*24,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[password]',$result['password'], time()+3600*24,$QS_cookiepath,$QS_cookiedomain);} else{$_SESSION['activate_username']=$username;$_SESSION['uid'] = '';$_SESSION['username'] = '';$_SESSION['utype']='';setcookie('QS[uid]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[username]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[password]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[utype]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);file_put_contents("1.txt",  var_export($_SESSION, true), LOCK_EX);}}function synlogout($get, $post){global $QS_cookiepath,$QS_cookiedomain;if(!API_SYNLOGOUT){return API_RETURN_FORBIDDEN;}//note 同步登出 API 接口header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');$_SESSION['uid'] = '';$_SESSION['username'] = '';$_SESSION['utype']='';setcookie('QS[uid]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[username]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[password]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);setcookie('QS[utype]','', time()-3600,$QS_cookiepath,$QS_cookiedomain);$_SESSION['activate_username']="";}function updatepw($get, $post)//当用户更改用户密码时,此接口负责接受 UCenter 发来的新密码。
 {if(!API_UPDATEPW){return API_RETURN_FORBIDDEN;}//note 修改密码 API 接口$username = $get['username'];$password = $get['password'];if ($username && $password){$result=$this->db->getone("SELECT * FROM ".$this->tablepre."members WHERE username='".$username."' LIMIT 1 ");$md5password=md5(md5($password).$result['pwd_hash']);$this->db->query("UPDATE  ".$this->tablepre."members SET password='".$md5password."' WHERE username='".$username."' LIMIT 1 ");}return API_RETURN_SUCCEED;}function updatehosts($get, $post)//当 UCenter 的域名解析设置变更时,此接口负责通知所有应用程序更新后的域名解析设置内容。
 {if(!API_UPDATEHOSTS){return API_RETURN_FORBIDDEN;}//note 理新HOST缓存 API 接口$cachefile = UC_CLIENT_ROOT.'/data/cache/hosts.php';$fp = fopen($cachefile, 'w');$s = "<?php\r\n";$s .= '$_CACHE[\'hosts\'] = '.var_export($post, TRUE).";\r\n";fwrite($fp, $s);fclose($fp);return API_RETURN_SUCCEED;}function updateapps($get, $post)//当 UCenter 的应用程序列表变更时,此接口负责通知所有应用程序更新后的应用程序列表。
 {if(!API_UPDATEAPPS){return API_RETURN_FORBIDDEN;}$UC_API = $post['UC_API'];//note 写 app 缓存文件$cachefile = UC_CLIENT_ROOT.'/data/cache/apps.php';$fp = fopen($cachefile, 'w');$s = "<?php\r\n";$s .= '$_CACHE[\'apps\'] = '.var_export($post, TRUE).";\r\n";fwrite($fp, $s);fclose($fp);return API_RETURN_SUCCEED;}function updateclient($get, $post)//当 UCenter 的基本设置信息变更时,此接口负责通知所有应用程序更新后的基本设置内容。
 {if(!API_UPDATECLIENT){return API_RETURN_FORBIDDEN;}$cachefile = UC_CLIENT_ROOT.'/data/cache/settings.php';$fp = fopen($cachefile, 'w');$s = '<?php'."\r\n";$s .= '$_CACHE[\'settings\'] = '.var_export($post, TRUE).";\r\n";fwrite($fp, $s);fclose($fp);return API_RETURN_SUCCEED;}}
function _authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {$ckey_length = 4;$key = md5($key ? $key : UC_KEY);$keya = md5(substr($key, 0, 16));$keyb = md5(substr($key, 16, 16));$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';$cryptkey = $keya.md5($keya.$keyc);$key_length = strlen($cryptkey);$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;$string_length = strlen($string);$result = '';$box = range(0, 255);$rndkey = array();for($i = 0; $i <= 255; $i++) {$rndkey[$i] = ord($cryptkey[$i % $key_length]);}for($j = $i = 0; $i < 256; $i++) {$j = ($j + $box[$i] + $rndkey[$i]) % 256;$tmp = $box[$i];$box[$i] = $box[$j];$box[$j] = $tmp;}for($a = $j = $i = 0; $i < $string_length; $i++) {$a = ($a + 1) % 256;$j = ($j + $box[$a]) % 256;$tmp = $box[$a];$box[$a] = $box[$j];$box[$j] = $tmp;$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));}if($operation == 'DECODE') {if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {return substr($result, 26);} else {return '';}} else {return $keyc.str_replace('=', '', base64_encode($result));}}function _stripslashes($string) {if(is_array($string)) {foreach($string as $key => $val) {$string[$key] = _stripslashes($val);}} else {$string = stripslashes($string);}return $string;
}
?>

View Code

9.在目录下放uc_client文件夹。及内容。后可进行测试。

版本测试通过define('QISHI_VERSION','3.2'),
代码包下载地址
http://www.rayfile.com/files/a2c0c2a8-1f0e-11e2-9f38-0015c55db73d/
此代码供参考,如有不能实现功能者可留言,共同研究探讨。

注意如果74cms不能同步dzx2.5看看是不是禁止了cookie。

转载 永不放弃

转载于:https://www.cnblogs.com/heheisme/archive/2013/02/17/2914099.html

骑士cms(74cms)个人版 整合UC相关推荐

  1. 74cms|骑士cms|开源招聘系统,目录结构

    很不幸,我这几天,看了看3.7系统,前天刚出了4.0的测试版,点开一看,彻底重构了,用ThinkPHP,不过相信大体上不会变太多,这里是3.7版本: 74cms3.7目录结构:     install ...

  2. 74CMS(骑士CMS) 存在SQL注入漏洞(CNVD-2021-43389)

    文章目录 74CMS(骑士CMS) 存在SQL注入漏洞(CNVD-2021-43389) 1.74CMS(骑士CMS)简介 2.漏洞描述 3.影响版本 4.fofa查询语句 5.漏洞复现 6.POC& ...

  3. 上传到服务器的网站打开是空白,网站上传服务器,首页打开空白的解决办法|74cms|骑士cms...

    最近做了一个人才招聘网站.用的国内比较多的骑士CMS,这个系统做人才招聘网站还是不错的.招聘的功能比较齐全,而且默认页面的界面很友好.不多说,需要的朋友可以自行去官网下载,开源的代码,适合一般开发者. ...

  4. cms php vue 开源_骑士CMS文件包含+getshell

    0x00简单介绍 骑士cms人才系统,是一项基于php+mysql为核心的开源人才网站系统. 0x01漏洞概述 骑士cms官方发布安全更新,修复了一处远程代码执行漏洞.由于骑士cms某些函数过滤不严谨 ...

  5. php excel中解析显示html代码_骑士cms从任意文件包含到远程代码执行漏洞分析

    前言 前些日子,骑士cms 官方公布了一个系统紧急风险漏洞升级通知:骑士cms 6.0.48存在一处任意文件包含漏洞,利用该漏洞对payload文件进行包含,即可造成远程代码执行漏洞.这篇文章将从漏洞 ...

  6. php云和骑士哪家好,PHP云人才系统与骑士cms人才系统对比点评

    PHP云人才系统,是专为中文用户设计和开发,程序源代码100%完全开放的一个采用 PHP 和 MySQL 数据库构建的高效的人才与企业求职招.聘解决方案,在尊重版权的前提下能极大的满足站长对于网站程序 ...

  7. 骑士CMS模版注入+文件包含getshell复现

    声明 好好学习,天天向上 漏洞描述 骑士cms人才系统,是一项基于PHP+MYSQL为核心开发的一套免费 + 开源专业人才网站系统.软件具执行效率高.模板自由切换.后台管理功能方便等诸多优秀特点. 骑 ...

  8. 骑士cms文件包含getshell复现

    00X1 测试环境 骑士 CMS 6.0.48以下均存在此漏洞,本文复现使用骑士cms 6.0.20,下载地址: http://www.74cms.com/download/index.html 注意 ...

  9. 骑士cms火车头发布模块-骑士cms火车头采集规则免费

    骑士cms火车头采集,为什么要用骑士cms火车头采集,因为骑士cms火车头采集可以快速打造网站内容以及资源,今天给大家分享一款万能采集工具多个功能集合.一键建站+内容以及资源采集+伪原创+主动推送给搜 ...

  10. 渗透测试php过程,利用骑士cms的一次纠结的渗透测试过程(两个潜在

    今天下载了骑士cms的最新版本,由于好久以前一个哥们发了一个后台拿shell的漏洞,还有别人发的一个sql注入的漏洞,一个有意思的渗透测试过程就从这两个地方开始了,成功的拿下了某大型人才网站的服务器, ...

最新文章

  1. android上下文关系,Android Context上下文的理解 Hua
  2. 这位年仅27岁的阿联酋人工智能部长,竟计划2117年火星造城,真是有钱帅气又任性!
  3. Python--matplotlib 绘图可视化练手--折线图/条形图
  4. Oracle分区表详解 .
  5. 算法分析与设计-实验四 回溯算法设计
  6. random.next_Java Random next()方法与示例
  7. LeetCode 889. Construct Binary Tree from Preorder and Postorder Traversal
  8. 安装Windows NT4.0
  9. 恐怖!Spring Boot “内存泄漏”,排查竟这么难!
  10. JS操作Cookie写入和读取实例代码
  11. java之模块学习-JAVA的IO流
  12. allennlp手动安装教程
  13. visio流程图的叉号_常用的流程图软件有哪些?这3款软件不可错过!
  14. 清华大学何平:央行数字货币具备许多优势 但不可盲目推进
  15. 海外市场交易执行策略的实践
  16. 树莓派(RaspberryPI 3)用作HP LaserJet P1007的打印机服务器
  17. 2021年临颖一高高考成绩查询,2021年漯河高考状元是谁分数多少分,历年漯河高考状元名单...
  18. JavaScript里面实现12小时制的时分秒转化成24小时制的时分秒
  19. SQLyog图形化l数据库的操作和学习
  20. 数据库sql组合和切割函数

热门文章

  1. 推荐一款不错的杀毒软件,还在找卡巴激活码的网友不妨进来看看!
  2. BD和ts是什么意思
  3. 这几个Python数据可视化探索实例,拿走不谢
  4. 我的前半生之六,创业维艰,我不想骂你,你滚吧
  5. Qt:QtFileDialog打开文件选择对话框选择文件
  6. 腾讯管家for android,腾讯手机管家(原QQ手机管家)V6.1.0 for Android 官方版
  7. 创建微信卡券 php
  8. vue 引入第三方文件(高拍仪),传值及接口调用。
  9. 腾讯前辈熬夜肝了一个月整理的《Linux内核学习笔记》,啃完受益匪浅不走弯路
  10. 计算机网络工具软件包括,计算机网络常用工具软件