解决phpcms V9整合discuz! X3.0后 在phpcms新注册用户需要在discuz激活的问题
<p>分析其主要原因是phpsso与ucenter通信成功后,XXX_ucenter_member表中的用户已经同步成功但是在XXX_common_member中并没有此用户,所以只要在xxx_common_member中插入此用户就可以了,所以修改discuz/api/uc.php下的synlogin函数就可以了,修改为</p>
<blockquote>
<ol>
<li>
<span><span>function</span><span> synlogin($get, $post) { </span></span>
</li>
<li>
<span> global $_G; </span>
</li>
<li>
<span> </span>
</li>
<li>
<span> <span>if</span><span>(!API_SYNLOGIN) { </span></span>
</li>
<li>
<span> <span>return</span><span> API_RETURN_FORBIDDEN; </span></span>
</li>
<li>
<span> } </span>
</li>
<li>
<span> </span>
</li>
<li>
<span> header(<span>'P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'</span><span>); </span></span>
</li>
<li>
<span> </span>
</li>
<li>
<span> $cookietime = 31536000; </span>
</li>
<li>
<span> $uid = intval($get[<span>'uid'</span><span>]); </span></span>
</li>
<li>
<span> $query = DB::query(<span>"SELECT uid, username, password FROM "</span><span>.DB::table(</span><span>'common_member'</span><span>).</span><span>" WHERE uid='$uid'"</span><span>); </span></span>
</li>
<li>
<span> <span>if</span><span> ($member = DB::fetch($query)) </span></span>
</li>
<li>
<span> { </span>
</li>
<li>
<span> dsetcookie(<span>'auth'</span><span>, authcode(</span><span>"$member\t$member"</span><span>, </span><span>'ENCODE'</span><span>), $cookietime); </span></span>
</li>
<li>
<span> }<span>else</span><span> </span></span>
</li>
<li>
<span> { </span>
</li>
<li>
<span> $username = $get[<span>'username'</span><span>]; </span></span>
</li>
<li>
<span> $query = DB::query(<span>"SELECT uid, username, password, email FROM "</span><span>.DB::table(</span><span>'ucenter_members'</span><span>).</span><span>" WHERE username='$username'"</span><span>); </span></span>
</li>
<li>
<span> $member = DB::fetch($query); </span>
</li>
<li>
<span> $password = $member[<span>'password'</span><span>]; </span></span>
</li>
<li>
<span> $email = $member[<span>'email'</span><span>]; </span></span>
</li>
<li>
<span> $ip = $_SERVER[<span>'REMOTE_ADDR'</span><span>]; </span></span>
</li>
<li>
<span> $time = time(); </span>
</li>
<li>
<span> $userdata = array( </span>
</li>
<li>
<span> <span>'uid'</span><span>=>$uid, </span></span>
</li>
<li>
<span> <span>'username'</span><span>=>$username, </span></span>
</li>
<li>
<span> <span>'password'</span><span>=>$password, </span></span>
</li>
<li>
<span> <span>'email'</span><span>=>$email, </span></span>
</li>
<li>
<span> <span>'adminid'</span><span>=>0, </span></span>
</li>
<li>
<span> <span>'groupid'</span><span>=>10, </span></span>
</li>
<li>
<span> <span>'regdate'</span><span>=>$time, </span></span>
</li>
<li>
<span> <span>'credits'</span><span>=>0, </span></span>
</li>
<li>
<span> <span>'timeoffset'</span><span>=>9999 </span></span>
</li>
<li>
<span> ); </span>
</li>
<li>
<span> DB::insert(<span>'common_member'</span><span>, $userdata); </span></span>
</li>
<li>
<span> </span>
</li>
<li>
<span> $status_data = array( </span>
</li>
<li>
<span> <span>'uid'</span><span> => $uid, </span></span>
</li>
<li>
<span> <span>'regip'</span><span> => $ip, </span></span>
</li>
<li>
<span> <span>'lastip'</span><span> => $ip, </span></span>
</li>
<li>
<span> <span>'lastvisit'</span><span> => $time, </span></span>
</li>
<li>
<span> <span>'lastactivity'</span><span> => $time, </span></span>
</li>
<li>
<span> <span>'lastpost'</span><span> => 0, </span></span>
</li>
<li>
<span> <span>'lastsendmail'</span><span> => 0 </span></span>
</li>
<li>
<span> ); </span>
</li>
<li>
<span> DB::insert(<span>'common_member_status'</span><span>, $status_data); </span></span>
</li>
<li>
<span> DB::insert(<span>'common_member_profile'</span><span>, array(</span><span>'uid'</span><span> => $uid)); </span></span>
</li>
<li>
<span> DB::insert(<span>'common_member_field_forum'</span><span>, array(</span><span>'uid'</span><span> => $uid)); </span></span>
</li>
<li>
<span> DB::insert(<span>'common_member_field_home'</span><span>, array(</span><span>'uid'</span><span> => $uid)); </span></span>
</li>
<li>
<span> DB::insert(<span>'common_member_count'</span><span>, array(</span><span>'uid'</span><span> => $uid)); </span></span>
</li>
<li>
<span> DB::query(<span>'UPDATE '</span><span>.DB::table(</span><span>'common_setting'</span><span>).</span><span>" SET svalue='$username' WHERE skey='lastmember'"</span><span>); </span></span>
</li>
<li>
<span> $query = DB::query(<span>"SELECT uid, username, password FROM "</span><span>.DB::table(</span><span>'common_member'</span><span>).</span><span>" WHERE uid='$uid'"</span><span>); </span></span>
</li>
<li>
<span> <span>if</span><span> ($member = DB::fetch($query)) </span></span>
</li>
<li>
<span> { </span>
</li>
<li>
<span> dsetcookie(<span>'auth'</span><span>, authcode(</span><span>"$member\t$member"</span><span>, </span><span>'ENCODE'</span><span>), $cookietime); </span></span>
</li>
<li>
<span> } </span>
</li>
<li>
<span> } </span>
</li>
<li>
<span> } </span>
</li>
</ol>
</blockquote>
<p>
这样在phpcms中注册后去discuz中就可以不用激活就自动登录了</p>
頁:
[1]