Similar presentations:
PHP, Forms, Cookies. Формы, валидация и обработка данных
1.
PHP, Forms, Cookiesvk.com/web_dev_courses
web.dev.courses.dp.ua/ort/
2.
Формы, валидация и обработка данныхindex.php
DENWER => /home/aaa.dp.ua/www
2
3.
Формы, валидация и обработка данныхfile.php
DENWER => /home/aaa.dp.ua/www
3
4.
Формы, валидация и обработка данныхwww.aaa.dp.ua/file.php?user_name=....
4
5.
Передача параметров в URLКодирование спецсимволов в URL при их передаче
5
6.
Передача параметров в URLПередача параметров файлу, через URL
спецсимвол, говорящий, что в этом месте заканчивается адрес файла, и
? –начинается
перечень параметров.
=
– спецсимвол разделяющий имя параметра и его значение.
& – спецсимвол разделяющий пары (имя параметра и его значение) друг от друга.
Основные спецсимволы при передаче параметров в URL
6
7.
Кодирование/декодирование параметров в URLКодирование и декодирование параметров происходит
автоматически, в большинстве случаев.
Но...
JS
PHP
encodeURIComponent(url)
urlencode($url)
decodeURIComponent(url)
urldecode($url)
Функции которые позволяют принудительно кодировать/декодировать
строку в формат URL запроса.
"hi all! what's up?" =>
hi%20all!%20what's%20up%3F =>
"hi all! what's up?"
7
8.
Формы, запросыGET
Параметры
передаются
открытом виде, в строке URL.
POST
в
Параметры передаются неявно, в
теле HTTP запроса.
Длинна
строки
параметров
ограничена
(255
байт,
ограничение
связано
с
совместимостью).
Объём передаваемых параметров
неограничен (зависит от настроек
сервера).
Является методом по умолчанию.
8
9.
Параметры, GETПараметры передаются в заголовке запроса.
9
10.
Формы, параметры10
11.
Формы, запросыGET
POST
Получить параметры переданный формой можно с помощью соответствующего
ассоциативного массива который PHP формирует после того как разберёт запрос
браузера.
REQUEST
$_REQUEST[]
$_GET[]
$_POST []
Ассоциативный массив $_REQUEST объединяет в себе данные
массивов $_GET и $_POST.
11
12.
Формы, параметрыАльтернативный пример
file.php
DENWER => /home/aaa.dp.ua/www
12
13.
Формы, параметрыРучная передача параметров (безопасность)
13
14.
PHP+Web-серверОдна из возможностей web-сервера – поддержка сеанса работы с пользователем.
Cookie-файлы
Данные о пользователе хранятся в
бразуере и передаются серверу при
каждом обращении.
Данные подвержены
подделке.
хищению,
Сессии (session)
Данные о пользователе хранятся на
сервере, бразуер передаёт серверу
лишь идентификатор сессии (к
которой привязаны данные).
Данные не подвержены хищению,
подделке.
Идентификатор сессии хранится в
cookie-файле или в URL.
Оба варианта поддержки сеанса работы с пользователем следует рассматривать
как временное хранение данных о пользователе. И исходить из того, что эти
данные могут быть утеряны в любой момент времени.
14
15.
PHP+Web-сервер, cookie-файлыindex.php
DENWER => /home/aaa.dp.ua/www
15
16.
PHP+Web-сервер, cookie-файлы16
17.
PHP+Web-сервер, cookie-файлы17
18.
Опять проблемы скодировкой
19.
КодировкаУстанавливали спец. маркер UTF-8 BOM, чтобы
браузер понял в какой кодировке файл.
19
20.
Кодировкаwindows-cp1251 ?
utf-8 ???
KOI-8R ??
Когда браузер открывает файл с файловой системы (т.е. не через вебсервер), то возможностей узнать кодировку файла, у браузера, не много:
либо получить информацию из самого файла, либо попытаться угадать.
Пути получения данных кодировки на основе данных из самого файла.
20
21.
Кодировкаcharset=utf-8
Когда браузер получает файл от веб-сервера, то у сервера есть
возможность приоритетно указать кодировку тех файлов которые
передаются сервером.
кодировка от сервера == кодировка файла == кодировка документа
Кодировка сервера, файла и документа должны совпадать, иначе возникает
ситуация неоднозначности, принятие решения остаётся за браузером. 21
22.
HTTP запрос, HTTP ответЗаголовки передаются клиенту до отправки содержимого. Если заголовок уже
22
отправлен добавить в него что-то в уже нельзя.
23.
HTTP запрос, HTTP ответ1.
2.
Сначала передаётся заголовок, потом передаётся тело документа.
23
24.
HTTP запрос, HTTP ответCookie передаётся в заголовке.
24
25.
HTTP запрос, HTTP ответЛюбые символы до начала «php-тега» заставляют сервер
оформить и отправить заголовок пользователю. Тем
самым лишая возможности добавить в него что-то.
25
26.
HTTP запрос, HTTP ответПочему возникли проблемы с нашим примером???
26
27.
HTTP запрос, HTTP ответФайл без BOM
Файл c BOM
Любые символы до начала «php-тега» заставляют сервер
оформить и отправить заголовок пользователю. Тем
самым лишая возможности добавить в него что-то.
27
28.
HTTP запрос, HTTP ответСообщение об ошибке, заключающейся в том, что первый
байты файла переданы клиенту, и теперь внести в
заголовок данные о cookie уже нельзя.
28
29.
HTTP запрос, HTTP ответЛадно, сохраняем файл в формате без ВОМ.
Почему?
Потому что сервер «утверждает» что это файл в кодировке
1251, хотя на самом деле он в utf-8. Возникает
29
неоднозначность, поведение браузера нерегалментировано.
30.
HTTP запрос, HTTP ответНеобходимо указать серверу, какую кодировку
необходимо писать в заголовке ответа.
30
31.
HTTP запрос, HTTP ответ31
32.
Что делать?33.
PHP+Web-сервер, cookie-файлыindex.php
DENWER => /home/aaa.dp.ua/www
Сохранит в кодировке UTF-8 без метки BOM!!!
33
34.
PHPhttp://www.w3schools.com/php/
34