Обучение в PHP - част 8 (Работа с форми)

Работа с форми

Обработка на форми в PHP

Анализиране на HTML стойности в PHP

Както вече знаете, формите имат различни елементи, а именно:

Текстово поле
Поле за отметка
Радио-бутон
Списък


Тези елементи се използват за въвеждане на информация в WEB страниците. Освен това тези елементи ви позволяват да направите Web страниците си по интерактивни. Обаче, не можете да се съзползвате напълно от тях, ако не знаете, как да извлечете въведената в тях информация. За това се грижи PHP.

Накратко, PHP приема информацията, предадена чрез елемент на HTML формата, и я присвоява на променлива с име отговарящо на стойността на атрибута NAME на съответния елемент в HTML формата. Да приемем, че в една HTML форма, атрибутът Name на едно текстово поле е "Txtbox". В PHP стойността на това текстово поле автоматично ще се присвои на променливата $Txtbox. В резултат на това можете да използвате стойността на текстовото поле Txtbox в PHP чрез променливата $Txtbox.

Сега да разгледаме, как PHP анализира стоиностите на всеки елемент на формата. Първо ще разгледаме текстово поле, защото е най-просто от всички елементи на формите.

Анализиране на текстово поле

Текстовите полета се използват за въвеждане на текстови данни, като имена и адреси. Тези данни могат да са текстови или числови. В PHP, обаче, типът на данните не е от голямо значение. Да разгледаме следния пример. Както знаете, HTML синтаксиса за текстово поле е :

<input type="text" name="name" size="25" maxlength="25">


В горния код атрибутът Name на текстовото поле има стойност "name". Затова можете да използвате стойността на текстовото поле от HTML формата, като използвате променливата $name.

За да проверите типа на тази променлива, използвайте следния код:

<?php

echo gettype($name);

?>


В горният код типът на променливата се връща като низ. Така можете да проверите типът на всички въведени стойности

Анализиране на стойността на радио-бутон

Радио-бутоните се използват за избиране на една възможност от няколко предложени. КОгато се използват радио-бутони, PHP взима атрибута Name на радио-бутона и създава променлива със същото име, както е при текстовите полета. Да разгледаме следния пример, за да видим как PHP анализира стойностите на радио-бутоните. както знаете, HTML кода на група от радио бутони :

<input type="radio" name="gender" value="Мъж">
<input type="radio" name="gender" value="Жена">


В горния код стойността на атрибута Name за радио-бутона е "gender". Затова в PHP стойността ще се присвои на променливата $gender. Освен това забележете, че имената и на двата бутона са еднакви. Това е така, защото са групирани заедно. Когато изберете даден бутон, неговата стойност ще се присвои на променливата $gender

Анализиране стойността на полетата за отметки

Полетата за отметки се използват за избор на повече от една от предложените възможности. Докато атрибутът Name на полетата за отметки са различни. Да разгледаме следният примерен код:

<input type"checkbox" name="fiction" value="Фантастика">
<input type"checkbox" name="horror" value="Ужаси">
<input type"checkbox" name="action" value="Екшън">
<input type"checkbox" name="comedy" value="Комедия">


В този код атрибутите Name на всички полета за отметки ("fiction", "horror", "action", "comedy") са различни. В резултат на това PHP присвоява стойностите има на променливи със съответните имена. Например, ако сте поставили отметка в полетата fiction и horror, PHP ще присвои стойности на променливите $fiction и $horror. Останалите без отметка полета няма да съществуват като променливи. Затова, когато изпълните реда

if (empty($comedy))

Функцията empty ще върне стойност True, ако в полето не е поставена отметка

Анализиране на стойностите на списъци

Списъците се използват за избиране на една или повече предложени възможности. Списъците имат само един атрибут Name. Това означава, че PHP създава само по една променлива за списък. Но ако има само една променлива и множество избрани елементи от списъка, PHP присвоява всички изжрани стойностти като масив на съответната променлива. Да разгледаме следния код:


<select name="hobbies[]" size="7" multiplace>
<option value=" Спортове на открито "> Спортове на открито
</option>
<option value=" Екстремни спротове "> Екстремни спортове
</option>
<option value=" Поп музика "> Поп музика
</option>
<option value=" Рок музика "> Рок музика
</option>
<option value=" Агресивна музика "> Агресивна музика
</option>
<option value=" Фотография "> Фотография
</option>


В него атрибутът Name на списъка е "hobbies". Затова PHP създава променлива с име $hobbies, която да приеме стойностите от списъка. Но вие можете да изберете произволен брой стойности. Тези стойности се присвояват на променливата като масив. Да предположим, че сте избрали елементите: "Екстремни спортове", "Рок музика", "Фотография". В този случай променливата hobbies ще се инициализира по следния начин:


