на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Web-программирование. Обработка HTML-форм
p align="left">Для вставки HTML-кода в тело сценария достаточно закрыть скобку ?>, написать этот код, а затем снова открыть ее при помощи <?, и продолжать программу.

Чаще нужно делать не вставки HTML внутрь программы, а вставки кода внутрь HTML. Целесообразно отделять HTML-код от программы, например, поместить его в отдельный файл, который затем подключается к программе при помощи инструкции include.

Вот, например, как будет выглядеть сценарий, который приветствует пользователя по имени, с применением альтернативного синтаксиса if-eise.

Листинг ifelse.php. Сценарий, который приветствует пользователя по имени

<! - - Альтернативный синтаксис if-else. - ->

<?

if (isset($_REQUEST['go'])):?>

Привет, <?=$_REQUEST['name']?>!

<?else:?>

<form action=”<?=$_SERVER['REQUEST_URL']?>” method=post>

Ваше имя: <input type=text name=name><br>

<input type=submit name=go vа1uе=”0тослать!”>

<?endif?>

В окне браузера форма выглядит следующим образом:

Теперь усовершенствуем скрипт -- сделаем так, чтобы при запуске без параметров сценарий выдавал документ с формой, а при нажатии кнопки -- выводил нужный текст. Самый простой способ определить, был ли сценарий запущен без параметров -- проверить, существует ли переменная с именем, совпадающим с именем кнопки отправки. Если такая переменная существует, то пользователь запустил программу, нажав кнопку (листинг 4).

Листинг lock.php. Усовершенствованный скрипт блокировки сервера

<?

if ( !isset($_REQUEST['doGo'] ) )

{

?>

<form action=”<?=$_SERVER['SCRIPT_NAME']?>”>

Имя: <input type = text name=”login” value=””><br>

Пароль: <input type = password narae=”password” value=””><br>

<input type=submit name=”doGo” value=”Haжмитe кнопку!”>

</form>

<?

}

else

{

if ($_REQUEST['login']==”root” && $_REQUEST['password']==”Zl0N0101”)

{

echo «Доступ открыт для пользователя $_REQUEST[login]»;

//Команда блокирования рабочей станции (работает в NT-системах)

system(“rundll32.exe user32.dll,LockWorkStation”);

}

else

{

echo “Доступ закрыт!”;

}

}

?>

В окне браузера форма выглядит следующим образом:

Из этого примера можно почерпнуть несколько полезных приемов:

? Конструкция <?=выражение?> является более коротким обозначением для <?echo выражение?>, и предназначена для того, чтобы вставлять величины прямо в HTML-страницу.

? В параметре action тега <form> не задано явно имя файла сценария, а извлекли его из переменной окружения script_name (которая, как и все такие переменные, хранится в массиве $_server). Это позволило не «привязываться» к имени файла, т. е. теперь можно его в любой момент переименовать без потери функциональности.

В старых версиях РНР 4 переменная $script_name могла содержать неправильное значение. Например, если воспользоваться способом инсталляции, когда устанавливают РНР как внешнюю программу, а не модуль Apache, в РНР версии 4.1 и младше переменная $script_name будет содержать строку /_php/php.exe, что, конечно же, нам не подходит. «Правильное» значение в этом случае можно найти в переменной окружения redirect_url или в переменной РНР $redirect_url. Однако учтите, что в Unix, наоборот, redirect_url работать не будет! РНР 5 всех этих недостатков лишен.

? Исчезла необходимость в промежуточном файле form.html: его код встроен в сам сценарий.

2.3. Трансляция переменных окружения

«Интеллектуальные» возможности РНР на этом далеко не исчерпываются. Дело в том, что в переменные преобразуются не только все данные формы, но и переменные окружения (включая query_string, content_length и многие другие).

Например, приведем сценарий (листинг 5), печатающий IP-адрес пользователя, который его запустил, а также тип его браузера (эти данные хранятся в переменных окружения remote_user и http_user_agent, доступных в скрипте через массив $_server).

Листинг ip.php. Вывод IP-адреса из браузера пользователя

<! - - Вывод IP-адреса и браузера пользователя - ->

Ваш IP-адрес: <?=$_SERVER['REMOTE_ADDR']?><br>

Ваш браузер: <?=$_SERVER['HTTP_USER_AGENT']?>

2.4. Работа с cookies

Использование cookies удобно как для программистов, так и для пользователей. Пользователям не приходится каждым раз заново вводить информацию о себе, а программистам cookies помогают легко и надежно сохранять информацию о пользователях.

