2012-12-14 20 views
0

用戶,我有一個PHP頁面「view.php」

,但我想沒有一個人通過擊或手動鍵入www.domain.com/view.php查看的頁面直接,它必須來自index.php正在經歷的一些過程。即

index.php ==> view.php/id=$$$ 

我試圖爲$ _SERVER [ 'REQUEST_URI'];

if ($_SERVER['REQUEST_URI'] =='www.domain.com/view.php') 
header("location: index.php"); 

但AINT工作..

任何一個可以請幫助

+2

爲什麼不使用.htaccess?服務器請求URI不可靠。 – thatidiotguy

+0

@thatidiotguy會話變量是從index.php打印在view.php上的,如果我使用htaccess,它還是很好..請建議 –

+0

@thatidiotguy說,服務器請求uri是不可靠的。請參閱http://stackoverflow.com/questions/165975/determining-referer-in-php如果您控制用戶所在的上一頁,您可以在會話中設置cookie或其他內容,然後檢查是否存在/是否正確對你的價值view.php – cosmorogers

回答

1

嘗試發送它使用POST槽一種形式,你的index.php文件可變

<form action="view.php" method="post"> 
<input type="hidden" vaue="test" name="KEY"/> 
</form> 

在view.php

if(isset($_POST['key'])){ 
//LOAD FILE 
} 

雖然有不同的解決方案

0

$ _ SERVER [ 「REQUEST_URI」]返回站點根目錄相對路徑,即 「何種交往」 或「/文件夾/ file.php」。所以你的代碼應該是if ($_SERVER["REQUEST_URI"] == "/view.php") { /* ... */ }。還建議在重定向頭後放置exit();以防止後續代碼執行。

您還可以使用$ _ SERVER [「HTTP_REFERER」]這樣if(!$_SERVER["HTTP_REFERER"] == "http://www.your-domain.com/index.php") { /* ... */ }

欲瞭解更多信息,請參閱http://php.net/manual/en/reserved.variables.server.php