- •Обработка динмачиской html страницы
- •Назначение и виды веб серверов
- •Способы встраивания php скрипта в html код
- •Переменные и константы в php. Область определения переменных
- •Область видимости переменных
- •Переменные переменные
- •Константы
- •5. Особенности синтаксиса php
- •6. Глобальные и статические переменные php Глобальные переменные в php
- •Статические переменные в php
- •7. Система типов языка php
- •8. Вывод данных в php
- •Арифметические операторы php
- •Логические операторы php
- •Строковые операторы php
- •Операторы присвоения в php
- •Операторы сравнения в php
- •Операторы инкремента и декремента в php
- •Операторы эквивалентности php
- •Операции с символьными переменными в php
- •Приоритеты выполнения операторов в php
- •Операторы исполнения внешних команд в php
- •Операторы для работы с массивами php
- •Операторы управления ошибками php
- •Операторы классов php
- •Поиск и замена подстрок
- •Регулярные выражения
- •Жадные и ленивые квантификаторы в регулярных выражениях
- •Использование html-форм для передачи данных на сервер
- •Для метода get
- •Для метода post
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Типы ресурсов Предопределенные константы
- •Проверка существования файла
- •Функция file_exists
- •Функция is_writable
- •Функция is_readable
- •I. Открытие файла
- •II. Манипуляции с данными файла
- •III. Закрытие файла
- •Запись в файл
- •Чтение из файла
- •Взаимодействие php и MySql
- •Создание базы данных с помощью html-формы
- •Листинг 1. Код html-формы
- •Листинг 2. Код записывающей html-формы
Замечание
Если посетитель воспользуется браузером Opera, то содержание $_SERVER[`HTTP_USER_AGENT`]может выглядеть следующим образом: "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru]". Подстрока "MSIE 6.0" здесь так же присутствует, сообщая, что браузер Opera является совместимым с браузером Internet Explorer и использует те же динамические библиотеки Windows. Поэтому, при анализе строки, возвращаемой браузером, следует иметь в виду, что к Internet Explorer относится строка, содержащая подстроку "MSIE 6.0" и не содержащая подстроки "Opera". Кроме того, из данной строки можно заключить, что пользователь использует операционную систему Windows 98.
Замечание
Элемент $_SERVER[`REMOTE_ADDR`]
В элемент $_SERVER[`REMOTE_ADDR`] помещается IP-адрес клиента. При тестировании на локальной машине — этот адрес будет равен 127.0.0.1. Однако при тестировании в сети переменная вернёт IP-адрес клиента или последнего прокси-сервера через который клиент попал на сервер. Если клиент использует прокси-сервер узнать его IP-адрес можно при помощи переменной окружения HTTP_X_FORWARDED_FOR, значение которой можно получить при помощи функции getenv().
Замечание
Извлечение переменной окружения HTTP_X_FORWARDED_FOR
<?php <?php echo getenv(HTTP_X_FORWARDED_FOR); ?>
Элемент $_SERVER[`SCRIPT_FILENAME`]
В элемент $_SERVER[`SCRIPT_FILENAME`] помещается абсолютный путь к файлу от корня диска. Так, если сервер работает под управлением операционной системы Windows, то такой путь может выглядеть следующим образом "d:main estindex.php", т.е. путь указывается от диска, в UNIX-подобной операционной системы путь указывается от корневой директории /, например "/var/share/www/test/index.php".
Элемент $_SERVER[`SERVER_NAME`]
В элемент $_SERVER[`SERVER_NAME`] помещается имя сервера, как правило, совпадающее с доменным именем сайта, расположенного на нём. Например,
<?php www.softtime.ru
Содержимое элемента $_SERVER[`SERVER_NAME`] часто совпадает с содержимым элемента $_SERVER[`HTTP_HOST`]. Помимо имени сервера суперглобальный массив $_SERVER позволяет выяснить ещё ряд параметров сервера, например IP-адрес сервера, прослушиваемый порт, какой Web-сервер установлен и версию HTTP протокола. Эта информация помещается в элементы $_SERVER[`SERVER_ADDR`], $_SERVER[`SERVER_PORT`], $_SERVER[`SERVER_SOFTWARE`] и $_SERVER[`SERVER_PROTOCOL`], соответственно. Ниже приводится пример с использованием данных элементов.
Использование элементов массива $_SERVER
<?php <?php echo "Имя сервера - ".$_SERVER[`SERVER_NAME`]."<br />"; echo "IP-адрес сервера - ".$_SERVER[`SERVER_ADDR`]."<br />"; echo "Порт сервера - ".$_SERVER[`SERVER_PORT`]."<br />"; echo "Web-сервер - ".$_SERVER[`SERVER_SOFTWARE`]."<br />"; echo "Версия HTTP-протокола - ".$_SERVER[`SERVER_PROTOCOL`]."<br />"; ?>
Элемент $_SERVER[`REQUEST_METHOD`]
В элемент $_SERVER[`REQUEST_METHOD`] помещается метод запроса, который применяется для вызова скрипта: GET или POST.
<?php <?php echo $_SERVER[`REQUEST_METHOD`]; // GET ?>
Элемент $_SERVER[`QUERY_STRING`]
В элемент $_SERVER[`QUERY_STRING`] заносятся параметры, переданные скрипту, если строка запроса представляет собой адрес
<?php http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
то в элемент $_SERVER[`QUERY_STRING`] попадёт весь текст после знака "?". Например, при обращении к скрипту, представленному ниже, помещая в строке запроса произвольный текст после знака "?" получим страницу с введённым текстом.
<?php <?php echo $_SERVER[`QUERY_STRING`]; // id=1&test=wet&id_theme=512 ?>
Элемент $_SERVER[`PHP_SELF`]
В элемент $_SERVER[`PHP_SELF`] помещается имя скрипта, начиная от корневой директории виртуального хоста, т.е. если строка запроса представляет собой адрес
<?php http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
то элемент $_SERVER[`PHP_SELF`] будет содержать фрагмент "/test/index.php". Как правило, этот же фрагмент помещается в элемент $_SERVER[`SCRIPT_NAME`].
Элемент $_SERVER[`REQUEST_URI`]
В элемент $_SERVER[`REQUEST_URI`] содержит имя скрипта, начиная от корневой директории виртуального хоста и параметры, т.е. если строка запроса представляет собой адрес:
<?php http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
то элемент $_SERVER[`REQUEST_URI`] будет содержать фрагмент "/test/index.php?id=1&test=wet&id_theme=512". Для того, чтобы восстановить в скрипте полный адрес, который помещён в строке запроса, достаточно использовать комбинацию элементов массива $_SERVER, представленную ниже
<?php <?php echo "http://".$_SERVER[`SERVER_NAME`].$_SERVER[`REQUEST_URI`]; ?>
Для скрипта на php все переменные, которые передаются через строку браузера или через форму являются внешними. Если на сервере включена директива register_globals = On (в php.ini), то при передаче переменных через форму или через строку браузера, в скрипте, которому эти переменные предназначены, они будут созданы автоматически. Т.е. если у вас в строке браузера написано: www.server.ru/index.php?var=1, то в скрипте index.php будет автоматически создана переменная $var со значением равным 1.
При отключенной директиве register_globals доступ к таким переменным возможен двумя способами:
через ассоциативные массивы HTTP_***_VARS (HTTP_POST_VARS и т.д.)
через суперглобальные массивы ($_ENV, $_GET, $_POST, $_SERVER, $_COOKIE, $_FILES и др.)
Все данные, передаваемые вашей Web-странице, автоматически сохраняются в огромных массивах $_POST (данные, переданные методом POST) и $_GET (данные, переданные методом GET). Информация о загружаемых файлах сохраняется в специальном массиве $_FILES. Комбинированная переменная называется $_REQUEST. Для доступа к полю username формы, использующей метод POST, используйте $_POST [` username `]. Если параметр username передается в URL, используйте $_GET [ ` username ` ]. Если вы не знаете, каким методом передано значение, используйте $_REQUEST [` username ` ].
<?php <?php $post_value = $_POST[`post_value`]; $get_value = $_GET[`get_value`]; $some_variable = $_REQUEST[`some_value`]; ?>
Характеристики загруженного файла доступны через двумерный суперглобальный-массив $_FILES. При этом переменная со значениями этого массива может иметь следующий вид:
$_FILES["filename"]["name"] (содержит исходное имя файла на клиентской машине);
$_FILES["filename"]["size"] (содержит размер загруженного файла в бай-тах);
$_FILES["filename"]["type"] (содержит MIME-тип файла);
$_FILES["filename"]["tmp_file"] (содержит имя временного файла, в который сохраняется загруженный файл).
Функции для работы с датой и временем
Введение
Эти функции позволяют получить дату и время на сервере, где выполняется PHP скрипт. Используя эти функции, дату и время можно представить в различных форматах.
Замечание: Обратите внимание, что работа этих функций зависит от текущей локали на сервере. Также следует принимать во внимание летнее время и високосные годы.
Требования
Эти функции всегда доступны.
Установка
Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.
Настройка во время выполнения
Данное расширение не определяет никакие директивы конфигурации в php.ini.
Типы ресурсов
Данное расширение не определяет никакие типы ресурсов.
Предопределенные константы
Данное расширение не определяет никакие константы.
Содержание
checkdate -- Проверяет правильность даты по грегорианскому календарю
date_default_timezone_get -- Выводит временную зону по умолчанию, используемую всеми функциями даты/времени в скрипте
date_default_timezone_set -- Устанавливает временную зону по умолчанию, используемую всеми функциями даты/времени в скрипте
date_sunrise -- Возвращает время восхода солнца для данного дня и местоположения
date_sunset -- Возвращает время заката солнца для данного дня и местоположения
date -- Форматирует системную дату/время
getdate -- Возвращает информацию о дате/времени
gettimeofday -- Возвращает текущее время
gmdate -- Форматирует дату/время по Гринвичу
gmmktime -- Возвращает метку времени Unix для времени по Гринвичу
gmstrftime -- Форматирует дату/время по Гринвичу с учетом текущей локали
idate -- Форматирует локальное время/дату как целое
localtime -- Возвращает системное время
microtime -- Возвращает метку времени с микросекундами
mktime -- Возвращает метку времени для заданной даты
strftime -- Форматирует текущую дату/время с учетом текущей локали
strptime -- Выполняет разбор времени/даты, представленное функцией strftime()
strtotime -- Преобразует текстовое представление даты на английском языке в метку времени Unix
time -- Возвращает текущую метку времени
Функции для работы с файловой системой
Введение
Требования
Никакие внешние библиотеки не требуются для сборки этого расширения, но если вы хотите, чтобы PHP поддерживал LFS (large files, большие файлы) в Linux, вам нужно иметь последнюю версию glibc и скомпилировать PHP со следующими флагами компилятора: -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64.
Установка
Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.
Настройка во время выполнения
Поведение этих функций зависит от установок в php.ini.
Таблица 1. Директивы конфигурации для файловых систем и потоков
Имя |
Значение по умолчанию |
Область изменения |
allow_url_fopen |
"1" |
PHP_INI_SYSTEM |
user_agent |
NULL |
PHP_INI_ALL |
default_socket_timeout |
"60" |
PHP_INI_ALL |
from |
NULL |
?? |
auto_detect_line_endings |
"Off" |
PHP_INI_ALL |
Краткое разъяснение конфигурационных директив.
allow_url_fopen boolean
Данная директива включает поддержку упаковщиков URL (URL wrappers), которые позволяют работать с объектами URL, как с обычными файлами. Упаковщики, доступные по умолчанию, служат для работы судаленными файлами с использованием протокола ftp или http. Некоторые расширения, например, zlib, могут регистрировать собственные упаковщики.
Замечание: Эта настройка может быть установлена только в php.ini из соображений безопасности.
Замечание: Эта директива была представлена сразу же после выхода PHP версии 4.0.3. В этой и в последующих версиях эта функциональность может быть отключена только во время компиляции PHP с помощью ключа --disable-url-fopen-wrapper.
-
Внимание
В версиях PHP, более ранних, чем 4.3.0, для платформ Windows, поддержка работы с удаленными файлами отсутствует для следующих функций: include(), include_once(), require(), require_once() и функции imagecreatefromXXX расширения Ссылка LIV, Image Functions.
user_agent string
Устанавливает строку "User-Agent" для использования ее PHP при запросах к удаленным серверам.
default_socket_timeout integer
Значение таймаута (в секундах) для потоков, использующих сокеты.
Замечание: Данная директива стала доступна с версии PHP 4.3.0
from="joe@example.com" string
Устанавливает пароль для анонимного доступа к серверу ftp (ваш адрес электронной почты).
auto_detect_line_endings boolean
Когда данная директива включена, PHP проверяет данные, получаемые функциями fgets() и file() с тем, чтобы определить способ завершения строк (Unix, MS-Dos или Macintosh).
Данная директива позволяет PHP взаимодействовать с системами Macintosh, однако, по умолчанию эта директива выключена, поскольку при ее использовании возникает (несущественная) потребность в дополнительных ресурсах для определения символа окончания первой строки, а также потому, что программисты, использующие в системах Unix символы перевода строки в качестве разделителей, столкнутся с обратно-несовместимым поведением PHP.
Замечание: Эта директива стала доступна с версии PHP 4.3.0
