11 Изменения в работе с PHP-программами
В версии PHP 4.3.1 установлены новые правила формирования
глобальных переменных - входных параметров PHP-программы и
системных переменных: в
целях обеспечения безопасности операционной системы отключен режим
автоматического присвоения значений переменным. Для выбора значений
необходимо выполнить обращения к соответствующим ассоциативным массивам.
Параметры PHP-программ
Передача параметров PHP-программам может выполняться различными
способами:
- при обращении в CGI-режиме из HTML form-объектов c методами передачи
get и post;
- при прямом обращении к PHP-программе в URL-строке.
Обработка входных параметров
Обработка входных параметров зависит от типа обращения.
1. Метод get
Пример HTML-страницы:
<form action="http://www.jinr.ru/~petrov/php/testphp.php" method="get" >
<table>
<tr><td>
<tr><td nowrap><b>Имя счетчика:</b> <td><input
type="text"
name="counter">
<tr><td nowrap><b>ID счетчика:</b> <td><input
type="text" name="id">
<tr><td><input type="submit" value="Запрос">
</table>
</form>
Пример соответствующей PHP-программы:
<?php
$counter=$_GET['counter'];
$id=$_GET['id'];
PRINT "Counter= $counter ID= $id";
?>
2. Метод post
Пример HTML-страницы:
<form action="http://www.jinr.ru/~gvv/php/counter/testphp.php"
method="post" >
<br><b>Имя счетчика:</b> <input type="text" name="counter">
<br><b>ID счетчика:</b> <input type="text" name="id">
<br><input type="submit" value="Запрос">
</form>
Cоответствующая PHP-программа:
<?php
$counter=$_POST['counter'];
$id=$_POST['id'];
PRINT "Counter= $counter ID= $id";
?>
3. Задание параметров в URL-строке
Пример URL-строки:
http://www.jinr.ru/~petrov/php/testphp.php?counter=value1&id=value2
PHP-программа для обработки параметров этой строки будет такой же, как и
для
передачи параметров по методу get.
Кроме того, можно прочитать всю строку с входными параметрами:
$query_string = getenv ("QUERY_STRING");
PRINT "<br>query_string: $query_string<br>";
Результат выполнения:
query_string: counter=value1&id=value2
Допускается использование устаревших типов ассоциативных массивов для
вышеприведенного примера:
$counter=$HTTP_GET_VARS['counter'];
или
$counter=$HTTP_POST_VARS['counter'];
Системные переменные
Системные переменные в
PHP-программе устанавливаются также обращением к
ассоциативным массивам. Ниже приведен пример использования системных
переменных
QUERY_STRING, REMOTE_ADDR, HTTP_USER_AGENT:
$query_string = getenv ("QUERY_STRING");
$address = $_SERVER["REMOTE_ADDR"];
echo "
ADDRESS: $address";
$remote =getenv("REMOTE_ADDR");
echo "
Remote2: $remote";
$userag = getenv("HTTP_USER_AGENT");
echo "
user agent= $userag
";
echo $_SERVER["HTTP_USER_AGENT"];
Примечание:
Полезной для уточнения состояния PHP-пакета является функция
phpinfo();