Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Использование HTTP-заголовков

Читайте также:
  1. D. Использование несколькими пользователями.
  2. II. Использование различных типов фотоплёнок.
  3. IV Использование компьютеров
  4. IV. Использование светофильтров при съёмке и печати.
  5. VI. Использование материалов портфеля индивидуальных образовательных достижений.
  6. VII. Порядок учета коммунальных услуг с использованием приборов учета, основания и порядок проведения проверок состояния приборов учета и правильности снятия их показаний
  7. А) да, их использование в последнее время относится к профилактической эндодонтии

Заголовок HTTP (протокола передачи гипертекста) используется для передачи информации между сервером и клиентом (Web-браузером). Обычно эта информация существует в форме HTML, вот почему адреса Web-страниц начинаются с записи http://.

HTTP-заголовки - это достаточно сложная тема, которая заслуживает отдельного рассмотрения. HTTP-заголовки могут использоваться в разных целях.

В языке РНР доступ к деталям протокола HTTP выполняется через специальную функцию header (). Одна из задач, выполняемых с помощью этой функции, - переадресация пользователя с одной страницы на другую. (Дополнительную информацию по этому вопросу вы можете получить по адресу http://

www.w3.org/ProtocoIs/rfc2616/rfc2616.)

Для переадресации пользователя применяется следующий код:

header("Location:page.php");

Функцию заголовка разрешается использовать и для отправки cookie-файлов в целях дублирования функции setcookie (), которая иногда выдает разные результаты в разных браузерах:

header("Set-cookie:name=value;expires=expiration");

Используя функцию header ().., необходимо понимать следующее: она должна быть вызвана до того, как что-либо было отправлено в Web-браузер, так же как и в случае с функцией setcookie ().

Чтобы показать переадресацию, создадим простой сценарий, который бу-

дет направлять пользователя при аутентификации на одну страницу, если были

введены правильные имя и пароль, и на другую - в противном случае.

Использование функции header

1. Создайте новый PHP-документ в текстовом редакторе:

<?php

2. Присвойте странице название и включите файл заголовка.

$PageTitle-= "Login Page";

require ("header.php");

3. Создайте условную инструкцию, которая напечатает сообщение, если при аутентификации пользователь допустил ошибки.

