Учебник РНР
Назад Глава 7. Переменные Вперёд

Переменные вне PHP

HTML-формы (GET и POST)

Когда форма отправляется в PHP-скрипт, любые переменные этой формы автоматически делаются доступными скрипту PHP. Если опция конфигурации track_vars включена/on, то эти переменные будут находиться в ассоциативных массивах $_POST, $_GET и/или $_FILES, в соответствии с источником переменной в вопросе.

Дополнительно об этих переменных см. Предопределённые переменные.

Пример 7-1. Простая переменная формы
<form action="foo.php" method="post">
    Name: <input type="text" name="username"><br>
    <input type="submit">
</form>

Когда такая форма отправляется на сервер, значение из поля ввода text будет доступно в $_POST['username']. Если директива конфигурации register_globals включена/on, то эта переменная будет также доступна как $username в глобальной области видимости.

Примечание: директива конфигурации magic_quotes_gpc действует на значения Get, Post и Cookie. Если она включена, значение (It's "PHP!") автоматически становится (It\'s \"PHP!\"). Мнемонизирование необходимо для вставки в БД. См. также addslashes(), stripslashes() и magic_quotes_sybase.

PHP также понимает массивы в контексте переменных формы (см. соответствующий faq). Вы можете, например, сгруппировать взаимосвязанные переменные или использовать эту возможность для запроса значений из списка множественного выбора select:

Пример 7-2. Более сложные переменные формы
<form action="array.php" method="post">
    Name: <input type="text" name="personal[name]"><br>
    Email: <input type="text" name="personal[email]"><br>
    Beer: <br>
    <select multiple name="beer[]">
        <option value="warthog">Warthog
        <option value="guinness">Guinness
        <option value="stuttgarter">Stuttgarter Schwabenbräu
        </select>
    <input type="submit">
</form>

В PHP 3 использование переменной массива формы ограничено одномерными массивами. В PHP 4 таких ограничений нет.

Имена переменных при отправке изображения

При отправке формы возможно использование изображения/image вместо стандартной кнопки submit с помощью тэга такого вида:

<input type="image" src="image.gif" name="sub">

Когда пользователь щёлкает в каком-либо месте изображения, соответствующая форма передаётся на сервер с двумя дополнительными переменными: sub_x и sub_y. Они содержат координаты щелчка. Опытные программисты могут заметить, что фактические имена переменных, отправляемые браузером, содержат точку, а не символ подчёркивания, но PHP конвертирует точку в символ подчёркивания автоматически.

Куки HTTP

PHP прозрачно поддерживает куки HTTP, как определено в Netscape's Spec. Куки это механизм хранения данных на удалённом браузере и отслеживания или идентификации с их помощью ответов пользователя. Вы можете устанавливать куки функцией setcookie(). Куки являются частью HTTP-шапки/header, поэтому функция SetCookie обязана вызываться до любого вывода, высылаемого браузеру. Это такое же ограничение, как и для функции header(). Любые куки, высылаемые вам с этого клиента, автоматически конвертируются в PHP-переменную точно так же, как и GET и POST-данные.

Если вы хотите присвоить несколько значений одной куке, просто добавьте [] в имя куки. Например:

setcookie("MyCookie[]", "Testing", time()+3600);

Обратите внимание, что эта кука/cookie замещает предыдущую куку с тем же именем, если только path или domain не отличаются. Так, для приложения shopping cart вы можете захотеть сохранить счётчик/counter и передать его. То есть:

члену массива
array - создаёт массив
arsort - сортирует массив в реверсном порядке и обслуживает ассоциацию индексов
asort - сортирует массив и обслуживает ассоциацию индексов
compact - создаёт массив из переменных и их значений
count - подсчитывает элементы в переменной
current - возвращает текущий элемент массива
each - возвращает текущую пару key/value из массива и передвигает курсор массива
end - устанавливает внутренний указатель массива на последний элемент
extract - импортирует переменные из массива в текущую таблицу символов
in_array - возвращает TRUE, если значение существует в массиве
key - извлекает a ключ/key из ассоциативного массива
krsort - сортирует массив по ключам в реверсном порядке
ksort - сортирует массив по ключам
list - присваивает переменные, как если бы они были массивами
natcasesort - сортирует массив с использованием алгоритма, без учёта регистра в "естественном порядке"
natsort - сортирует массив с использованием алгоритма "в естественном порядке"
next - передвигает вперёд внутренний указатель массива
pos - получает текущий элемент массива
prev - возвращает в начало внутренний указатель массива
range - создаёт массив, содержащий диапазон элементов
reset - устанавливает внутренний указатель массива на первый элемент
rsort - сортирует в реверсном порядке
shuffle - перемешивает массив
sizeof - получает количество элементов в переменной
sort - сортирует массив
uasort - сортирует массив с использованием пользовательской функции сравнения и обслуживает ассоциацию индексов
uksort - сортирует массив по ключам, используя пользовательскую функцию сравнения
usort - сортирует массив по значениям, используя пользовательскую функцию сравнения

Назад Оглавление Вперёд
virtual Вверх array_change_key_case
Hosted by uCoz