Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
Проблемы с установкой или работой phpBB 3.1.x? Получите помощь здесь!
С 1 июля 2018 года phpBB Group прекращает поддержку phpBB версии 3.1.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.1 до 1 января 2019 года.
Подробнее:
Окончание поддержки phpBB 3.1 .
Alecto
phpBB 3.0.12
Сообщения: 2857 Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз
Сообщение
Alecto » 05.11.2014 1:34
есть папка со скриптом, но доступ к скрипту должны иметь только зарегистрированные пользователи.
в 30 для проверки, зарегистрирован пользователь или нет использовался следующий код:
Код: Выделить всё
<?php
define("DOCROOT", $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR);
// charset
header("Content-type: text/html; charset=UTF-8");
// session
session_start();
include 'classes/Upload.php';
include 'classes/Crop.php';
define('IN_PHPBB', TRUE);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include $phpbb_root_path.'common.'.$phpEx;
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
if ($user->data['user_id'] == ANONYMOUS)
{
login_box('', $user->lang['LOGIN']);
}
?>
в 31 появилась вот такая ошибка.
Общая ошибка
Попытка перенаправления на потенциально опасный сайт.
BACKTRACE
FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()
FILE: [ROOT]/includes/functions.php
LINE: 2300
CALL: trigger_error()
FILE: [ROOT]/includes/functions.php
LINE: 2878
CALL: redirect()
FILE: [ROOT]/ucp.php
LINE: 84
CALL: login_box()
помогите поправить для новой версии.
Alecto
Anvar
Former team member
Сообщения: 1965 Стаж: 14 лет
Благодарил (а): 57 раз
Поблагодарили: 625 раз
Сообщение
Anvar » 05.11.2014 7:59
login_box('', $user->lang['LOGIN']);
Замени на:
Код: Выделить всё
login_box(request_var('redirect', "index.$phpEx"));
Anvar
Alecto
phpBB 3.0.12
Сообщения: 2857 Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз
Сообщение
Alecto » 05.11.2014 8:27
в 30 было как:
если зарегистрированный пользователь переходит по адресу mysite/crop/
- он получает доступ к скрипту.
если гость переходит по адресу mysite/crop/
- он сначала попадает в форму логина, после успешного завершения которого редиректится к mysite/crop/
сейчас ошибка пропала, но редирект после успешного логина выполняется на index.php
вместо mysite/crop/
Alecto
Anvar
Former team member
Сообщения: 1965 Стаж: 14 лет
Благодарил (а): 57 раз
Поблагодарили: 625 раз
Сообщение
Anvar » 05.11.2014 8:43
Тогда надо определить текущую страницу.
Добавить перед:
Код: Выделить всё
function request_url($get_path = false, $clear = false)
{
global $config, $user;
$server_name = $user->host;
$server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT');
// Forcing server vars is the only way to specify/override the protocol
if ($config['force_server_vars'] || !$server_name)
{
$server_protocol = ($config['server_protocol']) ? $config['server_protocol'] : (($config['cookie_secure']) ? 'https://' : 'http://');
$server_name = $config['server_name'];
$server_port = (int) $config['server_port'];
$url = $server_protocol . $server_name;
$cookie_secure = $config['cookie_secure'];
}
else
{
// Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection
$cookie_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0;
$url = (($cookie_secure) ? 'https://' : 'http://') . $server_name;
}
if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80)))
{
// HTTP HOST can carry a port number (we fetch $user->host, but for old versions this may be true)
if (strpos($server_name, ':') === false)
{
$url .= ':' . $server_port;
}
}
// Strip / from the end
//if (substr($url, -1, 1) == '/')
//{
// $url = substr($url, 0, -1);
//}
if (isset($_SERVER['REQUEST_URI']))
{
$url .= $_SERVER['REQUEST_URI'];
}
else if (isset($_SERVER['argv']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['argv'][0];
}
else if (isset($_SERVER['QUERY_STRING']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['QUERY_STRING'];
}
else
{
$url .= $_SERVER['SCRIPT_NAME'];
}
if ($get_path)
{
$url_delim = (strpos($url, '?') === false) ? '?' : ((strpos($url, '?') === strlen($url) - 1) ? '' : '&');
if($clear)
{
$url_delim = array($url_delim . $get_path, '&' . $get_path, '?' . $get_path, $get_path);
$url = str_replace($url_delim, "", $url);
}
else
{
$url .= $url_delim . $get_path;
}
}
return $url;
}
и уже использовать:
login_box(request_var('redirect', request_url()));
Anvar
Alecto
phpBB 3.0.12
Сообщения: 2857 Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз
Сообщение
Alecto » 05.11.2014 8:48
а на что тогда в login_box(request_var('redirect', "index.$phpEx"));
"index.$phpEx"
поменять?
Alecto
Anvar
Former team member
Сообщения: 1965 Стаж: 14 лет
Благодарил (а): 57 раз
Поблагодарили: 625 раз
Сообщение
Anvar » 05.11.2014 8:54
Anvar писал(а): login_box(request_var('redirect', request_url()));
Полностью строку поменяй.
Anvar
Alecto
phpBB 3.0.12
Сообщения: 2857 Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз
Сообщение
Alecto » 05.11.2014 9:02
сделал все как вы писали.
ошибка
Illegal use of $_SERVER. You must use the request class or request_var() to access input data. Found in /home/motobrat/public_html/crop/conf.php on line 32. This error message was generated by deactivated_super_global.
BACKTRACE
FILE: (not given by php)
LINE: (not given by php)
на всякий случай привожу полный код файла.
Код: Выделить всё
<?php
define("DOCROOT", $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR);
// charset
header("Content-type: text/html; charset=UTF-8");
// session
session_start();
include 'classes/Upload.php';
include 'classes/Crop.php';
define('IN_PHPBB', TRUE);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include $phpbb_root_path.'common.'.$phpEx;
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
if ($user->data['user_id'] == ANONYMOUS)
{
login_box(request_var('redirect', request_url()));
}
function request_url($get_path = false, $clear = false)
{
global $config, $user;
$server_name = $user->host;
$server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int) $_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT');
// Forcing server vars is the only way to specify/override the protocol
if ($config['force_server_vars'] || !$server_name)
{
$server_protocol = ($config['server_protocol']) ? $config['server_protocol'] : (($config['cookie_secure']) ? 'https://' : 'http://');
$server_name = $config['server_name'];
$server_port = (int) $config['server_port'];
$url = $server_protocol . $server_name;
$cookie_secure = $config['cookie_secure'];
}
else
{
// Do not rely on cookie_secure, users seem to think that it means a secured cookie instead of an encrypted connection
$cookie_secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 1 : 0;
$url = (($cookie_secure) ? 'https://' : 'http://') . $server_name;
}
if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80)))
{
// HTTP HOST can carry a port number (we fetch $user->host, but for old versions this may be true)
if (strpos($server_name, ':') === false)
{
$url .= ':' . $server_port;
}
}
// Strip / from the end
//if (substr($url, -1, 1) == '/')
//{
// $url = substr($url, 0, -1);
//}
if (isset($_SERVER['REQUEST_URI']))
{
$url .= $_SERVER['REQUEST_URI'];
}
else if (isset($_SERVER['argv']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['argv'][0];
}
else if (isset($_SERVER['QUERY_STRING']))
{
$url .= $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['QUERY_STRING'];
}
else
{
$url .= $_SERVER['SCRIPT_NAME'];
}
if ($get_path)
{
$url_delim = (strpos($url, '?') === false) ? '?' : ((strpos($url, '?') === strlen($url) - 1) ? '' : '&');
if($clear)
{
$url_delim = array($url_delim . $get_path, '&' . $get_path, '?' . $get_path, $get_path);
$url = str_replace($url_delim, "", $url);
}
else
{
$url .= $url_delim . $get_path;
}
}
return $url;
}?>
Alecto
rxu
phpBB Guru
Сообщения: 16367 Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза
Сообщение
rxu » 05.11.2014 9:14
Alecto
Добавьте в global И используйте класс $request.
rxu
Anvar
Former team member
Сообщения: 1965 Стаж: 14 лет
Благодарил (а): 57 раз
Поблагодарили: 625 раз
Сообщение
Anvar » 05.11.2014 9:21
Забыл что $_SERVER в phpBB3.1 не доступна.
Функцию переделал. Проверить не могу, так как у меня нет сейчас затей.
Код: Выделить всё
<?php
define("DOCROOT", $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR);
// charset
header("Content-type: text/html; charset=UTF-8");
// session
session_start();
include 'classes/Upload.php';
include 'classes/Crop.php';
define('IN_PHPBB', TRUE);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include $phpbb_root_path.'common.'.$phpEx;
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
if ($user->data['user_id'] == ANONYMOUS)
{
login_box(request_var('redirect', request_url()));
}
function request_url()
{
global $config, $user, $request;
$server_name = $user->host;
$server_port = $request->server('SERVER_PORT');
$server_protocol = ($config['server_protocol']) ? $config['server_protocol'] : (($config['cookie_secure']) ? 'https://' : 'http://');
$server_name = $config['server_name'];
$server_port = (int) $config['server_port'];
$url = $server_protocol . $server_name;
$cookie_secure = $config['cookie_secure'];
if ($server_port && (($cookie_secure && $server_port <> 443) || (!$cookie_secure && $server_port <> 80)))
{
if (strpos($server_name, ':') === false)
{
$url .= ':' . $server_port;
}
}
$url .= $request->server('SCRIPT_NAME') .'?'. $request->server('QUERY_STRING');
return $url;
}
?>
Anvar
rxu
phpBB Guru
Сообщения: 16367 Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза
Сообщение
rxu » 05.11.2014 9:24
Anvar писал(а): $server_port = (!empty($request->server('SERVER_PORT'))) ? (int) $request->server('SERVER_PORT') : (int) getenv('SERVER_PORT');
Последнее лишнее, getenv используется в самом методе $request->server (эта же логика).
rxu
Alecto
phpBB 3.0.12
Сообщения: 2857 Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз
Сообщение
Alecto » 05.11.2014 9:25
белая страница
Alecto
Anvar
Former team member
Сообщения: 1965 Стаж: 14 лет
Благодарил (а): 57 раз
Поблагодарили: 625 раз
Сообщение
Anvar » 05.11.2014 9:46
Alecto , Изменил пост - проверяй.
Anvar
Alecto
phpBB 3.0.12
Сообщения: 2857 Стаж: 14 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 241 раз
Сообщение
Alecto » 05.11.2014 9:50
заработало: выбросило на логин а потом вернуло на скрипт.
спасибо огромное!
Alecto