Уважаемые пользователи!
Напоминаем, что с 7 ноября 2020 года phpBB Group прекращает поддержку phpBB версии 3.2.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2020 года.
С учетом этого, а также того, что версия 3.2.x больше не будет получать обновлений, за исключением связанных с проблемами безопасности
(только при их наличии и только до 7 ноября 2020 года), рекомендуется обновить конференции до версии 3.3.x.

Авторизация на сайте + связь регистрации с авторизацией

Форум для авторов модов для phpBB 2.0.x.
Michael_ukr
phpBB 1.0.0
Сообщения: 2
Стаж: 15 лет 1 месяц

Авторизация на сайте + связь регистрации с авторизацией

Сообщение Michael_ukr »

У меня такая вот проблемка в phpBB 2.0.19:

Хочу связать регистрацию на форуме с входом на самом сайте (читать данные с БД форума) ну и еще добавить одну проверочку на логин. Суть в том, что я никак не могу разобратся почему при проверке на логин (функция CombatsInfo() ) не работает. Сама функция проверена, она рабочая.

Ошибка в том, что при проверке в любом случае результат получается FALSE

в usercp_register.php добавил функцию

Код: Выделить всё

function CombatsInfo($login)
{
	$login=urlencode($login);
	$arr=file("http://angelscity.combats.ru/inf.pl?login=".$login."&short=1");
	$res=array();
	for($i=0;$i<count($arr);$i++){
	  if($i!=28){
		$temp_arr=explode("=",$arr[$i]);
		$res[$temp_arr[0]]=$temp_arr[1];
	  }else{
		$res['objects']=$arr[$i];	
	  }
	}
return $res;
}

после

Код: Выделить всё

if ( $mode == 'register' )
	{
		if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
		}
вставляю

Код: Выделить всё

//************         Проверка логина       ***************************//

		$temp_combats=CombatsInfo( $username );
		if (  $temp_combats['login'] !== trim( urlencode( $username ) ) || $temp_combats['blocked']==1 )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' )  . $lang['Non_Combats_Login']  ;

		}
//************     Конец проверки логина     ***************************//
в файле майнязыка прописал сообщение об ошибке
$lang['Non_Combats_Login'] = 'Ваш логин для регистрации должен быть такой-же как и в БК';

где баг?

И еще одно... С главной странички пытаюсь законектится к БД

Код: Выделить всё

<?php 

$result = "Произошла неизвестная ошибка. Обратитесь к администратору."; 

$sql_link = @mysql_connect("localhost", "********", "*********") or die("Ошибка SQL: Невозможно подключится к серверу"); 
@mysql_select_db("*********") or die("Ошибка SQL: Невозможно подключится к выбранной таблице"); 

if (@!($_REQUEST['username'])) 
{ $result = "Не введено имя пользователя."; } 
elseif (@!($_REQUEST['password'])) 
{ $result = "Не введен пароль."; } 
else 
{ 
$sqlresult = sqlPerformSelect("SELECT user_id, username, user_password FROM " . $config['mysql_forum_prefix'] . "users WHERE username = '" . mysql_escape_string($_REQUEST['username']) . "' LIMIT 1"); 

while ($temp2 == mysql_fetch_assoc($sqlresult)) 
{ 
if ($temp2['user_password'] == md5($_REQUEST['password'])) 
{ 
$_SESSION['id'] = $temp2['user_id']; 
$_SESSION['name'] = $temp2['username']; 
$result = "Вход выполнен успешно. Здравствуйте, " . htmlspecialchars($temp2['username']) . "!"; 
} 
} 
} 

$url = "index.php"; 
if (isset($_REQUEST['backmod'])) 
{ 
if (($_REQUEST['backmod'] != "login") && ($_REQUEST['backmod'] != "logout") && ($_REQUEST['backmod'] != "")) 
{ 
$url = "index.php?mod=" . urlencode($_REQUEST['backmod']); 
} 
} 
designRedirect($result, $url); 
?> 
При проверке скрипта на "работоспособность" у меня на мониторчике такая вот беда:

Код: Выделить всё

Internal Server Error 
The server encountered an internal error or misconfiguration and was unable to complete your request. 
Please contact the server administrator, *************** and inform them of the time the error occurred, and anything you might have done that may have caused the error. 

More information about this error may be available in the server error log. 


Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 

Apache/1.3.33 Server at ********** Port 80 
Где собака зарыта? Вообще не могу въехать
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 16 лет 6 месяцев
Поблагодарили: 13 раз

Сообщение VVVas »