if ($Message == "Invalid") {

print ("<BxCENTERxFONT COLOR=RED>The username and password

—you entered do not match what is on file. Please try again!</FONT>

-</CENTERx/B>\n");

Если переданные имя и пароль не соответствуют хранящимся в файле, пользователь будет отправлен обратно к этой странице со значением переменной $Message, равным Invalid. Появится сообщение об ошибке.

4. Создайте HTML-форму для ввода имени пользователя и пароля.

print ("<FORM ACTION=\"HandleLogin.php\" METHOD=POST>\n");

print ("Username: <INPUT TYPE=TEXT NAME=UserNamexBR>\n");

print ("Password: <INPUT TYPE=PASSWORD NAME=PasswordxBR>\n");

print ("<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Submit!\">\n");

5. Включите файл нижнего колонтитула и закройте РНР-страницу.

require ("footer.php");

6. Сохраните сценарий как login.php (листинг 13.6) и загрузите его на сервер.

Листинг 13.6 т Печатать сообщения об ошибке вполне разумно, так как вы наверняка захотите дать пользователю еще одну попытку, если подлинность его имени и пароля не установлена.

1 <?php ' - -

2 $PageTitle = "Login Page";

3 require ("header.php");

4 if ($Message == "Invalid") {

5 print ("<BxCENTERxFONT COLOR=RED>The username and password you entered do not match what is on file. Please try again!</FONT>

</CENTERx/B>\n");

6 }

7 print ("<FORM ACTION=\"HandleLogin.php\" METHOD=POST>Vn");

8 print ("Username: <INPUT TYPE=TEXT NAME=UserNamexBR>\n");

10 print ("<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Submit!\">\n");

11 require ("footer.php");

12?>

Теперь необходимо создать страницу, где будут проверяться введенные имя

и пароль пользователя.

7. Создайте новый PHP-документ в текстовом редакторе:

<?php

8. Создайте условную конструкцию, которая будет проверять соответствие

значений переменных $UserName и $Password.

if (($UserName == "Larry") && ($Paseword == "LarryPass")) {

Эта условная инструкция проверяет, соответствуют ли имя пользователя

и пароль хранящимся в файле. Вы можете написать сценарий, котррый будет

находить в базе, пароль по имени пользователя. Обычно в целях безопасности

эти значения явно не прописываются в сценарии, а извлекаются из базы дан-

ных или текстового файла. Однако в нашем примере мы проверяем эти значе-

ния прямо в сценарии.

9. Если введенные данные правильны, направим пользователя на главную страницу.

header ("Location: index.php?UserName=$UserName");

exit;

Это выражение переправит пользователя на ресурс index.php. Туда также будет отправлено значение имени пользователя.

Инструкция exit; «говорит» РНР прекратить выполнение кода этой страницы, так как пользователь уже отправлен на другую.

10. Закончим условную конструкцию и направим пользователя обратно на страницу.аутентификации в случае неверного пароля.

} else {

header ("Location: login.php?Message=Invalid");

exit;

}

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

будет отправлен на страницу login.php. Код?Message=Invalid, добавленный к URL, заставит сценарий login.php напечатать сообщение об ошибке (см. также листинг 13.6).

11. Закройте РНР-страницу.

?>

12. Сохраните сценарий как HandleLogin.php (листинг 13.7) и загрузите его на сервер.

Листинг 13.7 Этот сценарий будет проверять подлинность имени пользователя и пароля с помощью заранее определенных значений и перенаправлять пользователя соответствующим образом. Вне тэга РНР в этом сценарии не должно быть лишних пробелов, иначе функция header () выдаст ошибку.

1 <?php

2 if (($UserName == "Larry") && ($Password == "LarryPaes")) {

3 header ("Location: index.php?UserName=$UserName");

4 exit;

5 } else {

6 header ("Location: login.php?Message=Invalid");

7 exit;

8 }

9?>

Модифицируем исходную страницу index.php, чтобы на экране появлялось приветственное сообщение,

13. Откройте файл index.php в текстовом редакторе (листинг 13.3).

14. Замените строку 4 на следующую:

print ("Greetings,$UserName!\n");

15. Сохраните сценарий как index.php (листинг 13.8), загрузите его на сервер и протестируйте все страницы начиная с login.php в Web-браузере (рис. 13.8-13.10).

Листинг 13.8 Мы добавили персонифицированное приветствие, что сделало страницу более динамичной. Значение переменной $UserName передается из функции header () (листинг 13.7).

1 <?php

2 $PageTitle = "Home Page";

3 require ("header.php");

4 print ("Greetings, $OserName!\n");

5 print <"<P>Click <A HREF=\"page2.php\">here</A> to go to the next

page.\n");

6 -require ("footer.php");

7?>

 

Отправка электронной почты с помощью РНР

1. Создайте новый PHP-документ в текстовом редакторе.

<?php

2. Присвойте странице имя и включите файл заголовка.

$PageTitle = "Sending Emails";

require ("header.php");

3. Создайте условную конструкцию для обработки переданной формы.

if ($BeenSubmitted) {

4. Если был передан адрес электронной почты получателя, отправьте сооб-

щение.

if ($MailTo) {

if (mail($MailTo, $Subject, $Body, "From: $MailFrom")) {

print ("<BxCENTERxFONT COLOR=BLUE>Your email has been

-successfully sent!</FONTx/CENTERx/B>\n");

} else {

print ("<BxCENTERxFONT COLOR=RED>Your email was not

—successfully sent due to a system error!</FONTx/CENTER>

Мы поместили функцию mail () в условную конструкцию, чтобы пользова-

тель получил сообщение, если почта успешно отправлена.

5. Закончите условные конструкции.

} else {

print ("<BxCENTERxFONT COLOR=RED>Please enter the recipient's

-mail to address! </FONTx/CENTERx/B>\n");

6. Закройте PHP-раздел и создайте HTML-форму, в которую вводятся два

адреса электронной почты, тема, само письмо и скрытое значение для

определения того, была ли форма передана.

?>

<FORM ACTION="email.php" METHOD=POST> Recipient's Email Address:

-<INPUT TYPE=TEXT NAME='"MailTo" SIZE="50"xBR>, '

Your Email Address: <INPUT TYPE=TEXT NAME="MailFrom" SIZE="50"xBR>

Email Subject: <INPUT TYPE=TEXT NAME=" Subject" SIZE="80"xBR>

Email Body: <TEXTAREA NAME="Body" ROWS="10" COLS="50">

</TEXTAREAxP>

<INPUT TYPE=HIDDEN NAME=BeenSubmitted VALUE=TRUE>

<INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE*" Submit!">

7. Закройте форму и включите файл нижнего колонтитула.

</FORM>

<?php

require ("footer.php");

?>

8. Сохраните сценарий как email.php (листинг 13.9), загрузите его на сервер

и протестируйте в браузере (рис. 13.11-13.14).

Листинг 13.9 В РНР для отправки электронной почты предназначена

только одна функция - mail (). Мы поместили вызов функции mail О Внутри

различных условных конструкций, чтобы почта отправлялась только после ука-

зания адреса получателя..

1 <?php

2 SPageTitle = "Sending Emails";

3 require ("header.php");

4 if (SBeenSubmitted) {

5 if ($MailTo) {

6 if (mail($MailTo, $Subject, $Body, "From: $MailFrom")) {

7 print ("<BxCENTERxFONT COLOR=BLUE>Your email has

been successfully sent!</FONTx/CENTERx/B>\n");

8 } else {

9 print ("<BxCENTERxFONT COLOR=RED>Your email was not

successfully sent due to a system error!</FONTx/CENTER>

10 }

11 } else {

12 print ("<BxCENTERxFONT COLOR=RED>Please enter the recipient's

mail to address! </FONTx/CENTERx/B>\n");

13 }

14 }

15?>

16 <FORM ACTION="email.php" METHOD=POST>

17 Recipient's Email.Address: <INPUT TYPE=TEXT NAME="MailTo"

SIZE="50"xBR>

18 Your Email Address: <INPUT TYPE=TEXT NAME="MailFrom" SIZE="50"xBR>

19 Email Subject: <INPUT TYPE=TEXT NAME=" Subject" SIZE="80"xBR>

20 Email Body: <TEXTAREA NAME="Body" ROWS="10" COLS="50">

21 </TEXTAREAxP>

22 <INPUT TYPE=HIDDEN NAME=BeenSubmitted VALUE=TRUE>

23 < INPUT TYPE=SUBMIT NAME=" SUBMIT" VALUE=" Submit! ">

24 </FORM>

25 <?php

26 require ("footer.php");

27?>

 


Дата добавления: 2015-08-13; просмотров: 98 | Нарушение авторских прав


Читайте в этой же книге: Лабораторная работа 6 - Массивы | Лабораторная работа 9 - Работа с функциями. Область видимости переменных. | Задание | Задание | Приоритет операторов и управление им | Использование параметров по умолчанию | Работа со строками | Практическая работа № 6 | Основы работы с DOM | Работа с регулярными выражениями |
<== предыдущая страница | следующая страница ==>
Работа с сессиями| Распространенные ошибки

mybiblioteka.su - 2015-2024 год. (0.017 сек.)