Помошь со скриптом

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
nixit
phpBB 1.4.4
Сообщения: 173
Стаж: 15 лет 6 месяцев
Благодарил (а): 13 раз
Поблагодарили: 4 раза

Помошь со скриптом

Сообщение nixit »

Здравствуйте, возникла такая проблема: есть скрипт, цепляющий параметры текущей сессии и передающий их. Конкретно - elfchat.php, он цепляет имя залосненного пользователя и передаёт его чату. Для чего это делается, думаю ясно. Так вот, мне необходимо, чтобы только что зарегистрированные пользователи, входящие в группу "новые пользователи" не имели доступа к чату. Я так понимаю, это делается условием, допустим: если группа админ, модератор, пользователь - цепляет параметры, иначе - нет. Подскажите, как оно будет выглядеть, а то в php я не силён. :roll:
Заранее спасибо.
Последний раз редактировалось FEAR93 27.08.2011 7:45, всего редактировалось 1 раз.
Причина: Перенесено.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Помошь со скриптом

Сообщение Sheer »

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

if ($user->data['user_new'])
{
   trigger_error($user->lang['NOT_AUTHORISED']);
} 
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
nixit
phpBB 1.4.4
Сообщения: 173
Стаж: 15 лет 6 месяцев
Благодарил (а): 13 раз
Поблагодарили: 4 раза

Re: Помошь со скриптом

Сообщение nixit »

Сейчас попробую, мерси.
Что-то не могу сообразить, как не пробовал, результата нет. Куда вставить, код выглядит так:

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

<?php
define( 'ELFCHAT_PATH'  , "./chat/" ); // Путь до файлов, например: /home/mysite/www/forum/chat/
define( 'ELFCHAT_LOCATION', "chat/"); // Адрес редиректа, например: http://mysite/forum/chat/
define( 'YOUR_CHARSET', "utf-8"); // Кодировка форума




define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
//require($phpbb_root_path . 'includes/functions_user.' . $phpEx);
//require($phpbb_root_path . 'includes/functions_module.' . $phpEx);

// Basic parameter data
$id 	= request_var('i', '');
$mode	= request_var('mode', '');

if ($mode == 'login' || $mode == 'logout' || $mode == 'confirm')
{
	define('IN_LOGIN', true);
}

// Start session management
$user->session_begin();
//$auth->acl($user->data);


include_once(ELFCHAT_PATH."kernel/elfchat.php");
if ( $user->data['user_id'] != 1 )
{

	Elfchat::Session()->start();
	if(!Elfchat::Session()->logined())
	{
		Elfchat::Login(
		$user->data['user_id'],
		Elfchat::Session()->IPDetect(),
		iconv(YOUR_CHARSET, "UTF-8", $user->data['username_clean']),
		iconv(YOUR_CHARSET, "UTF-8", $user->data['username'])
		);
		Header("Location: ".ELFCHAT_LOCATION."chat.php");
	}
	else
	{
		Header("Location: ".ELFCHAT_LOCATION."chat.php");
	}
}
else
{
	Header("Location: ".ELFCHAT_LOCATION."index.php");
}

?>
Да, и ещё как исключить ботов?..

Пробовал так:

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

<?php
define( 'ELFCHAT_PATH'  , "./chat/" ); // Путь до файлов, например: /home/mysite/www/forum/chat/
define( 'ELFCHAT_LOCATION', "chat/"); // Адрес редиректа, например: http://mysite/forum/chat/
define( 'YOUR_CHARSET', "utf-8"); // Кодировка форума




define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
//require($phpbb_root_path . 'includes/functions_user.' . $phpEx);
//require($phpbb_root_path . 'includes/functions_module.' . $phpEx);

// Basic parameter data
$id 	= request_var('i', '');
$mode	= request_var('mode', '');

if ($mode == 'login' || $mode == 'logout' || $mode == 'confirm')
{
	define('IN_LOGIN', true);
}

if ($user->data['user_new'])
{
   trigger_error('$user->lang['NOT_AUTHORISED']');
} 
else
{
// Start session management
$user->session_begin();
//$auth->acl($user->data);


include_once(ELFCHAT_PATH."kernel/elfchat.php");
if ( $user->data['user_id'] != 1 )
{

	Elfchat::Session()->start();
	if(!Elfchat::Session()->logined())
	{
		Elfchat::Login(
		$user->data['user_id'],
		Elfchat::Session()->IPDetect(),
		iconv(YOUR_CHARSET, "UTF-8", $user->data['username_clean']),
		iconv(YOUR_CHARSET, "UTF-8", $user->data['username'])
		);
		Header("Location: ".ELFCHAT_LOCATION."chat.php");
	}
	else
	{
		Header("Location: ".ELFCHAT_LOCATION."chat.php");
	}
}
else
{
	Header("Location: ".ELFCHAT_LOCATION."index.php");
}
}
?>
Самый на мой взгляд "верный" вариант, но, новые пользователи всё равно заходят.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Помошь со скриптом

Сообщение Sheer »

nixit писал(а):новые пользователи всё равно заходят.
Еще бы!
Ну вот если самому подумать...
скрипт, цепляющий параметры текущей сессии и передающий их.
А ты втыкаешь условие проверки еще до того, как параметры сессии будут переданы.
Написано же в коде (причем в люмом подобном скрипте)

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

// Start session management
$user->session_begin(); 
Что значит Start session management - перевести?
Короче надо так. Найти

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

$user->session_begin(); 
после вставить

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

if ($user->data['user_new'])
{
   trigger_error($user->lang['NOT_AUTHORISED']);
} 

и усё!
nixit писал(а):как исключить ботов?
Точно так же.

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

if ($user->data['is_bot']) 
значит тогда полное условие проверки

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

if ($user->data['user_new'] or $user->data['is_bot']) 
ЗЫ. Ковыряясь в файлах, включайте debug, если бы вы это сделали бы, ошибку наверняка бы выловили, получив сообщение
[phpBB Debug] PHP Notice: in file /elfchat.php on line 25: Undefined index: user_new
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
nixit
phpBB 1.4.4
Сообщения: 173
Стаж: 15 лет 6 месяцев
Благодарил (а): 13 раз
Поблагодарили: 4 раза

Re: Помошь со скриптом

Сообщение nixit »

О, мерси, убежал пробовать.
Говорю же, в php разбираюсь очень плохо.(

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