在浏览器中编码 url 输出!是 http_referer 还是 phpbb 的问题?
Encoded url output in browser! Is it http_referer or phpbb issue?
我将 phpbb 登录集成到我的网站中。
步骤:进入login.php脚本处理数据,返回referer页面。
注意:这个页面(referer)有类似 page.php?var1=x&var2=y
登录过程后 returns as page.php?var1=x&var2=y 这会在浏览器中产生错误。
我不允许(phpbb)直接使用 $_server[http_referer]。
下面你可以看到来自 login.php 的代码。
我也回显了数据,如你所见,没问题!
$username=addslashes(strip_tags(strtolower(($_REQUEST['username']))));
$password=addslashes(strip_tags($_REQUEST['password']));
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
$te=$request->variable('HTTP_REFERER', '', false, \phpbb\request\request_interface::SERVER);
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$result = $auth->login($username, $password, '', 1, 0);
print_r($result);
if($user->data['is_registered'])
{
echo '<br>//User is already logged in';
}
else
{
if ($result['status'] == LOGIN_SUCCESS)
{
echo '<br>//User was successfully logged into phpBB';
}
else
{
echo '<br>//Users login failed';
}
}
//header('Location:'$te);
echo "location:..".$request->variable('HTTP_REFERER', '', false, \phpbb\request\request_interface::SERVER);
phpBBs $request
class 正在逃避您的 HTTP_REFERER
作为其内置消毒的一部分。要临时启用全局变量,您可以使用 $request->enable_super_globals();
但您必须自己执行 checks/sanitisation 以确保值是安全的。获得值后,您可以使用 $request->disable_super_globals();
再次禁用全局变量
或者,您可以使用 str_replace
取回您的符号字符,这比上面的更安全,因为 class 仍会为您检查和清理...
$te = str_replace('&','&',$request->variable('HTTP_REFERER', '', false, \phpbb\request\request_interface::SERVER));
我将 phpbb 登录集成到我的网站中。
步骤:进入login.php脚本处理数据,返回referer页面。
注意:这个页面(referer)有类似 page.php?var1=x&var2=y
登录过程后 returns as page.php?var1=x&var2=y 这会在浏览器中产生错误。
我不允许(phpbb)直接使用 $_server[http_referer]。
下面你可以看到来自 login.php 的代码。
我也回显了数据,如你所见,没问题!
$username=addslashes(strip_tags(strtolower(($_REQUEST['username']))));
$password=addslashes(strip_tags($_REQUEST['password']));
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
$te=$request->variable('HTTP_REFERER', '', false, \phpbb\request\request_interface::SERVER);
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$result = $auth->login($username, $password, '', 1, 0);
print_r($result);
if($user->data['is_registered'])
{
echo '<br>//User is already logged in';
}
else
{
if ($result['status'] == LOGIN_SUCCESS)
{
echo '<br>//User was successfully logged into phpBB';
}
else
{
echo '<br>//Users login failed';
}
}
//header('Location:'$te);
echo "location:..".$request->variable('HTTP_REFERER', '', false, \phpbb\request\request_interface::SERVER);
phpBBs $request
class 正在逃避您的 HTTP_REFERER
作为其内置消毒的一部分。要临时启用全局变量,您可以使用 $request->enable_super_globals();
但您必须自己执行 checks/sanitisation 以确保值是安全的。获得值后,您可以使用 $request->disable_super_globals();
或者,您可以使用 str_replace
取回您的符号字符,这比上面的更安全,因为 class 仍会为您检查和清理...
$te = str_replace('&','&',$request->variable('HTTP_REFERER', '', false, \phpbb\request\request_interface::SERVER));