Написать PHP программу, которая подсчитывает количеству посещений страницы
<?php
echo "Количествопосещений:\n";
$filename = "count.txt";
$fd = fopen( $filename,"r" );
$cont = fread( $fd, filesize( $filename ) );
fclose( $fd );
$cont=$cont+1;
$fd = fopen( $filename,"w" );
fwrite($fd, $cont);
fclose( $fd );
echo $cont;
echo " раз(а).\n";
?>
Методы получения параметров из HTML форм в PHP программе. Рассмотреть методы передачи GET и POST.
Метод запроса GET
Формат запроса: GET сценарий?параметры HTTP/1.0
» Переменные окружения: REQUEST_URI; в переменной QUERY_STRING сохраняется значение и параметры, в переменной REQUEST_METHOD — ключевое слово GET.
Этот заголовок является обязательным (если только не применяется метод POST) и определяет адрес запрашиваемого документа на сервере. Также задаются параметры, которые пересылаются сценарию (если сценарию ничего не передается, или же это обычная статическая страница, то все символы после знака вопроса и сам знак опускаются). Вместо строки HTTP/1.0 может быть указан и другой протокол - например, HTTP/1.1. Именно его соглашения и будут учитываться сервером при обработке данных, поступивших от пользователя, и других заголовков.
Строка сценарий?параметры задается в том же самом формате, в котором она входит в URL. Неплохо было бы назвать эту строку как-нибудь более реалистично, чтобы учесть возможность присутствия в ней командных параметров. Такое название действительно существует и звучит как URI (UniversalResourceIdentifier - Универсальный идентификатор ресурса). Очень часто его смешивают с понятием URL (вплоть до того, что это происходит даже в официальной документации по стандартам HTTP). Под словом URL мы понимаем полный путь к некоторойWeb-странице вместе с параметрами, а URI - это его часть, расположенная после имени (или IP-адреса) хоста и номера порта.
Пускай нам нужно передать в файл три переменных $a, $b и $c методом GETи вывести их сумму на экран. Для этого можно использовать следующий код:
$a = $_GET['a']; |
$b = $_GET['b']; |
$c = $_GET['c']; |
$summa = $a + $b + $c; |
echo "Сумма $a + $b + $c = $summa"; |
Метод запроса POST
Формат запроса: POST сценарий?параметры HTTP/1.0
» Переменная окружения: REQUEST_URI; в переменной QUERY_STRING сохраняется значение и параметры, в переменной REQUEST_METHOD — слово POST.
Настал момент рассмотреть метод POST. Приведем сразу практический пример метода запроса POST:
POST /script.cgi HTTP/1.0\n
Content-length: 6\n
\n
Hello!
Сервер начнет обработку запроса, не дожидаясь передачи данных после маркера конца заголовков. Иными словами, сценарий запустится сразу же после отправки \n\n, а уж ждать или не ждать, пока придет строка Hello! длиной 6 байт - его дело. Последнее означает, что сервер никак не интерпретирует POST-данные (точно так же, как он не интерпретирует некоторые заголовки), а пересылает их непосредственно сценарию. Но как же сценарий узнает, когда данные кончаются, т. е. когда ему прекращать чтение информации, поступившей от браузера? В этом ему поможет переменная окружения Content-Length, и именно на нее следует ориентироваться.
Зачем нужен метод POST? В основном для того, чтобы передавать большие объемы данных. Например, при загрузке файлов через Web или при обработке больших форм, об этом мы поговорим далее. Кроме того, метод POST часто используют для эстетических целей: дело в том, что при применении GET, как вы, наверное, уже заметили, URL сценария становится довольно длинным и неизящным. Переданные сценарию параметры не отображаются в окне браузера, POST-запрос оставляет URL без изменения.
Код первого файла с формой для отправки данных. Дадим ему название post-1.php
<!--Форма --> | |
<form action="post-2.php" method="post" name="form1" target="_blank"> |
<!--Текстовые поля --> | |
<p><input name="name" type="text" size="20"></p> |
<p><input name="lastname" type="text" size="20"></p> | |
<!--Кнопка --> |
<p><input name="submit" type="submit" value="Передать"></p> | |
</form> |