2015-05-08 119 views
0

價值的一個得到的值考慮一個演示網址是這樣的:www.example.com/act/yes USER_ID = 125比較字段從數據庫

我知道,黑客或其他會嘗試改變網址中的數字值。

我的問題是,我們如何將url的值與yes(www.example.com/act/yes)頁面中的某個字段的值進行比較,以便只有具有該值的條目才能在PHP中顯示?

我在嘗試這樣如果條件

if($_GET['user_id'] == $result[0]->user_id) 
{ 
    show db values 
} 
else 
{ 
    show nothing 
} 

其中$result= $this->model->edityes($_GET['user_id']);

$結果將包含包含含有ID $ _GET [ 'USER_ID']的所有字段的數據數組。

+0

真不明白......如果適用,哪些返回'$結果= $這個 - >模型 - > edityes($ _ GET [ 'USER_ID']);' – zeflex

+0

@ zeflex,我把價值以$ _GET ['user_id'](這裏是125)作爲模型函數的參數獲得,它將帶有ID爲125的所有記錄。 –

+0

在這種情況下,爲什麼要使用像你的那樣的if指令。當您將$ _GET ['user_id']發送到模型時,爲什麼不比較是否有$結果?如果$ results返回false,則不顯示任何內容。 – zeflex

回答

1

這個等式中的所有問題都是$ _GET字符串的值在傳遞到數據庫之前總是被清理掉。你的情況USER_ID似乎永遠是一個整數,所以對你來說很簡單:

$user_id = (isset($_GET['user_id']) && is_int($_GET['user_id'])) ? $_GET['user_id'] : false; 
if($user_id){ 

} else { 

} 

在上面我們只是簡單地檢查是否USER_ID PARAM存在(USER_ID =?),如果它是int類型(整數)。

與此同時,如果使用預準備語句,您只需傳遞值並輕鬆休息。

$stmt = $mysqli->prepare('select * from users where user_id = ?'); 
$stmt->bind_param('i', $_GET['user_id']); 
$stmt->execute(); 

通過這種方式,我們讓司機mysqli的處理數據的消毒對我們來說,因爲我們已經告訴它綁定參數$_GET['user_id']必須爲整數,以及。

0
$result = $this->model->edityes((int)$_GET['user_id']); 
if ($result) { 
// do something 
} else { 
// do something else 
}