Основи на PHP - част 3

В последния урок, ние ви запознахме с основите на PHP променливите и ви показахме как да ги събирате, мултиплицирате и конкатенирате. Също така, ви демонстрирахме колко полезни могат да бъдат функциите require() и include(). HTML формите винаги са били един от най-бързите и лесни начини да добавите интерактивност към вашaта уеб-страница. Формата ви позволява да питате клиентите дали харесват вашите прдукти, а случайните посетители - за коментари на вашата страница. PHP може да опрости задачата по обработката на данните, генерирани от HTML форма - както демонстрира нашият първи пример...





<html>
<head>
<basefont face="Arial">
</head>
<body>
<center>
<form method="GET" action="login.php">
<table cellspacing="5" cellpadding="5" border="0">
<tr>
<td>
<font size="-1">Вашето потребителско име : </font>
</td>
<td align="left">
<input type="text" name="name" size="10">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>





Най-критичния ред в тази цяла страница е <FORM> тага.




<form method="GET" action="./login.php">
...
</form>
... И функциите

Сега за другата половина от пъзела – “login.php” скрипта. Обикновено скрипта би могъл да приема въведеното име, да проверява дали потребителя съществува и или да допусне или да забрани достъпа до сайта на съответния потребител. Tъй като за подобно нещо трябва да използваме условните конструкции и логическите оператори, още няма да ги демонстрираме – вместо това, ние ще ви покажем как данните въведени в първата форма са "инжектирани" в “login.php” и могат да бъдат използвани в този файл.
Ето го и “login.php” :




<html>
<head>
<basefont face="Arial">
</head>
<body>
<center>
<font face="Arial" size="-1">
Интересно ми е дали сте чували за Шекспир, <? echo $name; ?>
<p>
Той е казал, че розата както и другояче да се казва, пак ше ухае толкова прекрасно.
<p>
Вие какво мислите?
</font>
</center>
</body>
</html>




И когато въведете някакви данни [например“Пешо”] във формата и ги изпратите, това е което би трябвало да видите:




Интересно ми е дали сте чували за Шекспир, Пешо.
Той е казал, че розата както и другояче да се казва, пак ше ухае толкова прекрасно.
Вие какво мислите?




Както може да видите, когато формата е изпратена към PHP скрипта, всичките променлива-стойност двойки във формата, стават достъпни от скрипта. В примера който разгледахме, веднъж след като формата е изпратена, променливата $name е автоматично създадена в PHP скрипта “login.php4”, и й е присвоена стойността въведена от потребителя.

Ако се опитате да направите същото нещо в Perl, вие ще трябва подробно да напишете кода, който да извлича и получава стойностите на променливите във формата. Чрез автоматичното създаване и присвояване на променливите вместо вас, PHP опростява вашия код и ускорява процеса на разработка - две причина поради които PHP е предпочитан пред Perl, когато се стигне до обработка на форми.

Очевидно, PHP подържа POST метода при предаване на форма. Всичко което трябва да промените е METHOD атрибута на “POST”.
Внимавайте какво правите ...

Разбира се примера който видяхте току що е много елементарен. За да го направите по-смислен трябва да знаете как да създавате условни конструкции. И най-основното от условните конструкции е сравнението - примерно "ако това е равно на онова, направи така и така”.

PHP ви предлага голям набор от полезни оператори, разработени специално за употреба в условни конструкции. Ето и техния списък:
Приемаме, че $delta = 12 и $omega = 9.

Оператор
Значение
Израз
Оценява се на

==
е равно на
$delta == $omega
False

!=
не е равно на
$delta != $omega
True

>
е по-голямо от
$delta > $omega
True

<
е по-малко от
$delta < $omega
False

>=
е по-голямо от или равно на
$delta > = $omega
True

<=
е по-малко от или равно на
$delta <= $omega
False


PHP4 така също въвежда нов оператор, който проверява и за равенство, и за тип - === оператора.

Шекспир в Матрицата

В PHP най-простият условен израз е изразът “if”, който изглежда по следният начин:




if ( condition ) {
do this!
}




Условието тук е condition, който се оценява с лъжа или истина. Ако израза се оцени с истина, целият PHP код в къдравите скоби се изпълнява; ако не - кодът в къдравите скоби се прескача и редовете следващи “if” конструкцията се изпълняват.

Нека да ви покажем как работи “if’ оператора, чрез добавянето на проверка за автентичността на потребителя към “login.php4” скрипта, като достъпа ще бъде разрешен само когато потребителя въведе името “neo”.




