>  기사  >  백엔드 개발  >  DISCUZ 사용자를 통합하는 PHP 방법

DISCUZ 사용자를 통합하는 PHP 방법

墨辰丷
墨辰丷원래의
2018-06-07 17:24:582243검색

이 글은 주로 DISCUZ 사용자들을 PHP로 통합하는 방법을 소개하고 있으니, 관심 있는 친구들이 참고하시면 좋을 것 같습니다.

몇일 전 두 개의 discuz를 병합해야 하는 프로젝트를 접했습니다. 한 사용자 레벨은 약 120,000이고 다른 하나는 18,000이었습니다. 말할 것도 없이 10,080 사용자 레벨은 120,000 사용자 레벨을 남겨두었습니다. 새로운 사용자가 등록되면 8개의 테이블에 레코드가 추가되는지 확인하지 못했습니다. 그 때 한동안 그 테이블들을 정리할 수 없을 것 같아서 검색하다가 discuz 도구를 찾았는데, 100,000개 이내의 항목만 가져올 수 있어서 직접 해봐야겠다는 생각이 들었습니다. 레코드의 경우 다른 테이블이 사용자 작업 중에 해당 데이터를 자동으로 완성할 수 있으므로 원래 18,000명의 사용자를 내보내려고 한 다음 PHP 스크립트를 작성하여 직접 작성했습니다. 중앙에 18,000명의 사용자가 들어갑니다. 구성원은 내부와 외부입니다. 테스트 해봤는데 괜찮더군요. 불행하게도 사용자 포인트나 어떤 것도 통과되지 않았으며 사용자의 사용자 이름과 비밀번호만 유지되었습니다.

주요 단계:

1. 사용하지 않을 시스템의 uncenter 멤버 데이터베이스를 sql 파일로 내보냅니다.

2. 스크립트를 실행합니다.

주의사항: 이 스크립트는 아이디어만 제공하므로, 사용하기 전에 데이터를 미리 백업해두시기 바랍니다. (코드는 간단합니다. 스프레이하지 마세요)

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);

UC 통합 사용 방법을 살펴보겠습니다

저는 지난 이틀 동안 discuz의 ucenter 및 멤버십 시스템을 작업했습니다. 끊임없는 노력 끝에 통합이 완료되었습니다. 기능은 다음과 같습니다.

두 개의 discuz 시스템이 동일한 ucenter를 공유합니다. //구현 방법:

두 개의 discuz 시스템이 동일한 멤버십 시스템을 공유합니다. 해결책은 나중에

ucenter를 먼저 통합하세요.

disuz 시스템을 설치하세요. ucenter를 입력하세요.

설치하려면 클릭하세요. 맨 아래까지 다음 단계로 진행하세요. 클릭해서 나타나면 위의 문제를 해결해야 설치를 계속할 수 있습니다

돌아가서 UCenter의 IP 주소를 입력하세요. 문제가 없으면 다음 단계로 이동하세요


ucenter 통합이 완료됩니다. 동시에 로그인하고 동시에 로그아웃해야 합니다.

두 번째 하위 시스템의 config/ 아래에서 $_config['를 추가하세요. db']['2']['tablepre'] = it_

under

$_config['db']['1']['tablepre'] = chuzi_'

; 두 하위 시스템이 db_driver_mysql을 엽니다.

라인 34$this->tablepre = $config['1']['tablepre'];아래에 추가하세요 $this->tableprechu = $config['2' ]['tablepre'];

Line 112 return $this->tablepre.$tablename; 다음으로 수정됨

if(preg_match("/^common_member(.*)/i",$tablename)|| preg_match("/^home(.*)/i",$tablename) || in_array($tablename, array(&#39;common_credit_rule_log&#39;)))
    {
      return $this->tableprechu .$tablename; //tableprechu与上面修改对应就行;
    }else{
    return $this->tablepre.$tablename;
    }

Summary: 위 내용은 이 기사의 전체 내용입니다. 모두의 공부.
관련 추천:

thinkPHP의 다중 테이블 쿼리 및 페이징 기능 구현 방법

PHP의 전월, 이번 달, 최근 15일, 최근 30일을 가져오는 방법

PHP는 preg_split을 사용하고 폭발은 콘텐츠를 저장하기 위해 텍스트 영역을 나누는 방법을 구현합니다

위 내용은 DISCUZ 사용자를 통합하는 PHP 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.