[0] => Video
[1] => Scan
[2] => Modem
)
)
»
а следующим РНР-
скрипт обработки формы
<?
if (!count($
GET)) exit;
$acomp = @$_GET[“comp”];
echo “comp: $acomp<BR>”;
echo “count: “.count($acomp).”<BR>”;
reset($acomp);
while (list ($key, $val) = each ($acomp))
echo “Skey => $val<BR>”;
?>
наглядно проиллюстрирует нам,
в какой удобной форме поступают
данные и как просто их обрабаты-
вать. Скрипт выдаст следующее:
comp: Array
count: 3
0 => Video
1 ~> Scan
2 => Modem
Это свидетельствует о том,
что в
переменной
$асотр
был получен массив с тремя
элементами,
и если обращаться
к массиву через
ассоциативную схему, то всё получается просто.
Аналогичным образом можно осуществить выбор
нескольких пунктов в списке
<SELECT>.
При этом
можно выбирать подряд несколько пунктов, удер-
живая левую клавишу мышки, либо удерживая кла-
вишу
CTRL
кликать по нужным пунктам, разбросан-
ным по списку. Тогда следующая форма
(рис. 4):
<form name=”variants”
action=”test_get.php”
method=:”get”><SELECT multiple=”multiple”
size-’16” name=”topics[]”>
<OPTION value-’0” selected>Bce вариан-
TbK/OPTION>
<OPTION value=”1”>BapnaHT 1</OPTION>
COPTION value=”2”>BapnaHT 2</OPTION>
COPTION value=”3”>BapnaHT 3</OPTION>
ляется то, что при таком способе отправки па-
ф
раметров
можно
совершенно
обойтись
и
без
формы, просто формируя эквивалентную ссылку.
Тем не менее, такой подход имеет и недостатки,
например, то, что длина URL ограничена приблизи-
тельно
1200
символами
и
не
позволит
передать
достаточно большой текст.
Кроме
того,
такие
адреса
остаются
в
истории
(журнале) браузера и, если логин, пароль или лю-
бая другая личная информация была передана та-
ким
открытым
способом,
то
каждый
любопытный
сможет заполучить её.
Глобальный массив $_POST
В
таких случаях применяют формы с другим ме-
тодом передачи данных - post. При этом па-
раметры так же передаются из формы в скрипт, но
в URL они не попадают, а сразу поступают в массив
$_POST
внутри скрипта.
Разумеется,
если
включён
registerjgiobals,
то
эти
параметры
сразу
же
превращаются
в
одно-
имённые переменные внутри скрипта. Но лучше не
рассчитывать на
registerjgiobais,
а обращаться к
ним через массив
$_POST.
Например, если в предыдущих четырёх примерах
заменить
m ethod=” g e t”
на
m ethod=”p o s t” ,
а
$_GET
на
$_POST,
то скрипт будет работать точно
так же,
но в строке адреса передаваемые данные
“светиться” не будут.
Глобальные массивы $HTTP_*_VARS
Д
.V
Л-.
.V.V.V.W.T.V//// '
ариант 2
Вариант 3
-AW.V/. Л’.'.'П/Л ,V.V.V.VAV.-.V.V //.V.V
Рис. 4
Сіприї type=”submit” уаІие=”Вьібрать”>
<Догт>
позволит
получить нам желаемое.
Передача параметров через иИЕ имеет свои су-
щественные преимущества, когда необходимо пе-
редать
в скрипт одну
или
несколько
переменных
небольшой длины. Ещё одним преимуществом яв-
олжен
упомянуть
о
глобальных
массивах
$HHTPJGET__VARS
и
$HHTP__POST_VARS
, ко-
торые являются устаревшими аналогами массивов
$_GET и $_POST.
В настройках РНР есть опция
register Jong
ja r-
rays,
которая определяет, следует ли регистриро-
вать устаревшие длинные предопределенные пе-
ременные типа $HTTP_*_VARS.
У некоторых хостинг-провайдеров
ее значение по умолчанию “Off”, так
как сами разработчики РНР реко-
мендуют отключить эти длинные пе-
ременные из соображений произво-
дительности. Вместо них следует
использовать суперглобальные мас-
сивы, например, $_GET и $_POST.
Если же необходимо все-таки ис-
пользовать переменные вида $HTTP_*_VARS, то в
этом
случае
можно
создать
(или
отредактиро-
вать) в нужной директории файл .htaccess, содер-
жащий такую строку:
php_flag register_long_arrays On
Переменная $_POST появилась в РНР 4.1.0.
В более ранних версиях используется
$HTTP_POST_VARS. Следить надо за совмести-
мостью переменных и функций.
ш і и iwm ffl lirti №
itio№^ iï.ilïfi.Ti<i i lïWl
1
Ї
1
У
предыдущая страница 38 Компьютер 2010 11-12 читать онлайн следующая страница 40 Компьютер 2010 11-12 читать онлайн Домой Выключить/включить текст