<html>
<head>
<basefont face="Arial">
</head>
<body>
<center>
<?
// провекра на името и изкарване на съответното съобщение
if ( $name == "neo" ) {
?>
<font face="Arial" size="-1">
Добре дошъл в Матрицата, Нео.
<p>
Нека силата бъде с теб ... опааа, грешен филм!
</font>
<?
}
?>
<?
// ако е въведена грешна парола
if ( $name != "neo" ) {
?>
<font face="Arial" size="-1">
Интересно ми е дали сте чували за Шекспир, <? echo $name; ?>.
<p>
Той е казал, че розата както и другояче да се казва, пак ше ухае толкова прекрасно.
<p>
За нещастие не съм съгласен. Достъпът отказан.
</font>
<?
}
?>
</center>
</body>
</html>



В този случай двата “if” оператора представят подходящо съобщение, в зависимост от това дали е или не е въведена вярната парола. Разбира се, PHP ви позволява също така и "вмъкнати" условни изрази - например това е напълно валиден PHP код :



<?
if ( $day == "Thursday" ) {
if ( $time == "12" ) {
if ( $place == "Italy" ) {
$lunch = "pasta";
}
}
}
?>

Ако не това кое тогава ?

Както виждате, тази конструкция би могла да се използва за да се увеличи ефективността и количеството код - вместо две отделни “if” конструкции, ние бихме могли да ги комбинираме в една “if-else” конструкция .




<?
if ( condition ) {
$name;
}
else {
$name;
}
?>




<html>
<head>
<basefont face="Arial">
</head>
<body>
<center>
<?

// провекра на името и изкарване на съответното съобщение
if ( $name == "neo" ) {
?>
<font face="Arial" size="-1">
Добре дошъл в Матрицата, Нео.
<p>
Нека силата бъде с теб ... опааа, грешен филм!
</font>
<?

}
else {
?>
<font face="Arial" size="-1">
Интересно ми е дали сте чували за Шекспир, <? echo $name; ?>.
<p>
Той е казал, че розата както и другояче да се казва, пак ше ухае толкова прекрасно.
<p>
За нещастие не съм съгласен. Достъпът отказан.
</font>
<?
}
?>
</center>
</body>
</html>


Курабийките на късмета

PHP също така предоставя възможност за обработка на монжество възможности - конструкцията “if-elseif-else”. Типичната употреба на "if-elseif-else” би изглеждала така:




<?
if ( first condition is true ) {
do this!
}
elseif ( second condition is true ) {
do this!
}
elseif ( third condition is true ) {
do this!
}
... и така нататък ...
else {
do this!
}
?>




Ето и един пример, демонстриращ как да използвате тази конструкция:




<html>
<head>
<style type="text/css">
td {font-family: Arial;}
</style>
</head>
<body>
<font face="Arial" size="+2">
Чудния генератор на курабийки с късметчета.
</font>
<form method="GET" action="cookie.php">
<table cellspacing="5" cellpadding="5" border="0">
<tr>
<td align="center">
Избери ден :
</td>
<td align="right">
<select name="day">
<option value="Monday">Понеделник
<option value="Tuesday">Вторник
<option value="Wednesday">Сряда
<option value="Thursday">Четвъртък
<option value="Friday">Петък
<option value="Saturday">Събота
<option value="Sunday">Неделя
</select>
</td>
</tr>
<tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Hit me!">
</td>
</tr>
</table>
</form>
</body>
</html>




Както виждате, това е само форма, която ви позволява да изберете ден от седмицата. Реалната работа се извършва от PHP скрипта “cookie.php” :




<?
if ( $day == "Monday" ) {
$fortune = "Защо да е просто";
$fortune .= " след като може да е сложно.";
// спомнете си знака за конкатенация от първа част [.]
}
elseif ( $day == "Tuesday" ) {
$fortune = "Живота е като игра на бридж - и вие току що сте спечелили.";
}
elseif ( $day == "Wednesday" ) {
$fortune = "Кой може да живее в този луд свят и да не се побърка?";
}
elseif ( $day == "Thursday" ) {
$fortune = "Не се ядосвайте.";
}
elseif ( $day == "Friday" ) {
$fortune = "Носете се по течението, ";
$fortune .= "живейте както винаги сте искали.";
}
else {
$fortune = "Събота и Неделя не работи!";
}
?>
<html>
<head>
<basefont face="Arial">
</head>
<body>
Ето ви късметчето за <? echo $day; ?>:
<br>
<b><? echo $fortune; ?></b>
</body>
</html>





Трябва да отбележим нещо много важно - когато една от “if “ конструкциите в блока се окаже истина, PHP ще изпълни съответния код, ще прескочи останалите “if” или "elseif" конструкции в блока и ще отиде незабавно към редовте, следващи целият “if-elseif-else” блок.


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