Читайте также:
|
|
Заголовок 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 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Работа с сессиями | | | Распространенные ошибки |