Самообучение PHP училище

Кратко ръководство по PHP за начинаещи


Източник: PC World » Последна редакция: LeoS

Втори урок » (5521 посещения)

Коментари
Поставянето на коментари в кода е полезно не само когато работите с големи файлове. Понякога, когато се връщате към скрипт, който сте писали преди по-дълго време, може да се окаже, че коментарите са полезни и на самите вас. Друго полезно приложение е, когато имате нужда временно да отстраните известно количество код. Вместо да го изтривате и слeд това възстановявате, можете просто да го коментирате.
В PHP имате възможност да коментирате съдържанието на 1 ред или на цял блок редове. За да поставите коментар на 1 ред можете да използвате символа # или две наклонени черти (//). А за да коментирате блок от редове, оградете го с /* и */.
Ето и един пример:

<?
/* Този скрипт ще изпише на екрана коя е датата днес.
Затова ще използваме функцията date(), за да я разберем. */
$today = date("Y-m-d");
// А сега ще изпишем датата.
echo "<CENTER>Днес е: $today.</CENTER>";
# И това е всичко.
?>"

Променливи
Една от най-големите сили на PHP е възможността му да работи с променливи. Няма да се впускаме в теоретични подробности за същността и концепцията им, а ще демонстрираме основните правила при използването им.
Най-общо, променливата се състои от две "части" - име и стойност. Обръщайки се към името на променливата можем да й присвоим нова стойност или да получим достъп до текущата.
Има две основни неща, които трябва да имате предвид, работейки с променливи в PHP. За разлика от повечето програмни езици, тук те не се декларират предварително. Създаването на променливата става в момента, в който и присвоявате стойност. В PHP името на променливата винаги е предшествано от знак за долар - $. Без значение дали й присвоявате стойност или използвате стойността й по някакъв начин.

<?
$ime="Иван Петров";
echo $ime;
?>

Тези редове код ще изпишат на екрана съдържанието на променливата $ime, което сме дефинирали по-рано. Ако бяхме пропуснали да й присвоим стойност, на екрана нямаше да се изпише нищо. Проверката за това дали на определена променлива е присвоена стойност е много полезна и често използвана възможност за проверка на това дали определено събитие се е случило или не. Как става това ще демонстрираме по-късно.
(забележете, че при визуализиране на променлива не се използват кавички)

Видове променливи
PHP предлага големи облекчения при работат с променливите, което в началото би ви се сторило странно ако сте се занимавали с други програмни езици. Стана вече дума, че не е необходимо да декларирате променивата преди да й присвоите стойност. Друга важна особеност е, че не е необходимо да указвате какъв тип информация се съдържа в нея - дали е низ (string), цяло число (int), число с плаваща запетая (float) и т.н. PHP сам определя типа на променливата в зависимост от съдържанието й. Според някои напреднали програмисти това е по-скоро вредно, но както скоро ще се убедите, освен улеснението, гъвкавостта на PHP в това отношение има и множество други плюсове.
Съществуват няколко вградени функции, с чиято помощ може да разберете какъв тип е дадена променлива. Това са:
is_bool() - връща истина, ако променливата е булева (истина/лъжа);
is_float() - връща истина, ако променливата съдържа число с плаваща запетая;
is_integer() - връща истина, ако променливата е цяло число;
is_string() - връща истина, ако променливата е низ от символи;
is_array() - връща истина, ако променливата е масив;
is_object() - връща истина, ако променливата е обект.

Enviroment variables
Съществува един особен вид променливи, наричани "променливи на обкръжението". Най-общо казано, това са променливи, поддържани от сървъра и PHP интерпретатора, описващи текущото състояние на връзката и характеристиките на двете страни в нея - клиент и сървър.
Събирането и анализирането на подобни данни е безкрайно полезно за всеки web разработчик. Така можете да научите кой сайт ви праща най-много посетители и да организирате рекламната си стратегия, наблягайки на него. Полезно е също и да следите кои от страниците в сайта ви се посещават повече и предизвикват по-голям интерес, така че да наблегнете на тях и на подобен вид съдържание в по-нататъчното изграждане на сайта.
Пълен преглед на променливите на средата може да видите, използвайки вградената в PHP функция - phpinfo(). Напишете в текстов файл следния ред :

<?
phpinfo();
?>

Запишете го на сървъра с име info.php (примерно) и го отворете в браузъра си. Ще видите най-важната информация за PHP инсталацията, както и всички създадени в текущата връзка променливи на средата на PHP и сървъра. Изписаното в левите полета на таблицата представляват имената на променливите, а в дясната част - стойностите им.

