仕事上の理由でこれを使用する必要があるため、
主なアイデアは、最初にユーザー ID とセッション ID を Cookie に挿入し、次にセッション ID とユーザー ID をデータベースのセッション テーブルに挿入することです。フォーラムを開くと、システムは COOKIES 情報がデータベース内の情報と同じであるかどうかを確認し、同じであれば自動ログインを実現できます。 ログイン部分のメインコードは次のとおりです
。
// 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="bbs_users から user_id を選択します。ここで username='$cmd_username'";
$uidResult=mysql_query($selectUid);
$userId=null;
while($row1 = mysql_fetch_array($uidResult, MYSQL_NUM))
{
$userId=$row1[0];
}
// $userId をエコーします。
mysql_close($link);
//ユーザーID情報をCookieに挿入します。
setcookie($cookieName.'_u',$userId,time()+100000000,$cookie_path,$SessionIp,false);
//SessionID情報をCookieに挿入
setcookie($cookieName.'_sid',$Session_testId,time()+100000000,$cookie_path,$SessionIp,false);
// phpb_sessions テーブルにセッション情報を挿入します。
$link=mysql_connect("localhost","root","");
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.= value('$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());
$time = (float)$u + (float)$s;
// 乱数を生成する
$rand_num = ランド(100000, 999999);
$rand_num = rand($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" language="javascript">
を追加します。
window.location='member.php';
</script>
このように、ユーザーが規約を読んで登録をクリックする場合と、Web サイト上の登録ページにジャンプする場合とでは、情報を変更する方法は基本的に同じでは
ありません
。代わりに、それぞれが独自のユーザー システムを持っています。Web
サイトにユーザーを登録するときは、ユーザー情報を PHPBB データベースの user_group テーブルに同時に挿入する必要があります。
メッセージが変更されない、フォーラムが読めないなどの問題 この部分は比較的長くて簡単なので、コードは省略します。主にログイン部分です。