Поскольку мне нужно использовать это по рабочим причинам, я провел небольшое исследование.
Основная идея состоит в том, чтобы смоделировать файлы cookie. Сначала вставьте идентификатор пользователя и идентификатор сеанса в файлы cookie, а затем вставьте идентификатор сеанса и идентификатор пользователя в таблицу сеансов в базе данных. Если открыть форум, и система проверит, совпадают ли данные 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
$link=mysql_connect("localhost","root","");
mysql_select_db("cms");
$selectUid="выберите user_id из bbs_users, где username='$cmd_username'";
$uidResult=mysql_query($selectUid);
$userId=ноль;
while($row1 = mysql_fetch_array($uidResult, MYSQL_NUM))
{
$userId=$row1[0];
}
// эхо $userId;
mysql_close($link);
//Вставляем информацию об идентификаторе пользователя в файлы 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="insert in 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($ссылка);
//Генерируем 32-битное случайное число
функция create_sess_id($len=32)
{
// Получаем микросекунды текущего времени
list($u, $s) = eXPlode(' ', microtime());
$time = (float)$u + (float)$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) );
//Перехватываем SessionID, указывающий необходимую длину
$sess_id = substr($sess_id, 0, $len);
вернуть $sess_id;
}
заголовок("Местоположение: 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. Помните, что вы должны просмотреть группу.
разрешения и вставьте соответствующие вещи, иначе вы не сможете войти в систему. Такие проблемы, как невозможность изменения сообщения и невозможность прочитать форум. Эта часть относительно длинная и простая, поэтому код опущен. в основном часть входа.