Июнь 2010

Самоучитель по креативному веб-дизайну. Книга 4, стр.1

Глава 10. РНР4



Тем не менее, как было упомянуто выше в этой главе, переменные

$firstName и $FirstName будут считаться разными переменными. Следователь —

но, чтобы воспользоваться значением, введенным в элементе f irstName, необхо —

димо использовать переменную $firstName (в которой регистр символов полно — стью соответствует имени элемента формы).



Использование РНР для обработки и извлечения результатов формы

В предыдущем совете было показано, каким образом данные элементов фор — мы можно извлечь в PHP-сценарии. Как вы уже знаете, значение элемента фор — мы можно использовать через переменную PHP-сценария, имя которой соответ — ствует значению атрибута name элемента формы. Таким образом, РНР-сценарий будет использовать переменную $firstName для доступа к значению элемента формы, объявленного следующим образом:



input type=»text» name=»firstName» size=»20″>



Перед использованием РНР для обработки результатов формы необходимо проверить, ввел ли посетитель данные во все обязательные поля формы. Часто также требуется проверка того, что введенные данные принадлежат к требуемому типу и не выходят за пределы допустимого диапазона. В целях достижения бо —

лее высокой эффективности проверка введенных данных осуществляется Web-бра — k

узером перед отправкой их Web-серверу.

Выполнение всех проверок Web-сервером приведет к увеличению нагрузки на сервер и необоснованному использованию пропускной способности Internet. По — сетитель может забыть ввести данные в нескольких обязательных полях и/или ввести данные, которые выходят за пределы диапазонов допустимых значений. Проверка результатов формы Web-сервером потребует от посетителя ожидания, пока Web-браузер передает неверные данные Web-серверу, причем только для того, чтобы получить сообщение о том, что введенные данные содержат ошибку.

Самоучитель по креативному веб-дизайну. Книга 4, стр.2

В процессе передачи результатов формы посетитель может отправлять неверные данные несколько раз (что опять-таки загружает сеть Internet), и Web-сервер дол — жен будет проверять корректность результатов одной и той же формы несколько раз (а это уже загружает сервер).

За счет использования внедренных на Web-страницу JavaScript — или VBScript — функций для проверки корректности данных Web-браузером вы имеете возмож — ность предложить посетителю исправить данные перед передачей Web-серверу результатов заполнения формы. Таким образом, проверка корректности результа — тов формы Web-браузером позволяет исключить многократную передачу данных

Web-серверу. JavaScript — или VBScript-функции предупреждают посетителя об ошибках в данных (или незаполненных обязательных полях) и заставляет посе —

тителя перед (однократной) передачей результатов формы Web-серверу исправить все имеющиеся ошибки.

Тем не менее, даже после проверки корректности результатов заполнения формы Web-браузером необходимо провести вторую, окончательную проверку

Глава 10. РНР4 51 5





Web-сервером. Теоретически говоря, JavaScript — или VBScript-функции, внедрен — ные в HTML-код Web-страницы, предотвратят передачу неверных данных. К со- жалению, некоторые Web-браузеры не поддерживают языки написания сценари — ев, и в целях безопасности некоторые посетители могут отключить поддержку сценариев в своих браузерах во избежание выполнения сценариев, внедренных на Web-страницах. Поэтому, чтобы убедиться, что обрабатываться будут только «кор —

Самоучитель по креативному веб-дизайну. Книга 4, стр.3

ректные данные, они еще раз проверяются на Web-сервере.



ПРАКТИКУМ

Для проверки того, что посетитель ввел данные в однострочное или многостроч — ное поле ввода текста, используется оператор равенства (==), который сравнивает значение элемента формы со строкой нулевой длины, как показано в следующем примере:



if (trim($firstName) == «»)

{

echo «** He введена фамилия **«;

$formResultsValid = false;

}

Кроме того, PHP имеет несколько встроенных функций, которые можно ис — пользовать для выяснения того, являются ли введенные в поле данные числом

(is_numeric(), is__reai() и is_intege r ()). После проверки, ввел ли посетитель

в поле ввода текста данные (и, возможно, числовые данные), можно провести дополнительные проверки, которые покажут, принадлежат ли введенные данные

к допустимому диапазону значений.

В отличие от переключателей, каждый флажок на форме является независи —

мым объектом и не входит в именованные группы. Чтобы гарантировать, что по — сетитель установил хотя бы один из флажков, которые, по вашему мнению, дол — жны быть группой, присвойте каждому флажку уникальное имя, как показано в следующем коде:



