2016-02-07 24 views
1

我整合phpbb登錄到我的網站。
步驟:它轉到login.php腳本來處理數據並返回到引用頁面。
注:此頁面(引薦)具有類似page.php文件VAR1 = X & VAR2 = Y 登錄進程後,它返回的page.php文件VAR1 = X & ampvar2 = Y它創建一個錯誤?瀏覽器。
我不允許(通過phpbb)直接使用$ _server [http_referer]。 下面你可以看到來自login.php的代碼。
我也迴應數據,你可以看到,沒關係!在瀏覽器中編碼的url輸出!是http_referer還是phpbb的問題?

$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); 
+0

你好,這真的很複雜嗎,還是我不夠清楚? –

回答

0

phpBBs $request類逃脫你的HTTP_REFERER由於內置了禁制它的一部分。要臨時啓用全局變量,您可以使用$request->enable_super_globals();,但您必須執行自己的檢查/清理以確保值是安全的。一旦你有你的價值,你可以用$request->disable_super_globals();

或者再次禁用全局變量,你可以使用str_replace讓你的符號字符後面比上述安全作爲類仍然會檢查和消毒你...

$te = str_replace('&amp','&',$request->variable('HTTP_REFERER', '', false, \phpbb\request\request_interface::SERVER));

+0

謝謝。很可能就是這樣。但是,爲什麼看起來好像我回應$ te,如上所述? –

+0

再次感謝您! Str_replace工作得很好!......也許這是瀏覽器顯示,而不是和我混淆。 –

+0

這將是您的瀏覽器解釋編碼字符。如果您在瀏覽器中查看源代碼,它仍然是'&amp'。 – Eeji

相關問題