Преди да разгледаме въпроса с предаване на формата към сървъра, нека изясним начина,
по който контактуват помежду си клиентската машина и сървърът. В много случаи предназначението на HTML
формите е да се изпратят данни към сървъра. Сървърът преработва данните и ги
изпраща като отговор до потребителя.
Клиент-сървър архитектура
Обикновено клиентът изпраща молба за услуга, а сървърът доставя тази услуга. Услугата може
да е доставяне на някакъв ресурс, като например данни, файл, обект, време и др. Идеалната платформа клиент-сървър
е независима от хардуера и операционната система.
Как взаимодействат в интернет клиентът и сървърът? Ето една примерна схема:
Как взаимодействат в интернет клиентът и сървърът? Ето една примерна схема:

Повече информация за URI, URL и URN, може да получите на адрес: http://www.faqs.org/rfcs/rfc3986.html
Ето и нещо забавно:
Методите Get и Post
Когато се избира методът, с който ще работи формата, трябва да се има предвид следното:
- Методът GET ограничава обема на предадената информация (около 2000 знака).
- Информацията, изпратена от формата с метода GET е видима за всички (всички
имена на променливи и стойности се показват в адресната лента на браузъра, което може да се окаже
неблагоприятно за сигурността (всеки човек може да види въведената във формата парола, например).
- Можете да прилагате метода GET, когато някой ще получава данни от ваше приложение, но ще прилагате
метода POST, когато някой вмъква, ъпдейтва или изтрива данни от ваше приложение.
Добавяне на метод във формата
- Отворете файла form.html в текстовия редактор.
- Въведете ред 9 от скрипта по-долу:
<!Doctype html> <html> <head> <title>HTML Форма</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <form action="HandleForm.php" method="post" target="_blank"> Име: <br/><input type=text name="firstname" /> <br/><br/> Фамилия: <br/><input type=text name="lastname" /> <br/><br/> Имейл адрес: <br/><input type=text name="email"/><br/><br/> Коментар: <br> <textarea name ="comments" ></textarea><br/><br/> <input type=submit name="submit" formenctype="multipart/form-data" value="Напред!"/> </form> </body> </html>
- Съхранете файла.
Получаване на данни от HTML форма
Създадохме HTML форма. Необходимо е да напишем скрипт за файла, който ще получава и обработва данните, въведени от потребителите в екранната форма на form.html.
- Отворете текстовия редактор и създайте нов документ.
- Дайте наименование на файла HandleForm.php
- Съхранете го в папката, в която сте съхранили form.html.
Съдържанието на файла HandleForm.php e:
<!DOCTYPE html> <html> <head> <title>Резултати от формата</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php /*Тази страница получава и обработва данните от „form.html” */ if (isset($_POST['submit'])) { echo ('Здравейте, ' . htmlspecialchars($firstname) . '!' . "<br />\n"); echo ('Вашата фамилия е: ' . htmlspecialchars($lastname) . "<br />\n"); echo ('Вашият имейл е: ' . htmlspecialchars($email) . "<br />\n"); echo ('Вашият коментар е: ' . htmlspecialchars($comments) . "<br />\n"); } ?> </body> </html>
- Отворете form.html в браузъра
- След попълване на формата, кликнете върху бутон "Напред".
Резултатът от обработването на формата е:
Как работи формата?
- HTML формата има текстови полета с имена: firstname, lastname, email и comments.
Във формата е приложен POST метода за изпращане на данните към сървъра и действие (action), което указва, че данните, получени от формата ще се изпратят към файла HandleForm.php.
- В РНР скрипта, глобалната променлива $_POST е асоциативен масив, който държи всички двойки ключ-стойност на POST метода от HTML формата (в случая това са: name=”firstname”, name=”lastname”, name=”email”, name=”comments”).
Функцията isset ($_POST["submit"]) връща TRUE, ако във формата се съдържа бутон “submit” и когато формата е приета (т.е. върху бутона е кликнато).
- В командата echo операторът точка (.) обединява два стринга.
Функцията htmlspecialchars () (вместо нея може да приложите функцията htmlentities()) конвертира всички специални знаци: http://www.ascii.cl/htmlcodes.htm Това конвертиране е необходимо, за да се предотвратят т.нар. Кръстосани атаки (Cross-site Scripting attack (XSS)).
Именно за предотвратяване възможността за XSS атака е необходимо валидиране, нормализиране и филтриране на всички входящи данни (този въпрос няма да го разглеждам, поне не сега). - За да разгледате кода на върнатата от сървъра HTML страница, кликнете с десен клавиш на мишката в прозореца на браузъра и от контекстното меню да изберете View Page Source.
Въвеждане на данни
Ще създадем РНР файл, който извежда приветствие на екрана.

Създадохме динамична страница, която печата стойността на променливата $FirstName. Ако се промени стойността на променливата, резултатът ще бъде различен.
- Отворете текстовия редактор.
- Създайте нов документ hello.php.
- Въведете:
<!DOCTYPE html> <html> <head> <title>Използване на променливи</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php $FirstName="Edelw"; print ("<h2><center><b>Hello, $FirstName!</b></center></h2><br>"); /* Страницата може да съдържа допълнителен код след оператора print.*/ ?> </body> </html>
- Съхранете файла.
- Качете го на сървъра.
- Отворете го в браузъра.
Създадохме динамична страница, която печата стойността на променливата $FirstName. Ако се промени стойността на променливата, резултатът ще бъде различен.
|
|
Няма коментари:
Публикуване на коментар