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

[ALPHA] phpbb2_cutenews_2.5.4

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 19 лет 3 месяца
Откуда: Москва

[ALPHA] phpbb2_cutenews_2.5.4

Сообщение avm »

Данный мод был написан по просьбе одного из участников форума phpBB, выкладываю его здесь а не в привате, поскольку я его не тестировал на phpBB вообще, и соответственно далее могут поползти правки, а где это делать удобнее чем здесь? :wink:

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

#
#---[ COPY ]---
#
copy usr_registration.php to includes/usr_registration.php
#
#-----[ DIY INSTRUCTIONS ]----------------------------------
#
Set correct path to your CuteNews 2.5.4 in file includes/usr_registration.php (line 10)
#
#---[ OPEN ]---
#
includes/usercp_register.php
#
#---[ FIND ]---
#
  if ( !$error )
  {
      $new_password = md5($new_password);
#
#---[ BEFORE, ADD ]---
#
                        $usr_username = $row['username'];
                        $usr_password = $new_password;
#
#---[ FIND (2x) ]---
# this would be found twice...
#
  message_die(GENERAL_MESSAGE, $message);
#
#---[ BEFORE, ADD ]---
# 
                include($phpbb_root_path.'includes/usr_registration.'.$phpEx);
#
#---[ SAVE/CLOSE ALL FILES ]---
#
Особенности: CuteNews 2.5.4 (скрипт ленты новостей с администрированием) ныне является устаревшим и больше не поддерживается, поэтому у данного мода нет перспектив, но он может послужить "частичным" примером того как можно при регистрации/изменении_профиля пользователя phpBB вносить изменения в БД другого программного продукта...

"частичным" - потому что не предусматривает корректную отработку случаев активации учетной записи админом или по почте (он просто сразу при регистрации/изменнии_данных_профиля пользователя создает/обновляет его запись в БД CuteNews - это продиктовано самой программой CuteNews).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось avm 05.07.2006 18:37, всего редактировалось 3 раза.
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
PROhvost
phpBB 1.4.0
Сообщения: 35
Стаж: 18 лет 4 месяца

Сообщение PROhvost »

Я что то не правильно сделал, после регистрации на форуме, в новостях этот пользователь не появляется. Может быть путь к папке со скриптом новостей не правильный, у меня так mysite.ru/personal/, т.е. в папке personal стоит новостной скрипт, в файле usr_registration.php в строке 10 написал, ./personal , ничего не получилось, может не то совсем пишу?
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение avm »

PROhvost путь к папке новостей нужно писать полностью от корня...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
PROhvost
phpBB 1.4.0
Сообщения: 35
Стаж: 18 лет 4 месяца

Сообщение PROhvost »

avm Нет конекта, не пойму в чем дело...
У меня так:
домен/personal : тут новости
домен/forum : тут форум
Получается что $cutepath = "./../personal";
Аватара пользователя
Nikel
phpBB 2.0.5
Сообщения: 496
Стаж: 18 лет 11 месяцев
Откуда: Киев

Сообщение Nikel »

PROhvost
Как подсказывают мне звезды , нужнобы попробывать
PROhvost писал(а):$cutepath = "../personal/";
Хочешь помочь коллеге- поделись опытом, хочешь помочь профессионалу-отойди и не мешай, хочешь помочь дураку... Сам дурак
PROhvost
phpBB 1.4.0
Сообщения: 35
Стаж: 18 лет 4 месяца

Сообщение PROhvost »

А есть ли возможность сделать вход на форум через сайт, у меня есть наработки, мод писал Ramzes:

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


# 
#-----[ OPEN ]------------------------------------------ 
# 

copy root/rmeConfig.php to forum/rmeConfig.php
copy root/rmeConfig.php to personal/rmeConfig.php
# 
#-----[ OPEN ]------------------------------------------ 
# 

personal/head.php
# 
#-----[ FIND ]------------------------------------------ 
# 

    if ($action == 'dologin'){
        $sql->update(array(
        'table'  => 'users',
        'where'  => array("username = $username"),
        'values' => array('last_visit' => (time() + $config_date_adjust * 60))
        ));

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 

	// [start] rmeMods
	include($cutepath . '/rmeConfig.php');
	define('IN_PHPBB', TRUE);
	$phpbb_root_path = $cutepath . '/' . $forum_root_path;
	include($cutepath . '/' . $forum_root_path . 'extension.inc');
	include($cutepath . '/' . $forum_root_path . 'config.php');
	include($cutepath . '/' . $forum_root_path . 'includes/constants.php');

	$prefix = $sql->prefix;
	$sql->prefix = '';
	$query = $sql->select(array('select' => array('user_id', 'username', 'user_password', 'user_active', 'user_level', 'user_login_tries', 'user_last_login_try'), 'table' => USERS_TABLE, 'where' => array("username = $username")));
	foreach ($query as $row)
	{
		list($sec, $usec) = explode(' ', microtime());
		mt_srand((float) $sec + ((float) $usec * 100000));
		$session_id = md5(uniqid(mt_rand(), true));
		$sql->insert(array(
			'table'  => SESSIONS_TABLE,
			'values' => array(
				'session_id'		=> $session_id,
				'session_user_id'	=> $row['user_id'],
				'session_start'		=> time(),
				'session_time'		=> time(),
				'session_ip'		=> $user_ip,
				'session_page'		=> 0,
				'session_logged_in' => 1,
				'session_admin'		=> 0
				)
			)
		);

		$sql->update(array(
			'table'  => USERS_TABLE,
			'where'  => array("user_id = " . $row['user_id']),
			'values' => array('user_login_tries' => 0, 'user_last_login_try' => 0)
			)
		);

		$sessiondata['autologinid'] = '';
		$sessiondata['userid'] = $row['user_id'];

		$query = $sql->select(array('table' => CONFIG_TABLE));
		foreach ($query as $config)
		{
			if ( $config['config_name'] == 'cookie_domain' ) { $cookiedomain = $config['config_value']; }
			if ( $config['config_name'] == 'cookie_path' ) { $cookiepath = $config['config_value']; }
			if ( $config['config_name'] == 'cookie_name' ) { $cookiename = $config['config_value']; }
			if ( $config['config_name'] == 'cookie_secure' ) { $cookiesecure = $config['config_value']; }
		}

		setcookie($cookiename . '_data', serialize($sessiondata), time() + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
		setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);
		$sql->update(array(
			'table'  => USERS_TABLE,
			'where'  => array("user_id = " . $row['user_id']),
			'values' => array('user_login_tries' => 0, 'user_last_login_try' => 0))
		);
	}

	$sql->prefix = $prefix;
	// [end] rmeMods

# 
#-----[ OPEN ]------------------------------------------ 
# 

forum/login.php

# 
#-----[ FIND ]------------------------------------------ 
# 

					$admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0;
					$session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 

					// [start] rmeMods
					include($phpbb_root_path . 'rmeConfig.php');
					$cmd5_password = md5(md5($password));
					setcookie('lastusername', $username, time() + 1012324305, $news_cookie_path);
					setcookie('username', $username, time() + 3600 * 24 * 365, $news_cookie_path);
					setcookie('md5_password', $cmd5_password, time() + 3600 * 24 * 365, $news_cookie_path);
					// [end] rmeMods

Файл rmeConfig.php

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


<?php
$forum_root_path = '../forum/';
$news_root_path = '../personal/';
$news_cookie_path = '/int/personal';

if ( !isset($user_ip) )
{
	if ( !function_exists(encode_ip) )
	{
		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]);
		}
	}

	$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') );
	$user_ip = encode_ip($client_ip);
}

