2015-05-08 3 views
0

Рассмотрят демо URL, как это: www.example.com/act/yes user_id = 125Сравнить получить значение с одним из значения полей из базы данных

Я знаю, что хакер или другие будут пытаться изменить значение цифры в url.

Вопрос: как мы можем сравнить, чтобы получить значение из url с одним из значений поля на странице yes (www.example.com/act/yes), чтобы в PHP отображались только записи с этим значением get?

Я попробовал это, если условие

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

$result= $this->model->edityes($_GET['user_id']); где

$ результат будет содержать массив, содержащий все данные поля, содержащие идентификаторы $ _GET [ 'user_id'].

+0

Не совсем понятно ... Где применяется и то, что возвращает '$ Result = $ this-> модели-> edityes ($ _ GET [ 'user_id']);' – zeflex

+0

@ zeflex, я ставлю значение полученной как $ _GET ['user_id'] (здесь 125) в качестве аргумента для функции модели, которая принесет всю запись с идентификатором 125. –

+0

В этом случае, почему вы используете инструкцию if, такую ​​как ваша. Почему бы вам не сравнить, если у вас есть $ result, когда вы отправляете $ _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 парам существует (user_id =?), И если это типа междунар (целое число).

Между тем, если вы используете подготовленные заявления, вы можете просто передать это значение и легко отдохнуть.

$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 
} 
Смежные вопросы