Справочник по PHP - white cat
Шрифт:
Интервал:
Закладка:
Пример:
// Здесь мы используем unserialize() для загрузки
данных о сессии из базы данных
// в $session_data. Этот пример дополняет
описанный в месте
// с serialize() .
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"SELECT data FROM sessions WHERE id = ?");
$sqldata = array($PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata) ||
!odbc_fetch_into($stmt, &$tmp)) {
// Если сбой запуска или выборки ,
// то инициализируем массив
$session_data = array();
} else {
// Мы должны иметь представление в $tmp[0].
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// Что-то неправильно, инициализируем массив
$session_data = array();
}
}
uniqid
Генерирует уникальный идентификатор.
Синтаксис:
int uniqid(string prefix [, boolean lcg]);
Функция uniqid() возвращает уникальный идентификатор, основанный на текущем времени в микросекундах и имеющий префикс prefix.Префикс может быть полезен, например, если Вы генерируете идентификаторы одновременно на отдельных хостах, которые, могли бы случилось, генерировали идентификатор в одной и той же микросекунде. Префикс может быть длиной до 114 символов.Если в качестве его значения передается пустая строка, то длина сгенерированного идентификатора будет 13 символов (при lcg=true - 23 символа).
Если указан необязательный аргумент lcg со значением true, к концу идентификатора будет добавляться "комбинированный хеш энтропии LCG", делающий его значение более уникальным.
Принято также дообрабатывать полученное значение криптографическими методами (например, это часто делается в идентификаторах сессий).
// без случайной части
$token = md5(uniqid(""));
// посложнее
$better_token = md5(uniqid(rnad()));
Эти строки генерируют 32 байта (128-битное шестнадцатеричное число): они обладают максимальной унакальностью, которая только может потребоваться.
Почтовые функции
Отсылает почту.
Синтаксис:
mail($to, $subject, $msg [,$headers]);
Функция mail() посылает сообщение с телом $msg (это может быть "многострочная строка", т.е. переменная, содержащая несколько строк, разделенных символом перевода строки) по адресу $to. Можно задать сразу несколько получателей, разделив их адреса пробелами в параметре $to.
Пример:
mail("[email protected] [email protected]",
"Мое сообщение",
"Первая строкаnВторая строкаnТретья строка"
);
В случае, если указан четвертый параметр, переданная в нем строка вставляется между концом стандартных почтовых заголовков (таких как To, Content-type и т.д.) и началом текста письма. Обычно этот параметр используется для задания дополнительных заголовков письма.
Пример:
mail("[email protected] [email protected]",
"Тема",
"Тело письма",
"From: [email protected]".
"Reply-To: [email protected]".
"X-Mailer: PHP/" . phpvarsion()
);
Функции запуска программ
escapeshellcmd
Убирает shell метасимволы.
Синтаксис:
string escapeshellcmd(string command);
Убирает любые символы в строке, которые могут быть использованы в командном интерпретаторе как произвольные команды. Эту функцию нужно использовать, что бы убедится, что все ваши данные введены правильно, и эту функцию лучше всего вставлять в функции exec() или system().
Стандартное использование этой функции выглядит так:
system(EscapeShellCmd($cmd))
exec
Запуск внешней программы.
Синтаксис:
string exec(string command [, string array [, int return_var]]);
Функция exec() скрыто от пользователя запускает программу из строки command, весь стандартный вывод отключен. Возвращает последнюю строку результата выполнения программы.
Если параметр array установлен, то указанный массив будет заполнен выводом из программы. Помните, если массив уже содержит данные, то exec() добавляет свои данные в конец массива. Для очистки массива можно использовать функцию unset().
Если параметр return_var установлен наряду с параметром array, то в него записывается результат выполнения команды.
<?php
$se = "dir c:";
$s0 = exec($se, $sa, $sr);
echo "При запуске команды "$se" последняя выведенная строка была:n",
$s0,"n Код возврата ($sr) nА это все что было выведено: ";
print_r($sa);
?>
Если требуется запустить программу в фоновом режиме (на длительное время), то поток ее вывода должен быть перенаправлен в файл (или иной поток вывода); иначе по истечении допустимого времени исполнения сценария (ожидания завершения внешней программы) он будет принудительно завершен с ошибкой.
system
Запуск внешней программы с выводом результата.
Синтаксис:
string system(string command, int [return_var]);
это функция для запуска command и вывода результата. Если используется второй параметр, то в него записывается результат выполнения команды.
Вызов System() также пробует автоматически вставить в буфер вывода web сервера после каждой строки вывода, если PHP запущен как модуль сервера.
passthru
Запускает внешнюю программу и выводит данные напрямую.
Синтаксис:
string passthru(string command [, int return_var]);
Функция passthru() похожа на функцию exec() для запуска command. Если параметр return_var установлен, то результат Unix команды помещается здесь. Эта функция должна использоваться вместо exec() или system() тогда, когда вывод из Unix команды является двоичными данными, которые должны быть переданы непосредственно обратно в окно просмотра(browser). Это можно использовать, например, для запуска утилиты pbmplus для вывода непосредственно потока изображения. Установка типа image/gif и вызов программы pbmplus, чтобы вывести gif-рисунок, вы можете создавать PHP скрипты, которые выводят изображения непосредственно.
Функции динамической загрузки
dl
Загрузка библиотеки расширения PHP во время выполнения.
Синтаксис:
int dl(string library);
dl("extensions/php_db.dll");
Загружает PHP расширение определенное в library.
get_loaded_extensions
Определения перечня загруженных модулей.
Синтаксис:
array get_loaded_extensions(void);
Возвращает массив, содержащий список имен модулей PHP, которые были скомпилированны, загружены при старте PHP и загружены во время исполнения функцией dl().
print_r (get_loaded_extensions());
Выводит информацию, подобную следующей:
Array( [0] => standard [1] => bcmath [2] => calendar [3] => ctype [4] => com [5] => ftp [6] => mysql [7] => odbc [8] => overload [9] => pcre [10] => session [11] => tokenizer [12] => xml [13] => wddx [14] => zlib [15] => exif [16] => gd [17] => zip)
extension_loaded
Проверка загрузки модуля.
Синтаксис:
bool extension_loaded(string name);
Возвращает true, если указанный модуль name уже был загружен. Следует обращать внимание на то, как пишется имя модуля, и на регистр символов.
get_extension_funcs
Определение функций модуля.
Синтаксис:
array get_extension_funcs(string module_name);
Возвращает массив, содержащий перечисление имен функций, содержащихся в модуле module_name. Этот модуль должен быть предварительно загружен.
print_r(get_extension_funcs("xml"));
Информационные функции
phpinfo
Выводит текущее состояние всех параметров PHP.
Синтаксис:
int phpinfo([int what])
Для сокращения объема выводимой информации можно указать один из следующих разделов what (если он не указывается, то подразумевается INFO_ALL):
Эта функция,которая в общем-то не должна появляться в законченной программе, выводит в броузер большое количество различной информации, касающейся настроек PHP и параметров вызова сценария. Именно, в стандартный выходной поток (то есть в браузер пользователя) печатается:
Функция phpinfo() в основном применяется при первоначальной установке PHP для проверки его работоспособности (уж больно много она выдает информации).
phpversion
Возвращает текущую версию PHP.
Синтаксис:
string phpversion();
Возвращает строку, содержащую название версии интерпретатора PHP.
echo phpversion();
phpcredits
HTML-распечатка разработчиков PHP.
Синтаксис:
void phpcredits(inf flag);
Выводит информацию о создателях и их вкладе в разработку пакета PHP.