Cookies -- это файлы, хранящие строки, содержащие пары «имя-значение». С этими строками связан URL, по которому браузер определяет, нужно ли посылать cookies на сервер. В отличие от сеансовых переменных, которые хранятся на сервере, cookies расположены на клиентской машине.

Установка cookies

Установка cookies производится с помощью функции setcookie:

bool setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

Эта функция имеет следующие аргументы:

name -- имя cookie;

value -- значение, хранящееся в copkie с именем name;

expire -- время в секундах с 1 января 1970 года. По истечении этого времени cookie становится недействительным;

path -- путь, по которому доступен cookie;

domain -- домен, из которого доступен cookie;

secure -- директива, определяющая, доступен ли cookie не по запросу HTTPS (HyperText Transmission Protocol, Secure -- протокол защищенной передачи гипертекстов). По умолчанию эта директива имеет значение 0, что означает возможность доступа к cookie по обычному запросу HTTP.

2.4.1. Пример приложения с cookies

Создадим сценарий, подсчитывающий при помощи cookies количество обращений посетителя к странице. Необходимо устанавливать cookie перед отправкой в браузер каких-либо заголовков, поскольку сами cookies устанавливаются в виде заголовков. Потому, если установить cookies после какого-либо текста, отправляемого в браузер, то возникнет ошибочная ситуация.

Заметим, что в листинге мы обращаемся к переменной $counter, в которой хранится значение cookie, как к глобальной, что требует наличия включенной директивы register globais. Если эта директива отключена, то значение, хранящееся в cookie, можно получить через глобальные массивы $HTTP_COOKIE VARS[»name»] и $_COOKIE[»name»].

Листинг cookie.php. В cookie с именем counter храниться число посещений страницы пользователем (register globais=off)

<?

$_СООКIЕ['counter']++;

setcookie(“counter”,$counter);

echo 'Вы посетили эту страницу: '.$_COOKIE['counter'].' раз.';

?>

В окне браузера выглядит следующим образом:

Некоторые пользователи отключают cookies в своих браузерах. Поэтому для корректной работы приложения, использующего cookies, в него следует помещать код, проверяющий, включены ли cookies у посетителя. Если нет, то пользователю сообщается о необходимости включить cookies.

Листинг cookie_pr. Пример кода проверяющего включение cookie

<?

if (!$cookie)

{

//посылаем заголовок переадресации на страницу,

//с которой будет предпринята попытка установить cookie

header(“Location: $PHP_SELF?cookie=l”);

// устанавливаем cookie с именем «test»

setcookie(“test”,”1”);

}

else

{

if (!$test)

{

echo(«Для корректной работы приложения необходимо включить cookies»);

}

else

{

//cookie включены, переходим на нужную страницу

header(“Location: http://localhost/testl.php “);

}

}

?>

Функцию setcookie () всего лишь посылает в браузер пользователя cookie с указанным именем и значением.

2.5. Обработка списков с множественным выбором

В списках множественного выбора можно выбрать не одно, а сразу несколько значений. Чтобы сделать список с множественным выбором, необходимо для тега SELECT указать атрибут multiple:

<select name=month2 multiple>

<option value=01>Январь</option>

<option value=02>Февраль</option>

<option value=03>Mapт</option>

<option value=04>Апрель</option>

<option value=05>Maй</option>

<option value=06>Июнь</option>

<option value=07>Июль</option>

<option value=08>Август</option>

<option value=09>Ceнтябрь</option>

<option value=10>Oктябрь</option>

<option value=11>Hоябрь</option>

<option value=12>Декабрь</option>

</select>

После отправки формы параметры передаются так: name=value1&name=value2&name=value3...

Переменная $name = month2 будет содержать только последнее значение (value N).

Пусть выбрали Maй и Август. Тогда после отправки формы сценарию придет строка параметров month2 = Maй&month2 = Август, и в переменной $_REQUEST ['month2'] окажется, конечно, только Август.

Первый пункт (Maй) потерялся. Для решения подобных проблем в РНР предусмотрена возможность давать имена полям формы в виде «массива с индексами» month2[](квадратные скобки - это признак массива.):

<select name=”month2[]”multiple>

<option value=01>Январь</option>

<option value=02>Февраль</option>

<option value=03>Mapт</option>

<option value=04>Апрель</option>

Страницы: 1, 2, 3, 4, 5, 6, 7



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.