2014-07-20 39 views
-2

我創建了一個登錄和註冊系統,如文件: register.php行動的形式是do_register.php login.php行動的形式是do_login.php ,我不希望用戶訪問do_register.phpdo_login.php僅當它們被register.phplogin.php重定向時。 所以我雖然關於通過HTTP_REFERER這裏bloking訪問行:PHP無視我的HTTP_REFERER

$refer=$_SERVER ['HTTP_REFERER']; 
if($refer!= "http://www.example.com/register.php") 
{ 
header("location:index.php"); 
} 

,但它沒有阻止訪問的問題。

+0

什麼'$ refer'的價值? – tjati

+0

$ refer = $ _ SERVER ['HTTP_REFERER']; – user3857672

+2

停止。你不能依賴'referer'。拋出此代碼並改爲使用基於nonce的CSRF保護。 – Quentin

回答

2

你不能使用引用者來做這種檢查。而是在POST字段上創建一個條件。我假設你有一個提交按鈕。寧可與

if ($_POST['submitbutton_name']) 

這是一個非常普遍的方式來做到這一點。

所以完整的代碼是:

if(!$_POST['submitbutton_name']) { 
    header("location:index.php"); 
    exit(); 
} 
+1

並且總是使用'die();'調用標題後位置參數 –

+2

或退出();;)我正在完成我的答案,但當然:) –

+0

是的,這是溶劑,我已經使用它,如果行動是在同一個文件。謝謝。 – user3857672

相關問題