لأنني بحاجة إلى استخدام هذا لأسباب تتعلق بالعمل، فقد قمت ببعض الأبحاث.
الفكرة الرئيسية هي محاكاة ملفات تعريف الارتباط. قم أولاً بإدخال معرف المستخدم ومعرف الجلسة في ملفات تعريف الارتباط، ثم أدخل معرف الجلسة ومعرف المستخدم في جدول الجلسات في قاعدة البيانات. إذا فتح المنتدى وسيقوم النظام بالتحقق مما إذا كانت معلومات ملفات تعريف الارتباط هي نفس المعلومات الموجودة في قاعدة البيانات، إذا كانت متطابقة، فيمكن تحقيق تسجيل الدخول التلقائي. الرمز الرئيسي لجزء تسجيل الدخول هو كما يلي:
<?php
// احصل على SESSIONID عشوائي 32 بت
// تهيئة كل قيمة
$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 لاسم المستخدم المقابل
$link=mysql_connect("localhost"،"root"،"");
mysql_select_db("cms");
$selectUid="select user_id from bbs_users Where username='$cmd_username'";
$uidResult=mysql_query($selectUid);
$userId=null;
بينما($row1 = mysql_fetch_array($uidResult, MYSQL_NUM))
{
$userId=$row1[0];
}
// صدى $userId;
mysql_ Close($link);
// أدخل معلومات معرف المستخدم في ملفات تعريف الارتباط
setcookie($cookieName.'_u',$userId,time()+100000000,$cookie_path,$SessionIp,false);
// أدخل معلومات معرف الجلسة في ملفات تعريف الارتباط
setcookie($cookieName.'_sid',$Session_testId,time()+100000000,$cookie_path,$SessionIp,false);
// أدخل معلومات الجلسة في جدول phpb_sessions
$link=mysql_connect("localhost"،"root"،"")؛
mysql_select_db("cms");
$sqlcommand="insert into bbs_sessions(session_id,session_user_id,session_last_visit,session_start,session_time,session_ip,session_browser,session_page)";
$sqlcommand.="values('$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 = rand(100000, 999999);
$rand_num = rand($rand_num, $time);
mt_srand($rand_num);
$rand_num = mt_rand();
// إنشاء معرف الجلسة
$sess_id = md5( md5($time).md5($rand_num) );
// اعتراض معرف الجلسة الذي يحدد الطول المطلوب
$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>
بهذه الطريقة، عندما ينقر المستخدم للتسجيل وينقر للتسجيل بعد قراءة الشروط، سينتقل إلى صفحة التسجيل على الموقع. طريقة تعديل المعلومات هي نفسها في
الأساس قم بتوحيد جدول المستخدم، وبدلاً من ذلك، يكون لكل منها نظام مستخدم خاص به.
عند تسجيل مستخدم على موقع الويب، أدخل معلومات المستخدم في جدول المستخدمين وجدول user_group لقاعدة بيانات PHPBB في نفس الوقت.
الأذونات، وأدخل الأشياء المقابلة، وإلا فقد لا تتمكن من تسجيل الدخول. مشاكل مثل عدم تغيير الرسالة وعدم القدرة على قراءة المنتدى. هذا الجزء طويل وبسيط نسبيًا، لذا تم حذف الرمز بشكل رئيسي جزء تسجيل الدخول.