Страница 2 из 3

Добавлено: 05.11.2006 18:08
YogSagot
Boss_ak писал(а):Fatal error: Cannot redeclare class template in D:\sait\forums\includes\template.php on line 30
Как-то не так вы, видимо, делали. Почему у вас дважды подключаеться файл common.php, это я вас должен спросить.

Добавлено: 12.11.2006 17:43
OkisL
Помогите, пожалуйста. Ув. 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>';
}
?>
работает, но когдя пользователь не вошёл ещё, выскакивает:

Warning: Cannot modify header information - headers already sent by (output started at x:\home\my-site.ru\www\avtor.php:4) in x:\home\my-site.ru\www\forum\includes\sessions.php on line 254

Warning: Cannot modify header information - headers already sent by (output started at x:\home\my-site.ru\www\avtor.php:4) in x:\home\my-site.ru\www\forum\includes\sessions.php on line 255

А ниже нормальные окна для логина и пароля.

avtor.php в корне сайта - это страница для редиректа

Второй вопрос, как выводить аватару одновременно с именем пользователя?

Третий вопрос. Как сделать так, чтобы при ошибочном пароле я попадал не на форум, а на всё тот же avtor.php? Я имею ввиду авторизацию на сайте а не на форуме.

Всё делаю на виртуальном сервере Денвер.

Добавлено: 17.11.2006 2:10
Sver4koff
помести весь код, который находиться до "End session management" в начало страницы и ошибки выскакивать не будут

Добавлено: 06.01.2007 10:54
ADSoft
Уважаемые, простите за неграмотность...как бы данный скрипт переделать так.. чтобы не было форм ?
то есть есть например на моем сайте переменные

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

$username = 'aaa';
$password = 'bbb';
как с их помощью авторизироваться на форуме например по ссылке?

Добавлено: 06.01.2007 11:00
rxu
ADSoft
Если конспективно, то передавать пароль в формате MD5 и редактировать login.php.
Или Вам готовое нужно?

Добавлено: 06.01.2007 11:07
ADSoft
мд5 - не проблемм.... вопрос как передавать!
и в чем редактировать логин? если есть готовое и не жалко - я бы посмотрел

Добавлено: 06.01.2007 12:11
rxu
Нет, готового нет. А не боитесь (сколько уже раз обсуждалось!) передавать пароль открыто, по ссылке?

Добавлено спустя 7 минут 12 секунд:

А в принципе, Ваш выбор :)
Смысл такой. Заходите в login.php, находите:

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

		$username = isset($HTTP_POST_VARS['username']) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
		$password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : '';
Заменяете на

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

		$username = isset($HTTP_POST_VARS['username']) ? phpbb_clean_username($HTTP_POST_VARS['username']) : isset($HTTP_GET_VARS['username']) ? phpbb_clean_username($HTTP_GET_VARS['username']) : '';
		$password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : isset($HTTP_GET_VARS['password']) ? $HTTP_GET_VARS['password'] : '';
После этого можно авторизоваться по ссылке типа
http://localhost/login.php?login=1&user ... ssword=222

Добавлено: 06.01.2007 14:34
ADSoft
rxu писал(а):Нет, готового нет. А не боитесь (сколько уже раз обсуждалось!) передавать пароль открыто, по ссылке?

...
После этого можно авторизоваться по ссылке типа
http://localhost/login.php?login=1&user ... ssword=222
а каков безопасный вариант? пусть не по ссылке... но без формы? и с отключеными куки...

Добавлено: 06.01.2007 15:26
rxu
ADSoft
Вы хоть поясните условие задачи. Что требуется получить?

Добавлено: 06.01.2007 15:46
ADSoft
rxu писал(а):ADSoft
Вы хоть поясните условие задачи. Что требуется получить?
Есть сайт на CMS ... вопрос совместной регистрации решил...
теперь хочется так - если чел зарегился на сайте и в данный момент аутентифицирован системой.... то при нажатии например на ссылку Форум - переходит на phpBB и там уже тоже залогинен и свободно общается..... вот
кроме как передачей в ссылке простого способа не вижу....

Добавлено: 06.01.2007 16:09
rxu
Если без ссылки и без формы, тогда, видимо, придётся портировать на главную страницу сайта часть кода из login.php, связанную с созданием форумной сессии (session_begin), с подключением ряда файлов пакета phpBB (т.е. include extension.inc, common.php).

Добавлено: 06.01.2007 23:56
ADSoft
ладна... спасиба... буду думать[/list]

Добавлено спустя 7 часов 38 минут 27 секунд:

нда.. думать - видимо не мой конек... :D

1. Переделал как было продложено, по ссылке типа .... не заходит ... грит типа нету такого пользователя/пароля вот

2. Что значить портировать и что именно?
мне бы смысл авторизациии догнать ....

Добавлено: 09.01.2007 18:59
wce
phpbb 2.0.21.

сделал проверку логина юзера по мануалу. без append_sid. открываю скрипт в браузере: извините вы не вошли на форуме. залогиньтесь на форуме и возвращайтесь. и пишет логин снизу текущий: anonymous.

мой код:

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

<?php

define('IN_PHPBB', true);
$phpbb_root_path = '../forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

if( $userdata['session_logged_in'] ) {
    [здесь у меня еще пару конструкций if else]
}
else {
    [сообщение о том что не залогинился на форуме]
}
то есть проверка на логин, я так понимаю, проходит, но потом почему отфутболивает.

если поставить if( !$userdata['session_logged_in'] ) { - открывает мою оболочку но проверка на логин не производится я так понимаю.

где грабли?

Добавлено: 10.01.2007 19:42
wce
добавка к своему посту выше:
перемещаю свой скрипт из внешней папки в папку форума - проверка авторизации работает как часы. даже ник мой показывает. перемещаю обратно во внешнюю папку - опять не работает.

Добавлено: 10.01.2007 19:53
rxu
wce
Может, с $phpbb_root_path что-то напутали?