2015-03-14 2 views
-1

я имел дело с безопасностью, и я пришла в голову идея:Php: может ли пользователь генерировать массив в сообщении/получить запрос?

if (!isset($_POST['id'])) 
{ 
    $_POST['id'] = 0; 
} 

$_POST['id'] = (int)$_POST['id']; // kill SQL injection 

но что, если id был массив? Это заставило бы этот метод колено! Но я не знаю, возможно ли даже создать массив.

+1

Что вы подразумеваете под идентификатором 'id? 'Был массив?' – Sadikhasan

+1

Массив будет отбрасываться до '0' или' 1', в зависимости от его правдоподобия. И почему бы вам просто не использовать SQL-запросы со связанными параметрами? – mario

+0

ОК, но если это объект, он не работает. An (int) всегда быстрее, чем ограничение –

ответ

1

Не изобретайте велосипед: у php есть хороший набор фильтров для работы с $ _GET и $ _POST: см. http://php.net/filter - есть фильтры даже для массивов.

Если в вашей форме у вас есть <SELECT multiple>, который будет отправлять множество опций, выбранных пользователем, name должно быть что-то вроде name="MySelection[]" вместо простого name="MySelection". Таким образом, с квадратными скобками будет автоматически генерироваться массив, и он будет $_POST['MySelection'][0], $_POST['MySelection'][1] и так далее. Вы можете зациклиться на нем с обычным foreach.

Смежные вопросы