Home > Article > Backend Development > PHP implements merging discuz users, php merges discuz_PHP tutorial
The example in this article describes the method of PHP merging discuz user scripts. Share it with everyone for your reference. The details are as follows:
A few days ago, I encountered a project that required merging two discuz. One had a user level of around 120,000, and the other had a user level of 18,000. Needless to say, the 10,080 was definitely thrown away, leaving the 120,000. It started to feel difficult to handle. The data tables are all related. When a new user is registered, 8 tables have added records. I haven’t checked whether other tables have the possibility of modifying records. At that time, I felt that I couldn't sort out those tables for a while, so I searched for it and found the discuz tool. But it could only import items within 100,000, so I had to try it myself. After thinking about it, I directly inserted a line into the key table. As for the record, other tables may automatically complete the relevant data during the user operation, so I tried to export the original 18,000 users, and then wrote a PHP script to directly write the 18,000 users into the uncenter The member inside and outside. I tested it and it was OK. Unfortunately, none of the user points or anything has passed, only the user's username and password have been retained.
Key steps:
1. Export the uncenter member database of the system you plan not to use into a sql file.
2. Run the script.
Disclaimer: This script only provides ideas. Please back up the data in advance before use. The author has nothing to do with data loss. (The code is simple, don’t spray)
set_time_limit(0); $link = mysql_connect('localhost', 'ngjc', 'ohFt6yhHYvt5') or die('Could not connect: ' . mysql_error()); echo 'Connected successfully'; mysql_select_db('ngjc') or die('Could not select database'); require "sql.php";//此处换成导出的sql文件 $arrayerr=array(); $oknum=0; $errnum=0; mysql_query("SET NAMES utf8"); foreach($sqlarr as $sql) { if(!mysql_query($sql)) { $arrayerr[]=$sql;$errnum++; } else { $oknum++; } } echo "<pre class="brush:php;toolbar:false">OK:$oknum <br>errornum:$errnum <br> error:<br>"; print_r($arrayerr); mysql_close($link);
Let’s take a look at how to use UC integration
In the past two days, I have been working on two discuz ucenter and membership systems; after my unremitting efforts, the integration was finally completed; after integration, the functions are as follows;
Two discuz systems share the same ucenter; //Implementation method:
The two discuz systems share the same membership system; //The solution is later;
Integrate ucenter first;
First completely install a discuz system; enter ucenter; add applications:
Click to install: Keep going to the next step
If the click appears, you must solve the above problems before the installation can continue
Please return and enter the IP address of UCenter: If nothing goes wrong, go to the next step
ucenter integration is completed; you can log in at the same time; log out at the same time; you only need to activate it for the first time;
Open config_global.php under the second subsystem config/;
Add $_config['db']['2'][' under $_config['db']['1']['tablepre'] = chuzi_'; tablepre'] = it_
The second subsystem opens db_driver_mysql.php under the sourceclassdb file;
Add below line 34$this->tablepre = $config['1']['tablepre']; $this->tableprechu = $config['2 ']['tablepre'];
Line 112 return $this->tablepre.$tablename; is modified to the following
if(preg_match("/^common_member(.*)/i",$tablename)|| preg_match("/^home(.*)/i",$tablename) || in_array($tablename, array('common_credit_rule_log'))) { return $this->tableprechu .$tablename; //tableprechu与上面修改对应就行; }else{ return $this->tablepre.$tablename; }
The above are the two ways to integrate DZ forum members summarized by the editor. I personally prefer the second one, after all, the first one still has some flaws.