經常在完成一次DZ與UC的對接之后,會出現這樣的問題,如果不解決,就會出現所有老用戶需要重新激活,而且需要驗證郵箱的問題,下面給出方案解決。
將下面代碼復制到一個php中,并在瀏覽器輸入地址執行
<?php $dbserver =’localhost’; //此處改成數據庫服務器地址 $dbuser =’root’;//此處寫數據庫用戶名 $dbpwd =’1234′;//數據庫密碼 $dbname =’disucz’;//數據庫名稱 $charset =’gbk’;//此處寫字符集gbk或者utf8 $uc_pre =’pre_ucenter_’;//UC表前綴 $dx_pre =’pre_’;//Discuz! X2表前綴 //此行開始向下不要改動 set_time_limit(0); //0為無限制 $connect=mysql_connect($dbserver,$dbuser,$dbpwd) or die(“無法連接數據庫”); @mysql_select_db($dbname,$connect); mysql_query(“set names $charset”); $query = mysql_query(“SELECT * FROM `{$uc_pre}members` WHERE `uid` not in(select `uid` from `{$dx_pre}common_member`) “,$connect); while($user = mysql_fetch_array($query)) { $password=$user[password]; mysql_query(” replace INTO `{$dx_pre}common_member` (uid,username,password,adminid,groupid,regdate,email) VALUES (‘$user[uid]’, ‘$user[username]’, ‘$password’,’0′,’10’,’$user[regdate]’,’$user[email]’) “); mysql_query(” replace INTO `{$dx_pre}common_member_field_forum` (uid) VALUES (‘$user[uid]’)”); mysql_query(” replace INTO `{$dx_pre}common_member_field_home` (uid) VALUES (‘$user[uid]’)”); mysql_query(” replace INTO `{$dx_pre}common_member_count` (uid) VALUES (‘$user[uid]’)”); mysql_query(” replace INTO `{$dx_pre}common_member_profile` (uid) VALUES (‘$user[uid]’)”); mysql_query(” replace INTO `{$dx_pre}common_member_status` (uid) VALUES (‘$user[uid]’)”); } echo “已從UC批量導入激活成功”; ?>
注釋:連接到數據庫后,PHP會比對UC和DZ用戶表的數據,發現不存在于DZ但是存在于UC的用戶,就會把用戶導入到DZ,但是這一注冊不會設置其他內容,比如用戶填寫的詳細信息,由于以前是存儲在DZ數據庫中,所以還是丟失了
這樣子用戶已經全部導入,用戶數也恢復了正常
下一步,將用戶的郵箱驗證全部設置為已驗證
數據庫執行:
update pre_common_menber ste emailstatus=“1”;
注釋:這是更新數據庫中emailstatus字段,1為驗證 pre記得改為你的論壇的前綴