# ШАГ 4. ИЛИ ПРЫЖОК НА МЕСТЕ Мы продолжаем наш концерт, а за одно и рассматривать основы PHP. Сегодня начнем с внешних переменных. ## HTML Формы (GET и POST) После заполнения пользователем HTML формы PHP может получить доступ к этим данным через переменные, имеющие такие-же название, что и поля в форме. Как всегда продемонстрирую на примере: <form action="foo.php3" method="post"> Name: <input type="text" name="name"> <input type="submit"> </form> Значит после того, как пользователь нажмет в форме кнопку `submit` в php-скрипт `foo.php3` методом `post` передадутся данные из формы, а обратиться, например к текстовому полю, из этого скрипта можно будет через переменную `$name`. Кроме того, можно использовать и массивы в качестве названий полей. <form action="array.php" method="post"> Name: <input type="text" name="personal[name]"> Email: <input type="text" name="personal[email]"> Beer: <select multiple name="beer[]"> <option value="warthog">Warthog <option value="guinness">Guinness </select> <input type="submit"> </form> В результате это скрипт (`array.php`) может вывести полученные результаты так: echo "Имя: ".$personal["name"]; echo "Email: ".$personal["email"]; for ($i=0;$i<sizeof($beer);$i++) echo $beer[$i]."<br>"; Кроме этого, как известно в форме в качестве submit-кнопки можно применять картику `<input type=image src="image.gif" name="sub">`. В таком случаем скрипту возвращаются еще две дополнительных переменных, содержащих координаты точки, на которой кликнули мышкой. Это `sub_x` и `sub_y`. ## HTTP Cookies В PHP реалиован также простой способ работы с куками. С помоью функции SetCookie() можно их устанавливать, получать значения, как и в случае с формами - по имени переменной. В случае, если вы ожидаете получить несколько значений от куки имеет резон исопльзовать в качестве имени переменной - массив. Как в следующем примере. SetCookie ("MyCookie[]", "Testing", time()+3600); Существует только одно небольшое ограничение. Так-как куки - это часть HTTP заголовка их следует посылать самыми первыми. То есть грубо говоря, ваш скрипт должен начинаться с установки куки, а потом уже заниматься выводом html кода. Еще один пример, уже полноценного счетчика: $Count++; SetCookie ("Count", $Count, time()+3600); SetCookie ("Cart[$Count]", $item, time()+3600); ## Переменные окружения И тут все так-же просто. Хотите узнать домашний каталог? В юникс-системах этообычно переменная окружения с именем HOME. Так узнавайте: echo $HOME; Вы также можете работать с переменными окружения через функции `getenv()` и `putenv()` ## КОНСТАНТЫ Вы можете использовать не только переменный но и константы с помощью функции `define()`. Взгляните на следующий пример: define("CONSTANT", "Hello world."); echo CONSTANT; обратите внимание на то, что перед именем константы не пишется символа переменной `$` и это правильно. Ну и напоследок список предопределенных констант. `__FILE__` Имя файла выполняемого скрипта. `__LINE__` Колличество линий, инетрптетированный на данный момент в этом скрипте. `PHP_VERSION` Тут хранится версия PHP. Например: '3.0.8-dev'. `PHP_OS` Имя операционной системы, на которой выполняется PHP-скрипт. `TRUE` Истина. `FALSE` Ложь. `E_ERROR` Описывает случившуюся ошибку, продолжение работы после которой невозможно. `E_WARNING` Описывает ошибку, после которой продолжается выполнения скрипта. `E_PARSE` Описывает синтаксическую ошибку, рпи разоре интерпретатором текста скрипта. `E_NOTICE` Просто какое-то сообщения от интерпретатора. Возможно ошибка, а возможно и нет. Вот и все о константах и переменных. Со следующего шага займемся опарторами и выражениями. Удачи!