Michael_ukr
Сразу предупреждаю, я вообще не мозг, просто хочу обратить внимание на это http://www.phpbbguru.net/community/viewtopic.php?t=5495 мало ли.
Прошу прощения если не прав.
я люблю daft punk | новый sugoi.ru
Michael_ukr
phpBB 1.0.0
Сообщения: 2
Стаж: 15 лет 1 месяц

Сообщение Michael_ukr »

VVVas писал(а):Michael_ukr
Сразу предупреждаю, я вообще не мозг, просто хочу обратить внимание на это http://www.phpbbguru.net/community/viewtopic.php?t=5495 мало ли.
Прошу прощения если не прав.
Это пока не нужно... сейчас больше проблема в первой половине (тоесть в проверке логина с помощью функции CombatsInfo() )
Valtasar
phpBB 1.0.0
Сообщения: 4
Стаж: 15 лет 1 месяц
Откуда: Россия

Сообщение Valtasar »

гмм, у меня похожая задача тоже для клансайта онлайн игры, правда не БК :wink:

авторизацию на самом сайте я не хочу делать вообще, поэтому просто сделал с основной страницы сайта форму авторизации, которая сразу отправляет логин и пасс скрипту login.php phpBB-форума

но дальше надо на главной странице определять: вошел юзер или нет, хотел это cделать путем проверки ид сессий $PHPSESSID, добавил в файлы форума старт сессий, но как я понял любые левые глобал переменные просто уничтожаются скриптами форума

проверку по полю session_id из таблицы sessions форума тоже не получается сделать, т.к. сгенерить аналогичный session_id ведь на нефорумной странице не получается...

если у кого то есть умные мысли как показать нефорумным страницам сайта, что юзер вошел на форум, буду очень признателен! :?
Аватара пользователя
YogSagot
phpBB 1.4.3
Сообщения: 98
Стаж: 15 лет
Откуда: Латвия, г.Даугавпилс

Сообщение YogSagot »

Мои эксперементы по теме:

Код: Выделить всё

<?php
define('IN_PHPBB', true);
$phpbb_root_path = 'phpbb/';
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);
//
// End session management
//
    if (!$userdata['session_logged_in'])
    {
        print '<form action="'.append_sid($phpbb_root_path.'login.'.$phpEx).'" method="post">';
        print 'Login: <input name="username" type="text" value=""><br />';
        print 'Password: <input name="password" type="password" value=""><br />';
        print 'Autologin: <input name="autologin" type="checkbox" value="ON">';
        print '<input name="redirect" type="hidden" value="../index.php">';
        print '<input name="login" type="submit" value="Send">';
        print '</form>';
   }
   else
   {
        print 'Hallo, '.$userdata['username'].'<br />';
        print '<a href="'.$phpbb_root_path.'login.'.$phpEx.'?logout=true&sid='.$userdata['session_id'].'&redirect=../index.php">Logout</a>';
    }
?>
Последний раз редактировалось YogSagot 17.04.2006 1:58, всего редактировалось 1 раз.
Аватара пользователя
Никто
Advanced Lamers Team
Сообщения: 316
Стаж: 15 лет 4 месяца
Откуда: Химки
Забанен: Бессрочно

Сообщение Никто »

YogSagot
Вы сдурели? Здесь рассматривается под phpBB какой нафих
YogSagot писал(а):print
???
Долой edgar'a - самого тупого юзера на форуме!
Аватара пользователя
YogSagot
phpBB 1.4.3
Сообщения: 98
Стаж: 15 лет
Откуда: Латвия, г.Даугавпилс

Сообщение YogSagot »

Никто

Нет, я не сдурел. Представленный код не являеться непосредственно кодом phpbb. Это чисто тестовый код, который я написал в целях выявления возможности интегрировать пхпббшную авторизацию с сайтом. Все, что делает этот код - если юзер не авторизированный, выводит форму, иначе же приветствует юзера и выдает ссылку на логаут.

Сдаеться мне, обращаться к темплейтам ради столь тривиальной, причем чисто тестовой задачи по меньшей мере неразумно.

Я думал, вы догадаетесь...
Аватара пользователя
Никто
Advanced Lamers Team
Сообщения: 316
Стаж: 15 лет 4 месяца
Откуда: Химки
Забанен: Бессрочно

Сообщение Никто »

YogSagot
Вы уж извините, но в случае с phpbb это необходимо. Нету ни одной строчки кода во всем phpbb с echo или print или др.
Долой edgar'a - самого тупого юзера на форуме!
Аватара пользователя
YogSagot
phpBB 1.4.3
Сообщения: 98
Стаж: 15 лет
Откуда: Латвия, г.Даугавпилс