$hobbies - array ( "Екстремни спортове", "Рок музика", "Фотография" );


Валидация на форма

Един от най-важните аспекти на използването на форми е валидацията на ваведената от потребителя информация. Да разгледаме следния ред:

<form name="registration" method="post" action="confirm.php" enctype="multipart/form-data">


В него се декларира, че въведената информация ще се предаде на PHP скрипта confirm.php. Когато изпратите информация, PHP първо трябва да валидира тази информация. Валидациите в PHP се извършват, когато натиснете бутона Submit, за да изпратите информацията за обработка от сървара. Сега ще видим, как може да създадете различни валидации в PHP.

Валидиране на стойността на текстово поле с името

Обикновено първото поле във всяка форма е полето за името. В нашият случай полето Name е първото поле, в което потребителя въвежда стойност.В резултат на това процесът на валидация на формата започва със стойността, която потребителя е въвел в това текстово поле. Да разгледаме следния код. Този код валидира полето с името във вашата форма:

<?php

if (empty($name))
{
die("Не е въведено име");
}
elseif ((strlen($name) < 5) || (strlen($name) > 20 ))
{
die("Невалидно име");
}
else
{
echo $name;
}

?>


В горния код се използва конструкцията if ... elseif ... ... else за валидиране на въведената информация. Разгледайте следващата извадка от горния код:

if (empty($name)) //ако е празно полето $name
{
die("Не е въведено име"); //прекъсни скрипта и изведи това съобщение.
}


Ако не сте въвели име, обработката на формата ще прекъсне и ще се появи съобщение, че не сте въвели име. Обаче, след като сте въвели име, кодът провери неговата дължина. Разгледайте следващата извадка

elseif ((strlen($name) < 5) || (strlen($name) > 20 ))
{
die("Невалидно име");
}


В нея се появява условието, че името трябва да е поне от 5 символа и да не надвишава 20. Ако това условие не е удовлетворено, тогава ще получите съобщение за грешка "Невалидно име".

Валидиране стойността на текстово поле за адреса

Следващото поле във формата е полето address. Разгледайте следващия код, който валидира полето за адрес във формата.

<?php

if (empty($addres))
{
die("Не е въведено адрес");
}
elseif ((strlen($addres) < 5) || (strlen($addres) > 50 ))
{
die("Невалидно адрес");
}
else
{
echo $addres;
}

?>


Горният код е сходен с този на валидация на името. Тук PHP кодът проверява дали са ваведени данни в полето addres. Също така се проверява дали полето addres има по-малко от 5 символа или е по-голямо от 5о символа.

]Валидиране на E-mail адрес

Най-често използваната валидация на E-mail адрес е проверката за наличието на символа "@" в адреса. Разгледайте следващия код, който валидира полето за Е-маил.

<?php

if (empty($email))
{
die("Не е въведено e-mail");
}
elseif ((strlen($addres) < 5) || (strlen($addres) > 20 ))
{
die("Невалидн e-mail адрес. Много дълъг/къс");
}
elseif (!ereg("@",$email))
{
die ("Невалиден e-mail адрес. Липсва символа @")
}
else
{
echo $addres;
}

?>


Както в предишните две валидации, и тук кодът първо проверява дали е въведен e-mail адрес. Ако не е въведен, потребителят получава съобщението "Не е въведен e-mail адрес.". След проверката за наличие на стойност в полето e-mail, кодът проверява дали дължината на полето е между 5 и 20 символа.След тези две проверки, кодът проверява дали в стойността се съдържа символа @. Следващата извадка от горния код проверява за наличието на символа @:

elseif (!ereg("@",$email))
{
die ("Невалиден e-mail адрес. Липсва символа @")
}


В горния код първият ред проверява за наличието на символа @ в e-mail адреса. Ако символът @ не се открие във въведената стойност, потребителя ще получси съобщението : "Невалиден e-mail адрес. Липсва символа @".

Валидация на пароли

Имената на потребителите и паролите са основни при идентификацията на потребителите. Паролите осигуряват защитеност на информацията, предоставена от потребителя. Разгледайте следващия код, който валидира пароли. Освен това този код не извежда истинската стойност на паролата, а замества броя на символите в нея със символа *:

<?php

if (empty($password) || empty($cpassword))
{
die("Не е въведенa парола");
}
elseif (((strlen($password) < 5) || (strlen($password) > 15 )))
{
die("Невалиднa дължина на паролата");
}
elseif(!(strlen($password) == (strlen($cpassword)))
{
die("Паролите не съвпадат")
}
elseif(!($password === $password))
// Сравняване на типа на паролите
{
die("Паролите не съвпадат")
}

else
{
for ($i=0; $i < strlen($password); $i++)
{
echo "*";
}

}

?>


/ Трябва да сте регистриран за да напишете коментар /