Нека сега разширим примера и добавим още малко информация в него.

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<TITLE>Здравей свят!</TITLE>
</HEAD>
<BODY>
<?
$data=date("d-m-Y");
$chas=date("H:i:s");
$browser=$HTTP_USER_AGENT;
$ref=$HTTP_REFERER;
$user_ip=$REMOTE_ADDR;
$forw=$HTTP_X_FORWARDED_FOR;
$serv=$SERVER_SOFTWARE;
$rem_host=gethostbyaddr($user_ip);
echo ("<b>Здравейте,<br><br>Добре дошли в сайта!</b><br>");
echo ("Сега е $chas часа, по моя часовник, на $data, а Вие дойдохте тук от
$ref с $browser<br>");
echo ("Вашето IP е $user_ip($forw) - $rem_host. <br><p>Поздрави: <br>$serv");
?>
</BODY>
</HTML>

Да обясним отделните редове в примера. Нямаше нужда да използвам променливите $browser, $ref, $user_ip, $forw, $serv и $rem_host, но ги включих за по-голяма прегледност. Всяка от тях получи за стойност стойността на някоя от променливите на средата.
На променливата с име "browser" се присвоява стойността на $HTTP_USER_AGENT, която винаги съдържа идентификационната информация на браузъра на посетителя.
На променливата с име "ref" се присвоява стойността на $HTTP_REFERER, съдържаща URL на мястото, от което идва посетителят. В конкретния случай едва ли мога да очаквам, че Yahoo са поставили на началната си страница линк към този сайт :)
Променливата, наименувана "user_ip" получава стойността на променливата на средата $REMOTE_ADDR. Тя винаги съдържа в себе си IP адреса на посетителя. Тук много рядко може да се получи разминаване на стойността с истинската, защото сървърът използва стойността й, за да определи на кого да изпрати поискания файл.
Много често се случва множество потребители да се намират зад едно или повече прокси сървъри. Няма да коментираме сега защо и как се получва това. В случая трябва да имаме предвид, че ако посетителят е зад прокси, то $REMOTE_ADDR ще покаже IP адреса на проксито. За адреса на клиентската машина се създава нова променлива - $HTTP_X_FORWARDED_FOR. Повечето прокси сървъри осигуряват тази информация, особено ако администраторите им не желаят да изкарат живота си по съдебните зали :)
Използването на последните две описани променливи на средата е полезно, когато давате достъп до чувствителна информация или по една или друга причина е важно да знаете кой точно е отсреща. Така можете да ограничите достъпа до сайта си на хора, които нарушават добрия тон в него или да подсигурите сигурността му при e-commerce приложения.
Тук използвахме и още една променлива на средата - $SERVER_SOFTWARE, която съдържа в себе си информация за сървърния софтуер - версия на сървъра и операционна система. В горния пример използвахме това, като "подпис" на съобщението.

Изпращане на променлива
Съществуват три начина, по които може да изпратите стойността на променлива към един PHP скрипт. Това са методите POST, GET и чрез cookies. Нека ги илюстрираме чрез прост пример. Ще създадем две страници - първата ще съдържа форма, в която потребителите ще напишат името и възрастта си, а втората ще изпише тези данни на екрана. Ще наречем първия файл index.html, а втория - show.php.
Нека напишем HTML формата, в която посетителите ще попълнят данните си :

<!-- index.html -->
<p>Здравейте! Моля попълнете следната информация : <br>
<form action="show.php" method="post">
Вашето име : <input type="text" name="ime"><br>
Възраст : <input type="text" name="godini"><br>
<input type="submit" value="Изпрати!">
</form></p>

Когато посетителят въведе даните и натисне бутона "Изпрати!", тези данни ще достигнат до файла show.php във вид на променливи. Можете да ги използвате веднага. Тук е мястото да уточним, че за разлика от други езици, PHP не ви кара да проверявате дали информацията е изпратена чрез GET или POST. Не е необходимо да правите нищо, за да получите достъп до съхраняваната в променливите данни. PHP се грижи за това и сам създава променливите. Затова можем направо да ги използваме, например - да ги изпишем:

<?
//show.php
echo "<p>Здравейте, $ime, вие сте на $godini години!";
?>

Очевидно това не е най-смисления ред код, който можете да напишете, но по-късно ще разгледаме възможностите, които ни дава информацията за възрастта на посетителя, за да го пренасочим към съответното място в сайта.
Най-често няма значение кой от двата метода - POST или GET използвате, с изключение на случаите когато трябва да изпратите файл или по-дълга информация.
Най-просто казано, GET използва така нареченото URL кодиране, тоест така данните се дописват след името на файла в неговия URL. Ако промените значението на "action" във формата в index.html от POST на GET и изпратите информация, ще видите в адресното поле на браузъра си нещо като show.php?ime=Ivan&godini=25. При изпращане на данните чрез POST, те се предават в тялото на заявката.
Много често информацията се задава на скрипта не чрез HTML форми, а пряко чрез URL. Това е така, защото в съвременните динамични сайтове един PHP файл би могъл да генерира множество web страници в зависимост от параметрите, които му се подадат.