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

Форум для авторов модов для phpBB 2.0.x. Здесь можно попросить помощи в разработке у коллег.

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

Сообщение Michael_ukr 31.03.2006 15:51

У меня такая вот проблемка в пхпбб 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


Где собака зарыта? Вообще не могу въехать
Michael_ukr
phpBB 1.0.0
 
Сообщения: 2
Зарегистрирован: 30.03.2006 16:34


Сообщение VVVas 31.03.2006 16:32

Michael_ukr
Сразу предупреждаю, я вообще не мозг, просто хочу обратить внимание на это http://www.phpbbguru.net/community/viewtopic.php?t=5495 мало ли.
Прошу прощения если не прав.
вы нарушили правила конференции, объяснений не будет - сами читайте правила
я люблю daft punk | Активные темы
Аватара пользователя
VVVas
Люмпен Пролетариат
Люмпен Пролетариат
 
Сообщения: 4737
Зарегистрирован: 12.11.2004 1:20
Откуда: RU-MSK

Сообщение Michael_ukr 31.03.2006 16:43

VVVas писал(а):Michael_ukr
Сразу предупреждаю, я вообще не мозг, просто хочу обратить внимание на это http://www.phpbbguru.net/community/viewtopic.php?t=5495 мало ли.
Прошу прощения если не прав.


Это пока не нужно... сейчас больше проблема в первой половине (тоесть в проверке логина с помощью функции CombatsInfo() )
Michael_ukr
phpBB 1.0.0
 
Сообщения: 2
Зарегистрирован: 30.03.2006 16:34

Сообщение Valtasar 11.04.2006 15:25

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

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

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

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

если у кого то есть умные мысли как показать нефорумным страницам сайта, что юзер вошел на форум, буду очень признателен! :?
Valtasar
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 07.04.2006 21:52
Откуда: Россия

Сообщение YogSagot 16.04.2006 16:43

Мои эксперементы по теме:
Код: Выделить всё
<?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 раз.
Аватара пользователя
YogSagot
phpBB 2.0.0
 
Сообщения: 114
Зарегистрирован: 15.04.2006 0:41
Откуда: Латвия, г.Даугавпилс

Сообщение Никто 16.04.2006 22:47

YogSagot
Вы сдурели? Здесь рассматривается под пхпбб какой нафих
YogSagot писал(а):print

???
Долой edgar'a - самого тупого юзера на форуме!
Аватара пользователя
Никто
Advanced Lamers Team
 
Сообщения: 339
Зарегистрирован: 07.01.2006 23:35
Откуда: Химки

Сообщение YogSagot 17.04.2006 2:02

Никто

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

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

Я думал, вы догадаетесь...
Аватара пользователя
YogSagot
phpBB 2.0.0
 
Сообщения: 114
Зарегистрирован: 15.04.2006 0:41
Откуда: Латвия, г.Даугавпилс

Сообщение Никто 17.04.2006 2:48

YogSagot
Вы уж извините, но в случае с phpbb это необходимо. Нету ни одной строчки кода во всем phpbb с echo или print или др.
Долой edgar'a - самого тупого юзера на форуме!
Аватара пользователя
Никто
Advanced Lamers Team
 
Сообщения: 339
Зарегистрирован: 07.01.2006 23:35
Откуда: Химки

Сообщение YogSagot 17.04.2006 12:25

Никто

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

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

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

зы. А в каком стиле пишеться бб-шный код, я знаю. Сабжчитал.
Аватара пользователя
YogSagot
phpBB 2.0.0
 
Сообщения: 114
Зарегистрирован: 15.04.2006 0:41
Откуда: Латвия, г.Даугавпилс

Сообщение Борода 12.05.2006 16:38

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

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

Сообщение Alf 13.05.2006 17:32

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

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

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

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

Добавлено спустя 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]);
Рулевой по развлекательной жизни Архангельска
Аватара пользователя
Alf
phpBB 1.4.2
 
Сообщения: 51
Зарегистрирован: 04.09.2005 15:27
Откуда: Архангельск

Сообщение Artas 23.06.2006 18:27

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

YogSagot, спасибо
Аватара пользователя
Artas
phpBB 1.2.0
 
Сообщения: 15
Зарегистрирован: 02.06.2006 15:10

Сообщение Sver4koff 02.11.2006 5:33

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

спасибо
Sver4koff
phpBB 1.4.0
 
Сообщения: 31
Зарегистрирован: 02.11.2006 5:22

Сообщение Sver4koff 03.11.2006 4:30

сорри за тупой вопрос. сейчас аж сам прозрел че такое спросил :wink:
Sver4koff
phpBB 1.4.0
 
Сообщения: 31
Зарегистрирован: 02.11.2006 5:22

Сообщение Boss_ak 04.11.2006 22:25

Сделал все по методике YogSagot, все работает вот только когда захожу в на форум ошибка

Fatal error: Cannot redeclare class template in D:\sait\forums\includes\template.php on line 30
[/code]
Boss_ak
phpBB 1.0.0
 
Сообщения: 5
Зарегистрирован: 04.11.2006 5:13

След.

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0