input type=»checkbox» name=»windows» value=»Windows»>Windows

input type=»checkbox» name=»mac» value=»Macintosh»>Mac

input type=»checkbox» name=»unix» value=»UnixM>Unix

Поскольку Web-браузер передает серверу пары имя/значения только для уста —

новленных флажков (т. е. флажков, которые посетитель отметил «галочкой» (или

крестиком), чтобы гарантировать, что посетитель установил хотя бы один фла —

жок, в коде можно использовать логические операторы И (&&), как показано ниже:



if ((!isset($windows)) && (!isset($mac)) && (!isset($unix)))

{

echo «Вы должны выбрать что-нибудь из набора Windows, Mac и Unix

» ;

$formResultsValid = false;

}

Встроенная РНР-функция isse t () возвращает значение true, если значение переменной, передаваемой функции, было установлено. Поскольку браузер пере —

51 6 Глава 10. РНР4





дает только значения установленных флажков, переменные флажков, не установ — ленных на форме, в PHP-сценарии значений содержать не будут.

Web-браузер работает с переключателями по группам на основании имени

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

Самоучитель по креативному веб-дизайну. Книга 4, стр.4

реключателей С именем giveOutEmailAddr:



input type=»radio» value=MYes» name=»giveOutEmailAddr»>fla Ifl

HeT

Web-браузер в каждой группе переключателей позволяет устанавливать всего один переключатель. Тем не менее, браузер вовсе не требует, чтобы был установ — лен хотя бы один переключатель. Поэтому, чтобы гарантировать, что посетитель выбрал один переключатель из группы переключателей, в коде используется встроенная функция isset() :



if (!isset($giveOutEmailAddr))

{

echo «Пожалуйста, сообщите, разрешаете ли вы использовать».

«свой адрес электронной почты» ;

$formResultsValid = false;

}

Web-браузер передает серверу только одну пару имя/значение для (одного) ус — тановленного переключателя. При этом используется имя группы. Таким обра — зом, если посетитель не установил ни одного переключателя в группе, браузер

не будет передавать серверу значение для PHP-переменной, соответствующей группе переключателей.

И, наконец, предположим, что список выбора объявлен в HTML-коде страни — цы следующим образом:



Windows 98

Windows ME

Windows XP

Macintosh

Unix

Linux



Обратите внимание на квадратные скобки ([]) , которые находятся за именем списка выбора. Если список выбора назвать просто currentos, при выборе не — скольких опций PHP-сценарий будет иметь доступ только к одной опции (пос —

Самоучитель по креативному веб-дизайну. Книга 4, стр.5

ледней выбранной в списке выбора). Это не важно, если в дескрипторе

не указан атрибут multiple, что означает, что посетитель будет иметь возмож — ность выбирать только один элемент в списке. Использование квадратных скобок ([]) после имени списка выбора позволяет передавать выбранные посетителем значения в виде массива.

Глава 10. РНР4 51 7





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

выбора, как и в предыдущем случае, будет использоваться встроенная РНР-функ —

ция isset():



if (!isset($currentOS))

{

echo «Вы должны выбрать одну или несколько операционных систем,».

«которые используете в настоящее время. » ;

$formResultsValid = false;

}

Объединяя все фрагменты кода, приведенные в этом совете, в одно целое, по — лучаем следующий сценарий проверки корректности результатов формы:



$formRe suits Valid = true;

/*

Операторы, которые выводят имена и значения элементов для элементов, со —

держащих корректные данные, и выводят имена и «сообщение об ошибке» и ус —

танавливают значение булевой переменной $formResuitsVaiid равным fals e для элементов, содержащих некорректные данные.







PHP-код, который обрабатывает результаты формы с помощью пользовательс — ких и/или встроенных функций, или сценарий, содержащийся либо здесь, либо

во внешней РНР-странице.

у

echo «»;

echo «Введенная вами информация передана «.

«на обработку. Спасибо!»;

}

//** Если форма содержит некорректные данные, вывести для посетителя

кнопку «Back» **

else

{

echo «

«;

echo «
value=\»Исправить введенную информацию\»".»

onClick=\»self. history. back()\»>»

}

?>

Полный код описания формы и сценария проверки корректности ее результа —

тов находится в файле chptiOTipO2, который доступен на сайта издателя русско —

язычной редакции ЭТОЙ КНИГИ ПО адресу http://www. diasoft. kiev. ua.

51 8 Глава 10. РНР4



Использование PHP для отправки сообщения по электронной почте

На многих Web-сайтах присутствуют гиперссылки, которые позволяют посети — телям отправлять сообщения по электронной почте людям, связанным с конк- ретным сайтом (например, Web-мастеру, сотрудникам компании или отделу по работе с клиентами, отделу маркетинга, отделу кадров и т. д.). Для создания ги — перссылки, которую можно использовать для отправки сообщения по электрон- ной почте, установите значение атрибута href дескриптора ссылки равным

«maiito:» , за которым следует адрес электронной почты, по которому Web-брау — зер должен отправить сообщение:



Konrad King



К сожалению, ключевое слово «maiito:11 , используемое для отправки сооб — щения по электронной почте, работает далеко не во всех случаях. Если посети — тель не настроил Web-браузер для запуска почтовой программы или сама почто- вая программа настроена неправильно, браузер не сможет отправить электронное

Самоучитель по креативному веб-дизайну. Книга 4, стр.6

сообщение. К счастью, РНР содержит встроенную функцию mail о, которую можно использовать для указания Web-серверу на необходимость отправки элект —

ронного сообщения с помощью локально^ или (для платформ Windows) удален — ного SMPT-сервера (т. е. почтового сервера). Таким образом, прибегая к услугам

сервера, при необходимости отправки сообщения по электронной почте вы уже

не будете зависеть от наличия в системе посетителя соответствующим образом настроенного программного обеспечения.



ПРАКТИКУМ

Перед использованием PHP-функции maii o ваш Internet-провайдер должен ус — тановить путь к SMTP-серверу (или в случае использования платформы Unix,

путь к программе sendmaii) в файле php. ini. Например, если Web-сервер ваше —

го Internet-провайдера работает под управлением операционной системы

Windows NT, провайдер должен открыть файл php. in i в каталоге winnt, а затем

установить параметры SMPT И sendmail from В разделе mail function INI-фаЙ —

ла, как показано в следующем примере:



[mail function]

SMTP = smtp. lvcablemodem. com ; только для Win32

sendmail_from = kki@NVBizNet. com ; только для Win32

;Только для Unix. Вы можете также указать аргументы

; (по умолчанию: ‘sendmaii —t — i1) .

;sendmail_path =

Для отправки сообщения по электронной почте создайте форму, аналогичную показанной на рис. 10.7, и установите значение атрибута action в дескрипторе

формы равным URL-адресу PHP-страницы, сценарий которой отправляет результаты формы в виде электронного сообщения.

PHP-сценарий будет передавать значения, введенные в поля формы, показан —

ной на рис. 10.7, в качестве параметров функции maii() . Функция maiio, в

свою очередь, будет передавать значения параметров либо программе Sendmaii

операционной системе Unix), либо SMTP-серверу.

Глава 10. РНР4 519







Синтаксис функции maii() имеет следующий вид:

mail($recipientList, $subject, $message [, $headerList

[, $parameterList]]);

Описание параметров функции приведено ниже:

• $recipientLis t Строка, содержащая список адресов электронной почты, разделенных запятыми (,).

• $subject Строка с темой сообщения.

$message Строка, которая представляет собой тело сообщения.

$headerList (Необязательный параметр) Строка, которая помещается

функцией mai l () В ЗагОЛОВОК СООбщеНИЯ. Параметры $headerLis t ДОЛЖНЫ

отделяться друг от друга сочетанием символов возврат каретки/перевод

строки (\r\i).

$parameterList Строка параметров командной строки, которая должна

быть передана функцией maii o программе sendmaii или SMTP-серверу.



Таким образом, вызов функции mail о может выглядеть следующим образом:



mail(«kki@NVBizNet. com, konrad@NVBizNet. com», «Тестовое приветственное сообщение»,

«Тело сообщения» , ^

«From: me\r\nReply-To: secret@xyz. com\r\n». «X-Sender: PHP\r\nCc: userID@domain. com»);

52 0 Глава 10. РНР4





Конечно, сценарий на Web-странице, которой Web-браузер передает результа —

ты формы (в приведенном примере это chptiOTipO3) передает функции mail о

в качестве параметров строковые переменные, а не литералы. HTML-код формы, показанной на рис. 10.7, и исходный код PHP-сценария, используемого для об- работки результатов этой формы, доступен для выгрузки на сайте http:/ /

www. diasoft. kiev. ua.



Определение, принимает ли Web-браузер посетителя cookie-наборы

Cookie-наборы представляют собой небольшие текстовые элементы данных,

которые Web-сервер может хранить и считывать из cookie-файла, который распо — ложен на жестком диске компьютера посетителя. Как вы знаете, протокол HTTP

не имеет состояния (stateless), т. е. при отправке Web-сервером отклика Web-брау — зеру в ответ на его запрос сервер не знает, является ли этот запрос первым от данного конкретного посетителя. Web-сервер просто передает файлы (Web-стра — ницы, графические изображения и т. п.) в ответ на запросы Web-браузера. Ранее просмотренные страницы и результаты взаимодействия посетителя с объектами Web-страницы (например, выбранные элементы формы) никак не отражаются на

содержимом новой страницы.

Тем не менее, если вы разрабатываете сайт с абонентским доступом, в отдель — ные разделы которого посетители должны входить с использованием пароля,

сервер должен иметь возможность отслеживать состояние посетителя, «вошедше —

го» на сайт, при его переходе от одной страницы к другой. В противном случае посетитель должен будет повторно пользоваться паролем при переходе между страницами в разделе с ограниченным доступом. Cookie-наборы дают Web-серве —

Самоучитель по креативному веб-дизайну. Книга 4, стр.7

ру возможность сохранять состояние посетителя за счет возможности хранения следующей информации:

• Настроек посетителя для сайта и ранее просмотренных им Web-страниц.

• Ключа, который ассоциирует посетителя с его личными данными, храня — щимися в базе данных сайта.

• Ключа «сеанса», который позволяет посетителю войти на сайт один раз и оставаться зарегистрированным на сайте вплоть до момента выхода с сайта или закрытия Web-браузера.

• Товаров, выбранных посетителем на сайте электронной коммерции, что

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



К сожалению, поскольку некоторые разработчики используют cookie-наборы для сбора информации о покупателях без их ведома или, что. еще хуже, переда — ют эту информацию третьим лицам, часть посетителей запрещают прием cookie —

наборов Web-браузерами. Если обработка данных сценарием Web-станиц зависит

от хранения и считывания cookie-наборов, перед входом посетителя на сайт ис- пользуйте PHP-сценарии для проверки того, принимает ли его Web-браузер cookie-наборы.

Глава 10. РНР4 52 1





ПРАКТИКУМ

Для проверки того, принимает ли Web-браузер посетителя cookie-наборы, вставь —

те следующий PHP-сценарий перед HTML-кодом Web-страницы входа на Web —

сайт или индексной страницы для записи «тестового» cookie-набора:



// Создать строку данных для использования в качестве

// «тестового» cookie-набора

$today = getDate();

$dateString = $today[•month'].» «.$today['mday '].» ,

$today['year'];

// Попытаться установить cookie-набор 1

setCookie(«TestCookie», $dateString);

// Остальная часть индексной страницы или страницы входа в систему

Если вы передаете РНР-процессору Web-страницы только с расширением

.рпр, а индексная страница сайта (т. е. его домашняя страница) имеет рас —

ширение .htm, вставьте содержимое этой страницы после приведенного выше

сценария в Web-страницу с расширением. рпр, например, в код страницы

LoginPage. php. Затем в дескриптор домашней страницы (как правило,

index. htm или defauit. htm) поместите атрибут onload, как показано ниже, ко — торый загружает РНР-страницу:





Далее на PHP-странице, которая загружается в Web-браузер при выходе посе — тителя со страницы входа на сайт или индексной страницы, вставьте следующий сценарий:



// Создать строку данных, с которой будет сравниваться

// значение cookie-набора

$today = getDate();

$dateString = $today['month'].» «.$today['mday'].», «.$today['year'];

if (!empty($testCookie))

{

if ($testCookie == $dateString)

{

// Проверить имя пользователя и пароль и если данные верны

// перейти на страницу успешного входа на сайт

header(«Location: Loggedln. htm»);

exit;

}

}

// Если cookie-набор не было установлен, вывести на экран страницу, которая

// предлагает посетителю разрешить прием cookie-наборов Web-браузером

header(«Location: NeedCookies. htm»);

exit;

?>

Проверку cookie-набора нужно разнести по двум Web-страницам, поскольку

Web-браузер передает и принимает cookie-набор только в качестве части заголов —

ка Web-страницы. Таким образом, вызов функции setcookie() в первом РНР —

52 2 Глава 10. РНР4





сценарии создает cookie-набор, который Web-сервер передает Web-браузеру в за — головке страницы входа на сайт или его домашней страницы. Web-браузер в свою очередь, сохраняет cookie-набор (в приведенном примере это текущая дата)

в cookie-файле на жестком диске в компьютере посетителя. При переходе посе — тителем между страницами сайта Web-браузер передает все cookie-наборы (в при —

веденном примере это Testcookie) Web-серверу в качестве части HTML-запроса новой страницы.

При получении Web-сервером запроса на передачу PHP-страницы, сервер пе — редает на обработку РНР-процессору HTTP-запрос (Web-страницу) и cookie-на — бор. PHP-процессор в свою очередь может получить доступ к значению любого cookie-набора с помощью переменной, имя которой соответствует имени cookie — набора с предшествующим знаком доллара ($). Таким образом, в приведенном примере, в котором функция setcookie() создала cookie-набор с именем testcookie, PHP-процессор имеет возможность проверить значение переменной

Самоучитель по креативному веб-дизайну. Книга 4, стр.8

$testcopkie и сравнить его со значением текущей даты. Если переменная

$testcookie не определена или ее значение не соответствует текущей дате, Web —

браузер не сохранил cookie-набор, созданный функцией setcookie() , что озна- чает, что Web-браузер не принимает cookie-наборы. Как результат, РНР-процес —

сор перенаправляет Web-сервер на Web-страницу NeedCookies. htm, которая предлагает посетителю изменить настройки по обработке cookie-наборов и раз — решить их прием браузером. В противном случае, если переменная $testcookie содержит текущую системную дату, Web-браузер сохранил созданный функцией setcookie() cookie-набор, и PHP-процессор загружает страницу, которая позво — ляет посетителю получить доступ к содержимому сайта.



Использование РНР и дискового файла для организации парольного доступа к Web-сайту

При разработке Web-сайта с доступом только для зарегистрированных пользо — вателей необходимо обеспечить вход авторизированных пользователей на сайт и

исключить доступ, неавторизированных посетителей. Для запроса у посетителя

имени пользователя и пароля можно воспользоваться HTML-формой, показан — ной на рис. 10.8, которая будет предоставлять доступ посетителей к ресурсам с ограниченным доступом.

Для простоты установим значение атрибута name первого элемента формы

равным «usemame», а второго элемента — «password». Для передачи в РНР-сце — нарий имени пользователя и пароля, которые посетитель вводит в элементы формы, необходимо установить в атрибуте actio n дескриптора
формы URL-адрес PHP-страницы, как показано в следующем примере:





В приведенном примере сценарий аутентификации посетителя находится на

странице ChptiOTipOS. php. (Форма входа на сайт ChptiOTipOS. php и сценарий аутентификации ChptiOTipOS. php доступны для выгрузки на сайте издательства русскоязычной редакции этой книги.)

Глава 10. РНР4 52 3







ПРАКТИКУМ

После проверки того, что посетитель в поля формы входа на сайт ввел имя

пользователя и пароль, PHP-сценарий (chptiOTipos. php) при помощи встроен —

ной функции fopen о открывает текстовый файл password. txt, в котором хра- нятся допустимые пары имя пользователя/пароль. При изучении сценария вы увидите, что для считывания содержимого файла password. txt и поиска в нем пары имя пользователя/пароль, соответствующей введенным посетителем дан — ным, используется следующий код:

Самоучитель по креативному веб-дизайну. Книга 4, стр.9



if ($fp = fopen(«с:\\password. txt», «г»))

{

while (feof ($fp) — 0)

{

// Прочитать из файла паролей одну строку длиной до 1000 символов

$line = trim(fgets($fp,1000));

// Каждая строка в файле паролей имеет формат «имя, пароль».

$userPass = split(«,», $line);

// Проверить наличие в файле введенного имени и пароля

if (($userPass[0] == $username) and ($userPass[1] == $password))

{

header («Location: ChptlOTip05LoginSuccessful. htm»);

exit;

}

}

// Введены неверное имя пользователя и/или пароль header («Location: ChptlOTipO5AccessDenied. htm»); exit;

}

Если сценарий находит в файле совпадающую пару имя пользователя/пароль,

PHP-процессор вызывает функцию header о, которая передает браузеру Web —

52 4 Глава 10. РНР4





страницу, доступную только зарегистрированным членам сайта (в приведенном

примере этой страница chptiOLoginSuccessfui. htm). В противном случае, если процессор в файле паролей не сможет найти введенные имя пользователя и/или

пароль, он передаст Web-браузеру страницу «некорректного входа на сайт»

(chptiOAccessDenied. htm) и откажет посетителю в доступе к ресурсам с ограни — ченным доступом.

Чтобы предотвратить возможность просмотра посетителем содержимого файла

паролей, храните его вне каталогов Web-сайта. (В противном случае посетитель сможет просмотреть содержимое файла, набрав в адресной строке браузера URL — адрес файла.) Файл паролей можно поместить в любой каталог на жестком диске Web-сервера, к которому имеет доступ PHP-сценарий. Более того, для обеспече — ния более высокого уровня защищенности в имени файла паролей не используй —

те слова password или username, а пользуйтесь буквами и цифрами, что снизит вероятность угадывания имени файла посетителями.



При установке в качестве значения атрибута typ e элемента ввода формы Web — браузер при вводе посетителем данных заменяет все символы звездочками (*). Тем не ме — нее, при передаче Web-браузером данных формы (включая поля ввода пароля) фактически передается открытый текст в формате ASCII. Таким образом, хакер имеет возможность пере — хватить и прочитать содержимое HTTP-сообщения, в котором Web-серверу в виде открытого текста передаются данные формы.

Для защиты чувствительной информации используется протокол SSL (Secure Sockets Layer,

протокол защищенных сокетов), который позволяет кодировать данные, передаваемые меж —

ду Web-сервером и Web-браузером. SSL-кодирование выполняется вне РНР, т. е. SSL-кодиро — вание прозрачно для PHP-сценариев. При использовании защищенного соединения Web-брау —

зер кодирует HTTP-запросы (включая запросы PHP-страниц), которые Web-браузер передает Web-серверу. После получения кодированного запроса Web-сервер декодирует сообщение и передает (открытый) текст на обработку PHP-сценарию. В свою очередь, PHP-процессор нахо — дит нужную PHP-страницу, выполняет сценарий и функции, содержащиеся на странице, и пе — редает сформированную им страницу Web-серверу. Web-сервер помещает страницу в тело HTTP-отклика, который затем кодируется и передается Web-браузеру. При получении НТТР-от — клика (т. е. Web-страницы, запрошенной с Web-сервера) Web-браузер декодирует сообщение и выводит Web-страницу на экран.

Самоучитель по креативному веб-дизайну. Книга 4, стр.10

Для установки защищенной обработки запросов (при которой Web-браузер и Web-сервёр об- мениваются кодированными сообщениями) необходимо обсудить этот вопрос с Internet-про — вайдером, на сервере которого находится ваш Web-сайт. После того, как провайдер получит и установит все необходимые ключи и сертификаты, ваш PHP-сценарий изменять практически

не придется. Единственным отличием будет то, что защищенные URL-адреса начинаются с

префикса «https:// » вместо стандартного «http:// » для незащищенных адресов. Таким

образом, для использования защищенного соединения при переходе между РНР-страницами применяется следующий формат:

header(«Location:https://www. NVBizNet. com/LoginScript. php»

вместо

header(«Location:http://www. NVBizNet. com/LoginScript. php»

Глава 10. РНР4 52 5





Предотвращение перехода посетителей по ссылкам на сайт

В предыдущем совете вы узнали, каким образом можно использовать форму входа на сайт и текстовый файл для ограничения доступа к Web-сайту за счет запроса у посетителей имени пользователя и пароля. К сожалению, при исполь — зовании только страницы входа на сайт посетители могут получить доступ к со — держимому сайта даже без ввода имени пользователя и пароля за счет обхода страницы входа на сайт.

Предположим, например, что сценарий входа на сайт, проверяющий правиль — ность введенной пары имя пользователя/пароль в случае, когда посетитель вво —

дит верные имя и пароль, передает Web-браузеру страницу LoginSuccess. htm. Если для защиты содержимого сайта используется только страница входа на сайт, посетитель имеет возможность обойти ее и получить доступ к содержимому сайта за счет создания закладки для страницы с ограниченным доступом (на —



Полезные ссылки
Случайные записи
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.98
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 024
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.105
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 056
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.45
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.74
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.16
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 023
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 097
  • 18.03.2014">Как бросить курить и не поправиться
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.160
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 115
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 143
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 090
  • 16.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.34
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...