Язык программирования PHP - [21]

Шрифт
Интервал


Иногда возникает необходимость узнать значение какой-либо переменной окружения, например метод, использовавшийся при передаче запроса или IP-адрес компьютера, отправившего запрос. Получить такую информацию можно с помощью функции getenv(). Она возвращает значение переменной окружения, имя которой передано ей в качестве параметра.


>

>getenv("REQUEST_METHOD");

> // возвратит использованный метод

>echo getenv ("REMOTE_ADDR");

> // выведет IP-адрес пользователя,

> // пославшего запрос

>?>


Как мы уже говорили, если используется метод GET, то данные передаются добавлением строки запроса в виде пар «имя_переменной=значение к URL-адресу ресурса». Все, что записано в URL после знака вопроса, можно получить с помощью команды


>getenv("QUERY_STRING");


Благодаря этому можно по методу GET передавать данные в каком-нибудь другом виде. Например, указывать только значения нескольких параметров через знак плюс, а в скрипте разбирать строку запроса на части или можно передавать значение всего одного параметра. В этом случае в массиве $_GET появится пустой элемент с ключом, равным этому значению (всей строке запроса), причем символ «+», встретившийся в строке запроса, будет заменен на подчеркивание «_».


Методом POST данные передаются только с помощью форм, и пользователь (клиент) не видит, какие именно данные отправляются серверу. Чтобы их увидеть, хакер должен подменить нашу форму своей. Тогда сервер отправит результаты обработки неправильной формы не туда, куда нужно. Чтобы этого избежать, можно проверять адрес страницы, с которой были посланы данные. Это можно сделать опять же с помощью функции getenv():


>getenv("HTTP_REFERER");


Теперь самое время решить задачу, сформулированную в начале лекции.


Пример обработки запроса с помощью PHP


Напомним, в чем состояла задача, и уточним ее формулировку. Нужно написать форму для регистрации участников заочной школы программирования и после регистрации отправить участнику сообщение. Мы назвали это сообщение универсальным письмом, но оно будет немного отличаться от того письма, которое мы составили на предыдущей лекции. Здесь мы также не будем отправлять что-либо по электронной почте, дабы не уподобляться спамерам, а просто сгенерируем это сообщение и выведем его на экран браузера. Начальный вариант формы регистрации мы уже приводили выше. Изменим его таким образом, чтобы каждый регистрирующийся мог выбрать сколько угодно курсов для посещения, и не будем подтверждать получение регистрационной формы.


Здесь все достаточно просто и понятно. Единственное, что можно отметить, – это способ передачи значений элемента checkbox. Когда мы пишем в имени элемента kurs[], это значит, что первый отмеченный элемент checkbox будет записан в первый элемент массива kurs, второй отмеченный checkbox – во второй элемент массива и т.д. Можно, конечно, просто дать разные имена элементам checkbox, но это усложнит обработку данных, если курсов будет много.


Скрипт, который все это будет разбирать и обрабатывать, называется 1.php (форма ссылается именно на этот файл, что записано в ее атрибуте action). По умолчанию используется для передачи метод GET, но мы указали POST. По полученным сведениям от зарегистрировавшегося человека, скрипт генерирует соответствующее сообщение. Если человек выбрал какие-то курсы, то ему выводится сообщение о времени их проведения и о лекторах, которые их читают. Если человек ничего не выбрал, то выводится сообщение о следующем собрании заочной школы программистов (ЗШП).


Заключение


Подведем итоги. Мы научились отличать клиента от сервера и компьютер-сервер от программы-сервера, познакомились с основными методами, используемыми для передачи данных на сервер, изучили средства, предлагаемые языком PHP для обработки клиентских запросов, и испробовали их на практике. В принципе этого достаточно для того, чтобы создавать клиент-серверные приложения.

Функции в PHP


В этой лекции будут рассматриваться вопросы создания и использования функций в PHP. Говоря «функции», мы не имеем в виду все существующие в PHP функции, а лишь функции, определяемые пользователем. Мы рассмотрим способы задания таких функций, методы передачи аргументов, использование аргументов со значением по умолчанию и значения, возвращаемые функцией.


