업무상의 이유로 이것을 사용해야 하기 때문에 몇 가지 연구를 수행했습니다.
먼저 쿠키에 사용자 ID와 SessionID를 삽입한 다음 SessionID와 사용자 ID를 데이터베이스의 세션 테이블에 삽입하는 것입니다. 포럼을 열면 시스템에서 COOKIES 정보가 데이터베이스의 정보와 동일한지 확인합니다. 동일한 경우 로그인 부분의 주요 코드는 다음과 같습니다.
<?php
//32비트 임의 SESSIONID 가져오기
//각 값을 초기화합니다.
$Session_testId=create_sess_id(32);
$SessionIp='192.168.0.100';
$cookie_path='/';
$cookieName='phpbb3_1w36a';
$userBrowserInfo= $_SERVER["HTTP_USER_AGENT"];
$userIpAdd=$_SERVER["REMOTE_ADDR"];
//양식의 사용자 이름과 비밀번호를 가져옵니다.
$cmd_username=$_POST["사용자 이름"];
$cmd_password=$_POST["비밀번호"];
//통과되면 먼저 CMS 시스템 테이블로 확인하여 해당 사용자 이름의 BBS 사용자 테이블에서 ID를 쿼리합니다.
$link=mysql_connect("localhost","root","");
mysql_select_db("cms");
$selectUid="사용자 이름='$cmd_username'인 bbs_users에서 user_id를 선택하세요.";
$uidResult=mysql_query($selectUid);
$userId=null;
while($row1 = mysql_fetch_array($uidResult, MYSQL_NUM))
{
$userId=$row1[0];
}
// $userId를 에코합니다;
mysql_close($link);
//쿠키에 사용자 ID 정보를 삽입합니다.
setcookie($cookieName.'_u',$userId,time()+100000000,$cookie_path,$SessionIp,false);
//SessionID 정보를 쿠키에 삽입
setcookie($cookieName.'_sid',$Session_testId,time()+100000000,$cookie_path,$SessionIp,false);
//phpb_sessions 테이블에 세션 정보를 삽입합니다.
$link=mysql_connect("localhost","루트","");
mysql_select_db("cms");
$sqlcommand="bbs_sessions(session_id,session_user_id,session_last_visit,session_start,session_time,session_ip,session_browser,session_page)에 삽입";
$sqlcommand.=" 값('$Session_testId',$userId,'".time()."','".time()."','".time()."','$userIpAdd', '$userBrowserInfo','index.php')";
//echo $sqlcommand;
mysql_query($sqlcommand);
mysql_close($link);
//32비트 난수 생성
함수 create_sess_id($len=32)
{
// 현재 시간의 마이크로초를 가져옵니다.
list($u, $s) = eXPlode(' ', microtime());
$시간 = (부동)$u + (부동)$s;
// 난수 생성
$rand_num = 랜드(100000, 999999);
$rand_num = 랜드($rand_num, $time);
mt_srand($rand_num);
$rand_num = mt_rand();
//세션ID 생성
$sess_id = md5( md5($time).md5($rand_num) );
//필요한 길이를 지정하는 SessionID를 가로챕니다.
$sess_id = substr($sess_id, 0, $len);
$sess_id를 반환합니다.
}
header("위치: http://192.168.0.100/bbs/index.php ");
//print_r($_COOKIE);
?>
이 방법으로 자동 로그인이 가능합니다.
물론 이것만으로는 충분하지 않습니다. PHPBB의 사용자도 계정 정보 수정 및 신규 사용자 등록을 차단해야 합니다.
phpbb3rc2stylesprosilvertemplate 디렉토리 다음 .ucp_register.html 템플릿 페이지에서 내부 콘텐츠를 삭제하고 다음
<script type="text/javascript" 언어="javascript">
를 추가하세요.
window.location='member.php';
</script>
이런 방식으로 사용자가 약관을 읽은 후 등록을 클릭하면 정보를 수정하는 방법은 기본적으로 동일
하지 않습니다
.대신에 각각의 사용자 시스템을 가지고 있습니다.
웹사이트에 사용자를 등록할 때, PHPBB 데이터베이스의 users 테이블과 user_group 테이블에 동시에 사용자 정보를 입력해야 합니다.
권한을 부여하고 해당 내용을 삽입하지 않으면 로그인이 되지 않을 수 있습니다. 메시지를 변경하지 않고 포럼을 읽을 수 없는 등의 문제가 있습니다. 이 부분은 비교적 길고 간단하므로 코드는 생략합니다. 주로 로그인 부분입니다.