113 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			113 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | 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 для отправки данных формы.**
 |