Сообщение YogSagot »

Никто

Я еще раз говорю. Это не код phpbb, это код скрипта моего собственного сайта. Если я захочу, я приведу его хоть к темплейтам, хоть к чему. Если я залезу в код борды, что уже случалось, то там ни единого принта я себе не позволю. А в своих скриптах я волен делать что угодно и могу руководствоваться лишь соображениями собственного удобства.

Темой топика была интеграция сайта с бордой. То есть как раз та тема, что меня счас сильно волнует. У меня уже написан сайт, написан уже приличное время назад. Да, там все на принтах. Но во первых, тогда это было не критично. И во вторых, и это главное, тогда на сайте не то, что борда не стояла - к сайту даже БД не была подключена, весь контент в тексовиках хранился. Естественно, что в такой ситуации руководствоваться стилем кода phpbb, который я тогда в глаза еще не видел, я не мог и не испытывал в этом ни малейшей потребности. Теперь к уже существующему коду я хочу добавить phpbb-шную авторизацию. Что, я должен все свои старые скрипты переписывать под бб-шные темплейты только от того, что я к уже существующему коду добавил шесть строк бб-шного стандартного старта сессии? Вовсе не обязан.

Так что, чем придираться к столь второстепенным в данном случае вещям, лучше бы оценили сам код с точки зрения рабочей логики. А именно - код старта сессии, содержимое формы логина и корректность ссылки на логаут. Больше мне от вас ничего не требуеться.

зы. А в каком стиле пишеться бб-шный код, я знаю. Сабжчитал.
Аватара пользователя
Борода
phpBB 1.0.0
Сообщения: 9
Стаж: 15 лет
Откуда: Астрахань

Сообщение Борода »

YogSagot
Респект... заюзал код у себя... сенкс...

Всё как по нотам...
Я не тот человек, не в том месте, не в то время - это история моей жизни...
-----------------
Мои жизненные принципы...
Аватара пользователя
Alf
phpBB 1.4.1
Сообщения: 45
Стаж: 15 лет 8 месяцев
Откуда: Архангельск

Сообщение Alf »

Раньше я тоже делал как описано выше, но потом столкнулся с парочкой проблем связанных с совмещением переменных подгружаемых common.php, да и ни к чему каждый раз подключать весь раздел инициализации phpBB со всякими дополнительными классами типа $db, которые вам в принципе и не нужны. Зачем лишний раз напрягать процессор?
Я взял стандартный auth.php из includes потратил пять минут времени на то чтобы переписать его под свой сайт, т.е. заменил константы, избавился от класса $db заменив их прямыми операторами, прописал настройки куки стационарно.

теперь просто в любую страницу сайта добавляю:

include('inc/auth.php');
$userdata=session_pagestart($user_ip,-16);

ну -16 - это конечно мой индекс всяких там внутренних страниц сайта, у меня например фотогалерея своя написана на основе авторизации из phpBB.

Добавлено спустя 4 минуты 52 секунды:

А забыл еще, я добавил в конец auth.php

Код: Выделить всё

$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
$ip_sep = explode('.', $client_ip);
$user_ip = sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
Рулевой по развлекательной жизни Архангельска
Аватара пользователя
Artas
phpBB 1.2.0
Сообщения: 15
Стаж: 14 лет 11 месяцев
Забанен: Бессрочно

Сообщение Artas »

Никто, сам ты сдурел, не путай людей

YogSagot, спасибо
Sver4koff
phpBB 1.4.0
Сообщения: 31
Стаж: 14 лет 6 месяцев

Сообщение Sver4koff »

подскажите, пожалуйста, как сделать чтоб в срипте, приведенном выше, при авторизации меня кидало не на index.php в корне сайта, а на другую страничку в каком-то из каталогов, например /phpbb/index.php

спасибо
Sver4koff
phpBB 1.4.0
Сообщения: 31
Стаж: 14 лет 6 месяцев

Сообщение Sver4koff »

сорри за тупой вопрос. сейчас аж сам прозрел че такое спросил :wink:
Boss_ak
phpBB 1.0.0
Сообщения: 6
Стаж: 14 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение Boss_ak »

Сделал все по методике YogSagot, все работает вот только когда захожу в на форум ошибка
Fatal error: Cannot redeclare class template in D:\sait\forums\includes\template.php on line 30
[/code]

Вернуться в «Для авторов (phpBB 2.0.x)»