1.62M
Categories: internetinternet programmingprogramming

PHP, Forms, Cookies. Формы, валидация и обработка данных

1.

PHP, Forms, Cookies
vk.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.

PHP
http://www.w3schools.com/php/
34
English     Русский Rules