2010-10-25 49 views
1

以下是一種情況,我有一張支持服務單列表,當您單擊標題標題時,會將您帶到更詳細顯示標籤的頁面。如果使用URL GET變量來查詢數據庫。我考慮過SQL注入,但如果有人將url修改爲不存在的id,該怎麼辦?最好的方式來處理呢?

感謝,

Jonesy

回答

5

如果ID不存在,發送404 - 有告訴它沒有找到用戶一個不錯的錯誤頁面沿找不到頭。

0

檢查票是否存在;如果沒有,相應地做出反應什麼「相應的反應」的意思是由您的業務邏輯決定的:創建一張新票據?提出錯誤?將用戶帶到可用門票的列表中?

使用舊的MySQL擴展爲簡潔的例子:

$sanitized_numeric_id = (int) $_GET['ticket_id']; // assuming id is numeric 
$query_resource = mysql_query('SELECT `somecolumn`, `column2`, `othercolumn` 
            FROM `tickets` 
            WHERE `id`= ' . $sanitized_numeric_id); 
if (mysql_num_rows($query_resource) > 0) { 
    // the ticket exists, do something with it 
} else { 
    // the ticket doesn't exist, react accordingly 
} 
3

你可能不得不做出一個頁面處理不成功的搜索,反正;只是在那裏路線。然後,您可以幫助用戶找到他以一致的方式搜索的內容,提供提示和「最後搜索」以及不是。

1

這看起來可能太簡單了,但在對它們做任何事情之前,您應該始終驗證您的GET(或POST)變量。在你的情況下,只需確認數據庫中存在該ID。如果沒有,請通知用戶。

1

你應該經常檢查你的查詢是否返回任何東西。如果它返回0行,則ID不存在。

<?php 

$result = mysql_db_query("your query", $link); 
$num_rows = mysql_num_rows($result); 

if($num_rows < 1) { 
    // row with that id doesnt exist 
    // do whatever you want 
} elseif($num_rows > 1) { 
    // you have problem with your ids in db 
} else { 
    // everything went fine 
    // do your thing here 
} 

?>