2013-02-17 54 views
2

我有一個ajax表單,它轉到一個php文件,我不希望用戶能夠直接輸入php文件到URL欄中,所以如果他們進入,我將如何重定向他們該PHP文件,我不能簡單地添加一個header("location:index.html")或形式wouldnt工作。在PHP上使用JSON時重定向

<?php 
$Reg['E'] = 'Test'; 

echo json_encode($Reg); 
?> 
+2

從技術上講,如果你的AJAX可以達到它,那麼總是有辦法達到它 – Alexander 2013-02-17 21:25:33

+0

有沒有其他辦法可以做到這一點?或者我應該只有我的PHP在同一頁面的Ajax形式?甚至可以工作嗎? – 2013-02-17 21:26:38

+1

沒有辦法做到這一點。無論你做什麼,人們都可以看到它並做同樣的事情。 – Jon 2013-02-17 21:28:08

回答

2

沒有辦法100%確定,因爲沒有任何關於ajax請求和其他請求的技術特殊性。如果你使用jQuery,您可以在X-Requested-With頭做了檢查:

if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 

...否則重定向。您也可以在表單中放置一個令牌,如隨機md5散列,並檢查該令牌是否與請求一起提交(與存儲的值相比)。這至少要求首先訪問表單頁面來生成令牌,而「普通」用戶將無法獲得令牌。

+0

你建議工作的象徵性東西!最近我一直在回答很多問題,謝謝! – 2013-02-17 21:35:45