freeCodeCamp/guide/russian/php/php-form-handling/index.md

113 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: PHP 5 Form Handling
localeTitle: Обработка форм PHP 5
---
Суперграфы PHP $ _GET и $_ POST используются для сбора данных формы.
### PHP - простая форма HTML
В приведенном ниже примере представлена ​​простая форма HTML с двумя полями ввода и кнопкой отправки:
#### пример
```php
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
```
Когда пользователь заполняет форму выше и нажимает кнопку отправки, данные формы отправляются для обработки в файл PHP с именем «welcome.php». Данные формы отправляются методом HTTP POST.
Чтобы отобразить представленные данные, вы можете просто отбросить все переменные. «Welcome.php» выглядит так:
```php
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
```
Результат может быть примерно таким:
```
Welcome John
Your email address is john.doe@example.com
```
Тот же результат может быть достигнут с использованием метода HTTP GET:
#### пример
```php
<html>
<body>
<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
```
и "welcome\_get.php" выглядит так:
```php
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
```
Вышеприведенный код довольно прост. Однако самое главное не хватает. Вам необходимо проверить данные формы, чтобы защитить ваш скрипт от вредоносного кода.
> **Думайте БЕЗОПАСНОСТЬ при обработке PHP-форм!**
>
> Эта страница не содержит проверки формы, она просто показывает, как вы можете отправлять и извлекать данные формы.
>
> Однако на следующих страницах будет показано, как обрабатывать формы PHP с учетом безопасности! Правильная проверка данных формы важна для защиты вашей формы от хакеров и спамеров!
### GET против POST
И GET, и POST создают массив (например, array (key => value, key2 => value2, key3 => value3, ...)). Этот массив содержит пары ключ / значение, где ключи - это имена элементов управления формой, а значения - это входные данные пользователя.
И GET, и POST обрабатываются как $ _GET и $_ POST. Это суперглобалы, что означает, что они всегда доступны независимо от области видимости - и вы можете получить к ним доступ из любой функции, класса или файла без необходимости делать что-либо особенное.
$ \_GET - это массив переменных, переданных текущему скрипту через параметры URL.
$ \_POST - это массив переменных, переданных текущему скрипту через метод HTTP POST.
### Когда использовать GET?
Информация, отправленная из формы с помощью метода GET, видна всем (все имена переменных и значения отображаются в URL-адресе). GET также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов. Однако, поскольку переменные отображаются в URL-адресе, можно пометить страницу. Это может быть полезно в некоторых случаях.
GET может использоваться для отправки нечувствительных данных.
**Примечание.** GET никогда не должен использоваться для отправки паролей или другой конфиденциальной информации!
### Когда использовать POST?
Информация, отправленная из формы с методом POST, **невидима для других** (все имена / значения встроены в тело HTTP-запроса) и не **имеет ограничений** на количество отправляемой информации.
Кроме того, POST поддерживает расширенные функции, такие как поддержка многочастного двоичного ввода при загрузке файлов на сервер.
Однако, поскольку переменные не отображаются в URL-адресе, закладка страницы невозможно.
> **Разработчики предпочитают POST для отправки данных формы.**