Сначала небольшое отступление.
Откройте конфигурационный файл PHP (для тех кто использует любую из Win это С:\WINDOWS_DIR\php.ini) и найдите там параметр
error_reporting установите его значение E_ALL (error_reporting = E_ALL). Затем параметр register_globals и установите ему
значение Off (register_globals = Off).
Для чего это нужно:
- параметр error_reporting отвечает за вывод сообщений об ошибках. Мы установили ему значение E_ALL, т.е. сигнализировать нам о всех произошедших ошибках. Если вы хоть немного знакомы с PHP, то скажете что в этом случае будет так же много лишних сообщений, например о использовании неинициализированной переменной и подобных. Что могу ответить.. Зато я имею полную информацию о выполнении моего скрипта, а для фильтрации ненужных сообщений лучше использовать оператор отключения предупреждений@. (Чуть ниже будет пример который проиллюстрирует смысл этих предложений для тех кто не понял о чем идет речь).
- параметр register_globals - отвечает за автоматическую регистрацию в среде переменных переданных методами POST или GET. Начиная с какой то версии PHP, данный параметр по умолчанию выключен. Что в принципе разумно. Это обеспечивает чуть большую безопасность приложения и немного снижает затраты машинных ресурсов при выполнении. Так что мы с вами будем следовать этой практике и получать эти переменные ручками.
Пример поясняющий действие оператора @:
<?
extract($HTTP_GET_VARS);
// без использования оператора @
if ($error) echo "ПРИВЕТ!";
echo "<a href=\"?error=1\">сказать привет</a>"
?>
При запуске вам скажут что то типа Notice: Undefined variable: error in d:\server\htdocs\rassilka\3\1.php on line 3. И только при нажатии на ссылку,
переменная $error примет значение. Использование таких вот переменных, которые принимают значение только при некотором действии, обычное дело для PHP, особенно при передаче переменных методами GET и POST. И это не является ошибкой. Как раз для таких случаев и существует оператор @. Перепишем:
Как видите в этом случае сообщения об ошибке не появилось и скрипт работает так, как нам надо.
Мы как бы указали интерпретатору игнорировать тот факт что переменной $error поначалу не существует.
Часто у нас будет возникать необходимость передать скрипту некоторые параметры. Один из способов это сделать передать их с помощью метода GET.
В этом случае все параметры передаются одной строкой. Наверное вам часто приходилось видеть ссылки вида
http://hostname.com/script.php?alpha=1&web=ok, это и есть передача параметров методом GET (в предыдущем примере я тоже пользовался
этим методом :) ). В данном примере скрипту script.php передаются параметры alpha=1 и web=ok. Как видно список параметров начинается после
символа ? и параметры в нем разделяются с помощью символа &.
Руководствуясь этими правилами и следует формировать свои GET запросы.
Давайте теперь поподробнее рассмотрим как PHP получает эти параметры на основе предыдущего примера. Наша ссылка имеет вид
<a href="?error=1">сказать привет</a>
Если бы мы не отключили register_globals то параметр error сразу бы был нам доступен в качестве переменной $error.
Но этот путь не для нас :).
Все переменные полученные с помощью GET, PHP хранит в массиве $HTTP_GET_VARS, индексами которого являются имена переменных.
Например, для вывоза error я мог бы воспользоваться след. записью $HTTP_GET_VARS['error']. Это запись достаточно длинная и неудобная. Поэтому
в примере я использовал функцию:
int extract ( array var_array [, int extract_type [, string prefix]])
Которая извлекает из массива var_array переменные имеющие имя ключа записи массива, а значением величины соотв. этим ключам.
(рекомендую подробнее о extract() почитать в документации по PHP, ее возможности очень широки).
В отличии от метода GET, в методе POST параметры передаются сценарию через стандартный поток ввода. Пример передачи параметров
методом POST передача данных формы. Например:
Как видим все параметры хранятся в массиве $HTTP_POST_VARS и имеют имена соответствующие именам элементов формы.
Небольшое домашнее задание:
Рекомендую вам написать самим скрипт обрабатывающий данные формы содерж. поля Имя, Фамилия, Возраст.
Обработка пусть заключается в следующем: вывод строки вида "Вы Иван Петров и вы родились в 1976 году.". Дата рождения вычисляется по возрасту.
- Выпуск 4: Конструкции языка (циклы, условный оператор, оператор выбора, инструкции)
- Выпуск 5: Пишем гостевую книгу
- Выпуск 6,7: Добавляем в к гостевой книге модуль администрирования и расширяем ее функциональность