В качестве примера создадим web-интерфейс для генерации html-формы. То есть пользователь выбирает, не прибегая к программированию, какие элементы формы нужно создать, и характеристики этих элементов, а наша программа генерирует нужную форму.


Функции, определяемые пользователем


Для чего нужны функции? Чтобы ответить на этот вопрос, нужно понять, что вообще представляют собой функции. В программировании, как и в математике, функция есть отображение множества ее аргументов на множество ее значений. То есть функция для каждого набора значений аргумента возвращает какие-то значения, являющиеся результатом ее работы. Зачем нужны функции, попытаемся объяснить на примере. Классический пример функции в программировании – это функция, вычисляющая значение факториала числа. То есть мы задаем ей число, а она возвращает нам его факториал. При этом не нужно для каждого числа, факториал которого мы хотим получить, повторять один и тот же код – достаточно просто вызвать функцию с аргументом, равным этому числу.


Рекомендуем почитать
Половая идентификация ребенка в кинетическом рисунке семьи

Здоровые семейные отношения – это залог успешной полоролевой идентификации ребёнка. Начинаясь с рождения, процесс идентификации протекает непрерывно, с заострениями и актуализациями переживаний на кризисных этапах психосексуального развития. Одним из таких этапов является возраст эдипова комплекса. Конфликты и искажения воспитательного процесса на этом этапе никогда не проходят бесследно и могут с новой силой реанимироваться уже в подростковом возрасте. В пособии представлены основные критерии анализа и подходы к пониманию проблем половой идентификации ребёнка с помощью популярной рисуночной методики.


Искусство Древней Греции и Рима: учебно-методическое пособие

Предлагаемое методическое пособие рассчитано на студентов 1 курса всех форм обучения: очной (дневной, вечерней), при которой студенты слушают полный курс лекций по всем заявленным в пособии темам, и заочной, при которой студенты слушают краткий курс лекций и занимаются самостоятельной подготовкой к экзаменам и зачетам. Пособие содержит изложенную в краткой форме программу занятий, подробный тематический план-конспект по тридцати двум темам изучаемым в течение семестра, список рекомендованной к курсу лекций литературы, вопросы к экзаменам, темы рефератов, семинарских занятий, а также приблизительные темы дипломных и курсовых работ.


Самоучитель Adobe After Effects 6.0

Обучение созданию профессиональных видеофильмов и обработки их на компьютере представлено в виде 12 уроков. Рассматривается, как с помощью программы Adobe After Effects можно редактировать и рисовать последовательность кадров, добавлять титры и заголовки, применять различные видеоэффекты, редактировать звуковое сопровождение фильма. Описывается процесс настройки прозрачности и наложения слоев видео для последующего экспорта фильма в различных форматах. Показываются способы создания анимации при масштабировании, поворотах и в движении с наложением титров и спецэффектов.


История русской литературы XX века (20–90–е годы). Основные имена

Книга является пособием по истории русской литературы XX века (20-90-е годы). Она представляет собой первый том, за которым последует продолжение — «Литературный процесс» (в двух частях). Пособие призвано отразить современный научный взгляд на основные художественные ценности и тенденции развития русской литературы XX века.Издание предназначено для студентов филологических факультетов российских университетов, а также для аспирантов и преподавателей, — всех, кто занимается русской литературой.


Материаловедение

Данный конспект лекций предназначен для студентов высших и средних специальных учебных заведений. В него входят сведения о древесине и древесных материалах, описываются их основные свойства. Дается характеристика металлов и сплавов, рассматриваются способы их применения. Приводятся основные сведения о лакокрасочных, смазочных, облицовочных материалах, а также классификация клеев и области их назначения.


Микроэкономика

В данном конспекте лекций в доступной форме изложены все основные вопросы по дисциплине «микроэкономика».Книга поможет получить основные знания и подготовиться к зачету или экзамену. Рекомендуется студентам экономических специальностей.