Задача такая: выводить на сайт форму авторизации и выполнить ее средствами сайта.
Насколько я понял, по пунктам:
- 1 - поместить в начало страницы
2 - прочитать $_POST['username']/['password'] и записать в куку "phpbb2mysql_sid" и "phpbb2mysql_data"
Код: Выделить всё
<?php define('IN_PHPBB', true); $phpbb_root_path = './forum/'; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); // // Start session management // $userdata = session_pagestart($user_ip, PAGE_INDEX); init_userprefs($userdata);
3 - добавить запись в таблицу phpbb_sessions (а нужно ли оно вообще?)
*************************
Есть конечно вариант ставить на обработку формы "login.php" форума и передать ему redirect (то же самое при logout), но если ввести логин несуществующего пользователя - выкинет на страничку форума. Можно было бы передать адрес странички с которой логинятся и кинуть проверку, но я не знаю в какой файл и куда кидать.
*************************
Заранее кланяюсь.
Добавлено спустя 5 часов 30 минут 2 секунды:
Ладно - вот код:
Код: Выделить всё
<?php require_once('Connections/localhost.php');?>
<?php
function encode_ip($dotquad_ip)
{
$ip_sep = explode('.', $dotquad_ip);
return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}
//==============================Выбираем пользователя
if ((isset($_POST['MM_insert'])) && ($_POST['MM_insert'] == "form"))
{
$sql1 = sprintf("SELECT * FROM phpbb_users WHERE username='%s'", $_POST['user']);
$sql2 = mysql_query($sql1);
$sql3 = mysql_fetch_assoc($sql2);
$num_rows = mysql_num_rows($sql2);
if($num_rows != 0){
//==============================записываем куки
$user_ip = encode_ip($_SERVER['REMOTE_ADDR']);
$session_id = md5(uniqid($user_ip));
$current_time=time();
setcookie("phpbb2mysql_sid", $session_id, $current_time + 31536000, "/", "", "0");
$sesssiondata = array();
$sessiondata['autologinid'] = $sql3['user_pass'];
setcookie("phpbb2mysql_data", serialize($sessiondata), $current_time + 31536000, "/", "", "0");
//==============================записываем в базу
$insertSQL = sprintf("INSERT INTO phpbb_sessions (session_id, session_user_id, session_start, session_time, session_ip, session_logged_in)
VALUES ('%s', '%s', '%s', '%s', '%s', 1)",
$session_id,
$sql3['user_id'],
$current_time,
$current_time,
$user_ip
);
mysql_select_db($database_localhost, $localhost);
$Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
/*endif*/}
}
?>
<html>
...
<body>
<form name="form1" method="post" action="">
<input name="user" type="text" id="user">
<input name="pass" type="text" id="pass">
<input type="submit" name="Submit" value="Submit">
<input name="MM_insert" type="hidden" value="form">
</form>
</body>
</html>
Пользую phpBB-2.0.22
Ессно нет проверки на autologin, но главное первое.