PHP开发笔记's Archiver

xiexie 发表于 2012-8-9 17:15

dz x2.0用户联合登陆免激活接口(推荐)

<span style="font-size: 14px;"><strong>修改步骤:</strong>第一步:打开discuz!X1.5目录下/api/uc.php,在168行找到如下代码:</span>
<div><span style="font-size: 14px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function synlogin($get, $post) {</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; global $_G;</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if(!API_SYNLOGIN) {</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return API_RETURN_FORBIDDEN;</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $cookietime = 31536000;</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $uid = intval($get['uid']);</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'");</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if($member = DB::fetch($query)) {</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }</span><br><span style="font-size: 14px;"> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br><br></span><span style="font-size: 14px;">以下是对原代码进行修改后的完善版</span><br> &nbsp;
<div><span style="font-size: 14px;">//start Discuz!X1.5免激活功能 BY Jongye</span><br><span style="font-size: 14px;"> function synlogin($get, $post) {</span><br><span style="font-size: 14px;"> global $_G;</span><br> <br><span style="font-size: 14px;"> if(!API_SYNLOGIN) {</span><br><span style="font-size: 14px;"> return API_RETURN_FORBIDDEN;</span><br><span style="font-size: 14px;"> }</span><br> <br><span style="font-size: 14px;"> header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');</span><br> <br><span style="font-size: 14px;"> $cookietime = 31536000;</span><br><span style="font-size: 14px;"> $uid = intval($get['uid']);</span><br><span style="font-size: 14px;"> $query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'");</span><br><span style="font-size: 14px;"> if($member = DB::fetch($query)) {</span><br><span style="font-size: 14px;"> dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);</span><br><span style="font-size: 14px;"> }else{</span><br> <br><span style="font-size: 14px;"> $username = $get['username']; </span><br><span style="font-size: 14px;"> $query = DB::query("SELECT uid, username, password,email FROM ".DB::table('ucenter_members')." WHERE username='$username'"); </span><br><span style="font-size: 14px;"> $member = DB::fetch($query);</span><br><span style="font-size: 14px;"> $password = $member['password']; </span><br><span style="font-size: 14px;"> $email = $member['email'];</span><br><span style="font-size: 14px;"> $ip = $_SERVER['REMOTE_ADDR'];</span><br><span style="font-size: 14px;"> $time = time();</span><br> <br> <br><span style="font-size: 14px;"> $userdata = array(</span><br><span style="font-size: 14px;"> 'uid' =&gt; $uid,</span><br><span style="font-size: 14px;"> 'username' =&gt; $username,</span><br><span style="font-size: 14px;"> 'password' =&gt; $password,</span><br><span style="font-size: 14px;"> 'email' =&gt; $email,</span><br><span style="font-size: 14px;"> 'adminid' =&gt; 0,</span><br><span style="font-size: 14px;"> 'groupid' =&gt; 10,</span><br><span style="font-size: 14px;"> 'regdate' =&gt; $time,</span><br><span style="font-size: 14px;"> 'credits' =&gt; 0,</span><br><span style="font-size: 14px;"> 'timeoffset' =&gt; 9999</span><br><span style="font-size: 14px;"> );</span><br><span style="font-size: 14px;"> DB::insert('common_member', $userdata);</span><br> <br><span style="font-size: 14px;"> $status_data = array(</span><br><span style="font-size: 14px;"> 'uid' =&gt; $uid,</span><br><span style="font-size: 14px;"> 'regip' =&gt; $ip,</span><br><span style="font-size: 14px;"> 'lastip' =&gt; $ip,</span><br><span style="font-size: 14px;"> 'lastvisit' =&gt; $time,</span><br><span style="font-size: 14px;"> 'lastactivity' =&gt; $time,</span><br><span style="font-size: 14px;"> 'lastpost' =&gt; 0,</span><br><span style="font-size: 14px;"> 'lastsendmail' =&gt; 0,</span><br><span style="font-size: 14px;"> );</span><br><span style="font-size: 14px;"> DB::insert('common_member_status', $status_data);</span><br><span style="font-size: 14px;"> DB::insert('common_member_profile', array('uid' =&gt; $uid));</span><br><span style="font-size: 14px;"> DB::insert('common_member_field_forum', array('uid' =&gt; $uid));</span><br><span style="font-size: 14px;"> DB::insert('common_member_field_home', array('uid' =&gt; $uid));</span><br><span style="font-size: 14px;"> DB::insert('common_member_count', array('uid' =&gt; $uid)); </span><br><span style="font-size: 14px;"> DB::query("UPDATE ".DB::table('common_setting')." SET svalue='$username' WHERE skey='lastmember'");</span><br> <br><span style="font-size: 14px;"> $query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'");</span><br><span style="font-size: 14px;"> if($member = DB::fetch($query)) {</span><br><span style="font-size: 14px;"> dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);</span><br><span style="font-size: 14px;"> }</span><br><span style="font-size: 14px;"> }</span><br> <br><span style="font-size: 14px;"> }</span><br><span style="font-size: 14px;"> // end<br><br>测试没问题。<br></span></div><br></div>

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.