Page 90 - 4636
P. 90
<inputtype="radio" name="gender"
vаlue="жіноча"/>Жіноча<Ьr/><inputtype="radio" name="gender"
value="невизначено"/>He ваша справа<Ьr/><inputtype="submit"
vаlие="Признатися"/></form></body></html>
Ця форма може виглядати так, як показано на рис. 4.1. При роботі з такою формою ми можемо
припустити, що змінна $_POST[ 'gender' ] у сценарії submit_form.php може приймати
тільки значення "чоловічий", "жіночий" або "невизначений" - і це буде помилкою.
Рисунок 4.1 - Проста форма для введення статі користувача
Як вже було сказано, в мережі використовуєть простий текстовий протокол HTTP. Після клацання
на кнопці у наведеній вище формі на сервер буде відправлено текстове повідомлення приблизно
такого вигляду:
POST /gender.htmlHTTP/1.1 Host: www.yourhostname.comUser-Agent:
Mozilla/5.ПРО (Windows; U; WindowsNT 6.0; en-US; rv:1.9.0.1)
Gecko/2008070208 Firefox/3.0.1Content-Type : application/x-www-form-
urlencodedContent-Length: 14gender=чоловіча
Але ж ніщо не заважає комусь підключитися до нашого веб-серверу і послати нібито з цієї форми
довільний текст. Наприклад, такий:
POST /gender.htmlHTTP/1.1 Kost: www.yourhostname.comUser-Agent:
Mozilla/5.ПРО (Windows; U; WindowsNT 6.0; en-US; rv:1.9.0.1)
Gecko/2008070208 Firefox/3.0.1Content-Type: application/x-www-form-
urlencodedContent-Length: 22 gender=Я+люблю+cookie.
Припустимо, що в сценарії submit_form.php обробка даних виконується наступним кодом:
<?phpecho "<р align=\"center\">Стать користувача: ". $_P0ST [ 'gender
'].",</р>" ;?>
Тоді ми не застраховані від неприємностей. Набагато краще обов'язково перевіряти, що вхідне
значення дійсно збігається з одним з допустимих:
<?phpswitch ($ POST['gender']) {case 'чоловіча':
case 'жіноча':
case 'невизначена':
echo. "<p align=\"center\">Чудово! Вашастать -
".$_P0ST['gender'].".</p>"; break;
default:
echo "<p align=\"center\">" ."<span
style=\"color:red;\">Увага:</span>"." Дивна якась стать
попалась...</p>";
87