以下是一種情況,我有一張支持服務單列表,當您單擊標題標題時,會將您帶到更詳細顯示標籤的頁面。如果使用URL GET變量來查詢數據庫。我考慮過SQL注入,但如果有人將url修改爲不存在的id,該怎麼辦?最好的方式來處理呢?
感謝,
Jonesy
以下是一種情況,我有一張支持服務單列表,當您單擊標題標題時,會將您帶到更詳細顯示標籤的頁面。如果使用URL GET變量來查詢數據庫。我考慮過SQL注入,但如果有人將url修改爲不存在的id,該怎麼辦?最好的方式來處理呢?
感謝,
Jonesy
如果ID不存在,發送404 - 有告訴它沒有找到用戶一個不錯的錯誤頁面沿找不到頭。
檢查票是否存在;如果沒有,相應地做出反應什麼「相應的反應」的意思是由您的業務邏輯決定的:創建一張新票據?提出錯誤?將用戶帶到可用門票的列表中?
使用舊的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
}
你可能不得不做出一個頁面處理不成功的搜索,反正;只是在那裏路線。然後,您可以幫助用戶找到他以一致的方式搜索的內容,提供提示和「最後搜索」以及不是。
這看起來可能太簡單了,但在對它們做任何事情之前,您應該始終驗證您的GET(或POST)變量。在你的情況下,只需確認數據庫中存在該ID。如果沒有,請通知用戶。
你應該經常檢查你的查詢是否返回任何東西。如果它返回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
}
?>