2012-09-30 22 views
1

好的,我使用傳統的PHP,沒有框架,沒什麼,我使用簡單的程序方式,現在我的問題是我正在尋找一段時間,但沒有得到我的問題的答案,我目前沒有使用.htaccess文件,但我真的需要了解404錯誤是如何工作的?我有一個網站,在那裏我展後的相關類別,比如類= PHP的,所以我通過這個作爲一個GET請求瞭解PHP 404重定向與無效獲取請求相關

$_GET['category'] == 'php'; 

現在目前我是什麼做的是這樣的:

$pocategory = $_GET['category']; 

if($pocategory == 'php' || $pocategory == 'javascript') { 
//Then show related posts 
} else { 
header('Location:404.php'); 
exit; 
} 

我的意思是我只是希望PHP和JavaScript作爲有效的請求的價值,其餘我想重定向到404,但我不知道如何去做,所以我這樣做,如果我有超過50個類別?我不能列出他們全部在這個條件下,短暫如何檢測給定的獲取請求值是否無效。

任何幫助將不勝感激。

+0

解決的辦法是進入路由,並進入框架^^。你也應該在響應中提供一個正確的'404 Not found' HTTP標題,而不僅僅是頁面中的「未找到」標題。 – moonwave99

+0

存儲的類別在哪裏? – Baba

+0

這真的越過我的頭cuz php似乎無法找到一個給定的獲取值是否有效,如果我鍵入一些隨機值,它只是渲染的頁面骯髒的暫停錯誤 –

回答

1

。 htaccess是做到這一點的方法。

ErrorDocument 404 index.php?404 

該行會告訴apache要加載的文件。上面的例子調用了主要的index.php腳本。

添加像這樣到你的index.php文件的頂部:

$error_404 = isset($_GET["404"]) ? true : false; 

現在,如果你有一個404錯誤請求,可以檢測。 $ error_404將是真實的,那麼爲什麼不添加一個簡單的函數:

function error_404($error_404) 
{ 
    if($error_404 == true) 
    { 
     // do some error stuff here, like set headers, and some text to tell your visitor 
    } 
} 

現在只是調用你的函數:

error_404($error_404); 

最好做的get處理後immidiatley:

error_404($error_404) 
$error_404 = isset($_GET["404"]) ? true : false; 

或將兩者合併爲一行:

error_404($error_404 = isset($_GET["404"]) ? true : false); 

解決的問題,這增加了相關的腳本:

$pocategorys_ar = array("php","javascript"); 

if (!in_array($pocategory, $pocategorys_ar)) 
{ 
    error_404(true); 
} 

確保它有訪問error_404()函數。

+0

這是一種自定義的方式告訴我的腳本,如果get的值是無效的,如果用戶輸入任何隨機的東西說category = blahblah? –

+0

OP想要404當用戶請求一個他不支持的類別,而不是基本的404重定向 – Vultour

+0

哦,那麼我的壞話。 怎麼樣in_array().. – Nick

0

你可以把所有類別的數組裏面是這樣的:

$pocategories = array 
(
    'php', 
    'javascript' 
); 
if (in_array($pocategory, $pages)) 
{ 
    // ... 
} 
else 
{ 
    header('Location:404.php'); 
} 

你可以做的另一件事是創建每個類別中的HTML/PHP文件,做它像這樣

if (is_file('sites/' . $popcategory . '.php') 
{ 
    include('sites/' . $popcategory . '.php'); 
} 
else 
{ 
    header('Location:404.php'); 
} 
+0

它應該'in_array'而不是'array_key_exists' – Baba

+0

對不起,把它改爲'in_array' – bytecode77

+0

所以我猜.htaccess在這裏什麼都不能做? –