Паролите, имената, адреса на електронната поща, коментарите и други подобни, които се въвеждат в HTML формите, се явяват стрингове в РНР скрипта, който ги приема и обработва.
Премахване на интервали или крайни знаци
Понякога, при въвеждане на информацията се въвеждат и излишни знаци/интервали, които непременно трябва да бъдат премахнати, за да се избегнат множество проблеми, които могат да възникнат в последствие. Например, стринговете с излишни интервали няма да съвпадат със стринговете без интервали. Ненужните интервали, изпратени към уеб браузъра могат да променят вида на страницата, а ненужните интервали, изпратени към базата данни или към файла с бисквитките, ще предизвикат неприятни последствия. Например, ако паролата ви съдържа крайни интервали, тя няма да е действителна при въвеждането й без интервали.
Функцията trim () автоматично премахва знаци или интервали в началото и в края на даден стринг (във вътрешността- не). Синтаксисът й е следния:
където параметърът $str, е стрингът, който ще се обработи, а незадължителният параметър $charlist указва символите, които трябва да се премахнат. Ако вторият параметър не е указан, тогава функцията trim () ще премахне следните знаци, евентуално съществуващи в началото и в края на стринга:
"\t" (ASCII 9 (0x09))- знак за табулация.
"\n" (ASCII 10 (0x0A))- знак за нов ред.
"\r" (ASCII 13 (0x0D))- знак за връщане на каретката.
"\0" (ASCII 0 (0x00))- NUL-байт.
"\x0B" (ASCII 11 (0x0B))- знак за вертикална табулация.
Ако искаме да се премахнат знаци или интервали само в началото на стринга, вместо trim (), ще приложим функцията ltrim (). Ако искаме да премахнем знаци или интервали само в края на стринг, тогава прилагаме функцията rtrim ().
Отворете файла HandleForm.php в текстовия редактор. Добавете следните редове:
trim ($lastname);trim ($email);
trim ($comments);
Файлът ви HandleForm.php сега трябва да изглежда така:
<!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'])) { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $email = $_POST['email']; $comments = $_POST['comments']; //Следващите четири реда служат за премахване //на евентуални интервали в //променливите $firstname, $lastname, $email и $comments trim ($firstname); trim ($lastname); trim ($email); trim ($comments); echo ('Здравейте, ' . htmlspecialchars($firstname) . '!' . "<br />\n"); echo ('Вашата фамилия е: ' . htmlspecialchars($lastname) . "<br />\n"); echo ('Вашият имейл е: ' . htmlspecialchars($email) . "<br />\n"); echo ('Вашият коментар е: ' . htmlspecialchars($comments) . "<br />\n"); } ?> </body> </html>
Съхранете файла в работната директория на сървъра и го тествайте в браузъра (за да направите това, първо трябва да отворите в браузъра файла form.html, за да зададете стойности на променливите $firstname, $lastname, $email и $comments). При въвеждане на данните, умишлено оставете интервали преди и след въвеждане на Име, Фамилия, Имейл адрес и Коментари във формата. Функцията trim () ще ги премахне.
Кодиране и декодиране на стрингове
Синтаксис на URL
Браузърът получава страница от уеб сървъра чрез URL, който всъщност представлява адресът на търсената страница. Да разгледаме следния URL:
Каква информация получаваме от него?
Част | Данни |
---|---|
Протокол | https |
Потребител | edelw |
Парола | edelw |
Адрес на хоста | www.paedelw.com |
Порт | 80 |
Път | /file |
Параметър на пътя | p=1 |
Параметър на запитването | q=2 |
Фрагмент | one |
Протоколът (тук е https- защитен htpp) дефинира структурата на останалата част от URL. На адрес http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml може да прочетете и за други интернет URL протоколи.
URL може да се изпрати през интернет единствено, като се ползват ASCII знаци.
Функцията urlencode (), както се вижда от наименованието й, кодира стринговете, за да може да се предадат правилно като част от URL, тъй като в тях често се налага използването на несигурни ASCII знаци, които трябва да се конвертират във валиден ASCII формат. Този процес на кодиране включва заместване на несигурните ASCII знаци със знака за процент (%), последван от две десетични числа. Интервалите в URL обикновено се заместват със знака + или %20. В зависимост от това кой стринг се кодира (дали стринг, който се намира в частта път на URL или в частта запитване), кодирането на знаците се осъществява по различен начин.
Може да разгледате таблиците, представящи ASCII кодирането на адрес:
https://en.wikipedia.org/wiki/Percent-encoding.
Модулът Apache mod_rewrite на Apache сървъра служи за манипулиране на заявения URL (http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html).
Повече информация за структурата на URL може да намерите на следните адреси:
http://www.faqs.org/rfcs/rfc3986.html
https://en.wikipedia.org/wiki/Uniform_resource_locator
Функцията urlencode ()
Функцията urlencode () се прилага за всички GET параметри (за стойностите, които стоят след знака = във формите). Синтаксисът на функцията е следния:
Променливата $str е стрингът, който ще се кодира.
- Отворете отново файла HandleForm.php в текстовия редактор.
- Преди затварящата скоба добавете:
echo (urlencode($firstname)."<br />\n"); echo "Кликни"." ".'<a href="welcome.php?name=' , urlencode($firstname), '">тук</a>'." ".",за да видиш специалния си поздрав!";
- Файлът HandleForm.php сега би трябвало да изглежда така:
<!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'])) { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $email = $_POST['email']; $comments = $_POST['comments']; //Следващите четири реда служат за премахване //на евентуални интервали //в променливите $firstname, $lastname, $email и $comments trim ($firstname); trim ($lastname); trim ($email); trim ($comments); echo ('Здравейте, ' . htmlspecialchars($firstname) . '!'
. "<br />\n"); echo ('Вашата фамилия е: ' . htmlspecialchars($lastname)
. "<br />\n"); echo ('Вашият имейл е: ' . htmlspecialchars($email)
. "<br />\n"); echo ('Вашият коментар е: ' . htmlspecialchars($comments)
. "<br />\n"); //Показва как ще се кодира променливата $firstname echo ('Променливата ще се кодира така:'. ' ' . urlencode(trim ($firstname))."<br />\n"); //Кодира променливата $firstname и ви препраща //към страницата welcome.php echo "Кликни"." ".'<a href="welcome.php?name=' , urlencode(trim ($firstname)), '">тук</a>'." ".", за да видиш специалния си поздрав!"; } ?> </body> </html>
- Съхранете файла.
Новата страница welcome.php ще получи стойността на променливата $firstname от HandleForm.php. Ще покажем как можем да предаваме стойности на променливи от една страница на друга, а след това на трета (от form.html в HandleForm.php и в welcome.php ). За да подадем стойността на променливата $firstname (която ще ни е необходима за обръщението в поздрава) от файла HandleForm.php към файла welcome.php, е необходимо първо да я съхраним като сесийна променлива. Това може да стане, като впишем следните редове в скрипта на файла HandleForm.php:session_start(); $_SESSION['firstname']= $_POST['firstname']; session_write_close ();
Файлът HandleForm.php вече ще има вида:
<!DOCTYPE html> <html> <head> <title>Резултати от формата</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php session_start();//стартира се сесия /*Тази страница получава и обработва данните от „form.html” */ if (isset($_POST['submit'])) { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $email = $_POST['email']; $comments = $_POST['comments']; //Съхранява стойността на променливата $firstname $_SESSION['firstname']= $_POST['firstname']; //Следващите четири реда служат за премахване на //евентуални интервали в променливите //$firstname, $lastname, $email и $comments trim ($firstname); trim ($lastname); trim ($email); trim ($comments); echo ('Здравейте, ' . htmlspecialchars($firstname) . '!' . "<br />"); echo ('Вашата фамилия е: ' . htmlspecialchars($lastname) . "<br />"); echo ('Вашият имейл е: ' . htmlspecialchars($email) . "<br />"); echo ('Вашият коментар е: ' . htmlspecialchars($comments) . "<br />"); //Показва как ще се кодира променливата $firstname echo ('Променливата ще се кодира така:'. ' ' . urlencode(trim($firstname))."<br />\n"); //Кодира променливата $firstname и препраща //към страницата welcome.php echo "Кликни"." ".'<a href="welcome.php?name=' , urlencode(trim($firstname)), '">тук</a>'. " ".",за да видиш специалния си поздрав!"; } session_write_close (); //Пише сесийните данни и завършва сесията ?> </body> </html>
- В текстовия редактор създайте нов файл и му дайте наименование welcome.php.
Файлът welcome.php ще има следното съдържание:
<!Doctype html> <html> <head> <title>Добре дошли!</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php require 'HandleForm.php'; echo $_SESSION['firstname'] . ","." "."здравейте". "!"."<br />"."<br />"; echo "<h3>Трите пеперуди </h3>"."<br />"; echo "Три пеперуди, долитайки до горяща свещ, започнали да разсъждават за природата на огъня. <br>Първата, приближавайки се до пламъка, се върнала и казала:"."<br />"; echo "– Той свети."."<br />"; echo "Втората долетяла по-близо и, когато се върнала, казала:"."<br />"; echo "– Той изгаря."."<br />"; echo "Третата, долитайки съвсем близо, влязла в него и не се върнала. <br>Тя научила това, което искала да узнае, но вече не можела да го съобщи."."<br />"; echo "Получилият знание се лишава от възможността да говори за него, <br>затова знаещият мълчи, а говорещият не знае. "."<br />"."<br />";; echo "Източник:Интернет" ?> </body> </html>
Инструкцията require () включва и изпълнява даден файл и при възникване на грешка спира изпълнението на скрипта (в случая- HandleForm.php). За да видите резултатите от съвместната работа на трите файла, отворете в браузъра form.html.
Попълване на формата:

След натискане на бутона “submit” информацията се изпраща към файла HandleForm.php, премахват се интервалите чрез функцията trim (), осъществява се кодиране на променливата $firstname.

Кликвайки върху линка, информацията се подава към файла welcome.php и в браузъра виждате следното:

|
Няма коментари:
Публикуване на коментар