2011-02-25 120 views
1

在我的web應用程序中,我使用「example.com/single.php?id=x」,抓取get參數並在頁面上顯示一條記錄。如何處理PHP中沒有任何獲取參數的URL

什麼是如何處理的URL「example.com/single.php」最佳實踐/建議(如果有人脫下手動參數)

我消毒我的投入,所以我從安全的角度來看並不是要求內容方面的問題。我顯示什麼,所有記錄?目前,它不顯示在該地區的任何地方將有單個記錄...

感謝

回答

2

single.php是一個相當強大的指針,該URL是否有顯示一個記錄,所以沒有「默認」顯示(如顯示所有記錄)。

我會死它()與一個很好的「記錄未找到」的錯誤消息,甚至拋出404像堆棧溢出呢。

+0

好的,所以在PHP中,if(no get),{then display ...}然後呢?包括(404.php)? – benhowdle89 2011-02-25 12:11:52

+0

@benhowdle yup。 'header(「HTTP/1.1 404 not found」);包括( 「404.php」);' – 2011-02-25 12:13:45

0

ü可以把single.php默認ID和如果u得到GET然後用這一個

$display_id = empty($_GET['id']) ? specific id number : int($_GET['id']) ; 
0

你會做什麼時要求的最小集合了single.php中所需的參數,如果更換任何ID其中一個參數不存在,則會拋出錯誤的請求。

例如:

//Validate 
if(empty($_GET["id"])) 
{ 
    die("Invalid Request"); 
} 

//Sanitation 
if(!is_numeric($_GET["id"])) 
{ 
     die("Invalid Request"); 
} 

//Force type's for security 
$id = (int)$_GET["id"]; 
0

什麼我顯示,所有的記錄?

這完全取決於頁面的用途。 如果它是打算顯示所有沒有參數的記錄 - 然後顯示它。 (我有很多頁面顯示沒有參數的記錄列表,並顯示帶有參數傳遞的編輯表單,非常方便實用。)
如果沒有 - 當沒有找到頁面時,404響應是一個嚴格的規則。

一個好的應用程序也會檢查意外的參數(「example.com/single.php?id=x & foo-bar」),在這種情況下拋出403。