if ( !function_exists(GetID) )
{
	function GetID($size)
	{
		mt_srand((double) microtime() * 1000000);
		for ( $i = 1; $i <= $size; $i++ )
		{
			$random = mt_rand(1, 30);
			if ( $random <= 10 )
			{
				$sid .= chr(mt_rand(65, 90));
			}
			else if ( $random <= 20 )
			{
				$sid .= mt_rand(0, 9);
			}
			else
			{
				$sid .= chr(mt_rand(97, 122));
			}
		}

		return $sid;
	}
}

?>
но происходит следующая ошибка: при авторизации через сайт все проходит успешно, но если разлогинится и снова авторизовать то в таблицу phpbb_sessions идет повторная запись ID юзера который авторизовался, при этом получается две одинаковых записи и при выходе с форума логин остается в списке онлайн и соответственно остается запись в таблице phpbb_sessions. Как можно это поправить?
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение avm »

PROhvost писал(а):но если разлогинится и снова авторизовать то
разлогиниться где? на сайте опять же? ну так и нужно в том куске где происходит обработка разлогинивания сделать запрос на удаление записи "FROM SESSIONS_TABLE WHERE session_user_id = $user_id"
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
PROhvost
phpBB 1.4.0
Сообщения: 35
Стаж: 18 лет 4 месяца

Сообщение PROhvost »

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

Вернуться в «Бета-версии модов для phpBB 2.0.x»