Работа с полями ввода форм

Последнее обновление: 17.03.2021

Формы могут содержать различные элементы — текстовые поля, флажки, переключатели и т.д., обработка которых имеет свои особенности.

Обработка флажков

Флажки или чекбоксы (html-элемент <input type="checkbox"/>) могут находиться в двух состояниях: отмеченном (checked) и неотмеченном. Например:

Запомнить: <input type="checkbox" name="remember" checked="checked" />

Если флажок находится в неотмеченном состоянии, например:

Запомнить: <input type="checkbox" name="remember" />

то при отправке формы значение данного флажка не передается на сервер.

Если флажок отмечен, то при отправке на сервер для поля remember будет передано значение on:

$remember = $_POST["remember"];

Если нас не устраивает значение on, то с помощью атрибута value мы можем установить нужное нам значение:

Запомнить: <input type="checkbox" name="remember" value="1" />

Иногда необходимо создать набор чекбоксов, где можно выбрать несколько значений. Например:


<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
if(isset($_POST["technologies"])){
	
	$technologies = $_POST["technologies"];
	foreach($technologies as $item) echo "$item<br />";	
}
?>
<h4>Форма ввода данных</h4>
<form method="POST">
    <p>ASP.NET: <input type="checkbox" name="technologies[]" value="ASP.NET" /></p>
	<p>PHP: <input type="checkbox" name="technologies[]" value="PHP" /></p>
	<p>Node.js: <input type="checkbox" name="technologies[]" value="Node.js" /></p>
    <input type="submit" value="Отправить">
</form>
</body>
</html>

В этом случае значение атрибута name должно иметь квадратные скобки. И тогда после отправки сервер будет получать массив отмеченных значений:


$technologies = $_POST["technologies"];
foreach($technologies as $item) echo "$item<br />";

В данном случае переменная $technologies будет представлять массив, который можно перебрать и выполнять все другие операции с массивами.

Переключатели

Переключатели или радиокнопки позволяют сделать выбор между несколькими взаимоисключающими вариантами:


<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
if(isset($_POST["course"]))
{
    $course = $_POST["course"];
    echo $course;
}
?>
<h4>Форма ввода данных</h4>
<form method="POST">
    <input type="radio" name="course" value="ASP.NET" />ASP.NET <br>
	<input type="radio" name="course" value="PHP" />PHP <br>
	<input type="radio" name="course" value="Node.js" />Node.js <br>
    <input type="submit" value="Отправить">
</form>
</body>
</html>

На сервер передается значение атрибута value у выбранного переключателя. Получение переданного значения:


if(isset($_POST["course"]))
{
    $course = $_POST["course"];
    echo $course;
}

Список

Список представляет элемент select, который предоставляет выбор одного или нескольких элементов:


<!DOCTYPE html>
<html>
<head>
<title>METANIT. COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
if(isset($_POST["course"]))
{
    $course = $_POST["course"];
    echo $course;
}
?>
<h4>Форма ввода данных</h4>
<form method="POST">
    <select name="course" size="1">
		<option value="ASP.NET">ASP.NET</option>
		<option value="PHP">PHP</option>
		<option value="Ruby">RUBY</option>
		<option value="Python">Python</option>
	</select>
    <input type="submit" value="Отправить">
</form>
</body>
</html>

Элемент <select> содержит ряд вариантов выбора в виде элементов

<option>:

Получить выбранный элемент в коде PHP как и обычное одиночное значение:


if(isset($_POST["course"]))
{
    $course = $_POST["course"];
    echo $course;
}

Но элемент <select> также позволяет сделать множественный выбор. И в этом случае обработка выбранных значений изменяется, так как сервер получает массив значений:


<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
if(isset($_POST["courses"]))
{
    $courses = $_POST["courses"];
    foreach($courses as $item) echo "$item<br>";
}
?>
<h4>Форма ввода данных</h4>
<form method="POST">
    <select name="courses[]" size="4" multiple="multiple">
		<option value="ASP.NET">ASP.NET</option>
		<option value="PHP">PHP</option>
		<option value="Ruby">RUBY</option>
		<option value="Python">Python</option>
	</select><br>
    <input type="submit" value="Отправить">
</form>
</body>
</html>

Такие списки имеют атрибут multiple="multiple". Для передачи массива также указываются в атрибуте name квадратные скобки: name="courses[]"

НазадСодержаниеВперед

Получение данных PHP cURL (curl_init, curl_setopt)

Примеры использования cURL в PHP

Содержание:

  1. GET запрос с помощью Curl
  2. GET-запрос Curl с параметрами
  3. Curl POST запрос
  4. Отправка CURL JSON через POST-запрос
  5. CURL PUT запрос
  6. CURL DELETE запрос
  7. CURL запрос через proxy
  8. Отправка файлов на другой сервер через CURL
  9. Отправка несколько файлов на другой сервер с помощью библиотеки Curl
  10. CURL отправка файла методом PUT (так загружаются файлы в REST API)
  11. Скачивание файлов CURLOPT_FILE
  12. Отправить и получить cookie через curl
  13. Имитация браузера через CURLOPT_HTTPHEADER
  14. HTTP авторизация через PHP CURL
  15. Получить HTTP код ответа сервера на PHP
  16. Загрузка через FTP с помощью cURL
Примеры использования cURL для реализации программных модулей при создании сайтов.

PHP библиотека cURL – предназначена для получения и передачи данных через протоколы: HTTP, FTP, HTTPS. Библиотека cURL и ее расширение для PHP libcURL — полезный инструмент при решении имитации запросов веб браузеров. В данной статье рассмотрим несколько практических применений PHP cURL.

Параметры Curl — curl_setopt

  • CURLOPT_RETURNTRANSFER — вернуть ответ в виде строки, вместо того, чтобы показывать его сразу
  • CURLOPT_CONNECTTIMEOUT — сколько по времени ждать ответа
  • CURLOPT_TIMEOUT — сколько секунд будет выполняться cURL запрос
  • CURLOPT_USERAGENT — headers (заголовки) для запроса
  • CURLOPT_URL — URL куда будет отправлен запрос
  • CURLOPT_POST — отправить POST запрос
  • CURLOPT_POSTFIELDS — массив POST полей к запросу

GET запрос с помощью Curl


GET-запрос Curl с параметрами


Curl POST запрос


Отправка CURL JSON через POST-запрос


CURL PUT запрос


CURL DELETE запрос


CURL запрос через proxy


Отправка файлов на другой сервер через CURL


Отправка несколько файлов на другой сервер с помощью библиотеки Curl


CURL отправка файла методом PUT (так загружаются файлы в REST API)


Скачивание файлов CURLOPT_FILE

Пример позволяет сохранить результат в файл, указав указатель на открытый файл в параметре CURLOPT_FILE.

Второй вариант скачивания файла:


Отправить и получить cookie через curl

Чтобы сохранить куки в файле достаточно прописать путь в параметрах CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR.

Передать значение cookie через параметр CURLOPT_COOKIE


Имитация браузера через CURLOPT_HTTPHEADER

На многих сайтах существует защита от получения данных скриптом. Такая защита основана на том что браузер передает серверу заголовки: user agent, referer, cookie. Сервер проверяет эти данные и если он не попадают под фильтр — возвращает страницу сайта. При обычном подключение php curl эти данные не передаются и для этого нужно в параметрах добавить заголовки:


HTTP авторизация через PHP CURL

Basic Authorization

Если на сервере настроена HTTP авторизация, например с помощью .htpasswd, подключится к нему можно с помощью параметра CURLOPT_USERPWD.


OAuth авторизация


Получить HTTP код ответа сервера на PHP


Загрузка через FTP с помощью cURL


Помогла ли вам статья?

361 раз уже помогла

Комментарии: (0)

Как отключить функцию php mail()

19 декабря 2022 г.

Главная  »  Хостинг • Linux • PHP • Системное администрирование   »   Как отключить функцию php mail()

Опубликовано в рубрике Хостинг, Linux, PHP, Системное администрирование Автор: Gabriel 19 декабря 2022 г.

Вы разочарованы тем, что случайные PHP-скрипты могут рассылать спам с вашего сервера? Если да, то вы не одиноки. У многих администраторов веб-сайтов есть эта проблема с PHP-скриптами на их сервере, и для решения этой проблемы может потребоваться много времени.

Существует множество причин, по которым вы хотите предотвратить отправку спама с вашего сервера ненадежными PHP-скриптами. Во-первых, от этого зависит репутация вашего IP-адреса — как только ваш сервер известен как источник спама, законные электронные письма, отправляемые вашим сервером, также будут отклонены многими почтовыми серверами. Кроме того, такие вредоносные скрипты могут использовать неоправданно большое количество ресурсов. Наконец, хостинг-провайдеры и интернет-провайдеры также не хотят, чтобы их IP-адреса были занесены в черный список, поэтому, будучи источником спама, эти поставщики могут принять карательные меры против вас. Ясно, что очень желательно избегать этого, насколько это возможно.

Сегодня мы покажем вам один из способов уменьшить вероятность того, что ненадежные PHP-скрипты отправят спам на ваш сервер. Для этого мы покажем вам, как отключить функцию mail() в PHP. Хотя это не предотвращает проблему на 100%, это хороший первый шаг в борьбе со спамом.

Как это сделать?

  • Во-первых, вам нужно найти копию вашего сервера « php.ini » и открыть ее в текстовом редакторе.
  • Оттуда найдите « sendmail_path », расположенный в файле. Обычно это устанавливается для запуска программы, такой как sendmail, которая является системной программой, которая может отправлять электронные письма.
  • Чтобы отключить функцию mail() , просто закомментируйте или удалите этот параметр из php.ini.

Вот пример строки конфигурации в php.ini, где мы добавили ; в начало строки, чтобы закомментировать его:

  ;sendmail_path = /usr/sbin/sendmail -t  

Это изменение может не вступить в силу, пока вы не перезапустите программное обеспечение веб-сервера, такое как apache или nginx. Процесс для этого зависит от вашей ОС и веб-сервера. Если вы не можете понять это, вы всегда можете перезагрузить весь сервер, но в этом нет необходимости, если вместо этого вы можете просто перезапустить программное обеспечение веб-сервера.

Вот и все!

Чтобы удалить это изменение и снова включить функцию mail() , просто снова отредактируйте файл и удалите точку с запятой в начале строки — это раскомментирует строку и снова сделает ее активной.

Стоит отметить, что отключение функции mail() в PHP не обязательно предотвратит отправку писем с вашего сервера. Другие программы и службы, такие как Postfix или Exim, могут по-прежнему отправлять электронные письма, даже если функция mail() отключена. Если у вас по-прежнему возникают проблемы с ненадежными пользователями или сценариями, отправляющими почту, могут потребоваться дополнительные ограничения, но это хорошее начало.

В заключение, отключение функции mail() в PHP — это простой способ предотвратить отправку спама с вашего сервера ненадежными PHP-скриптами. Следуя этим инструкциям, вы можете защитить репутацию электронной почты вашего IP-адреса, снизив риск попадания в черный список, что, безусловно, порадует вашего хостинг-провайдера или интернет-провайдера.

Вы любите серверы?

Да! Если вы беспокоитесь о безопасности сервера, IOFLOOD может помочь. Наши выделенные серверы обеспечивают безопасную и надежную среду для ваших приложений, а наша команда всегда готова помочь вам оптимизировать конфигурацию вашего сервера.

Чтобы узнать больше о наших выделенных серверах и о том, как мы можем помочь вам с вашими конкретными потребностями, свяжитесь с нами по адресу sales[at]ioflood.com или посетите наш веб-сайт по адресу https://ioflood.com. Наша команда готова ответить на ваши вопросы и помочь вам найти лучший сервер для ваших нужд.

Об авторе
гейб

Отправка электронной почты с помощью Mailgun PHP API

Мы собираемся начать это руководство с того, что транзакционная электронная почта повсюду, и важно, чтобы мы все делали правильно. Если электронная почта не работает должным образом, это может означать потерю дохода для вашего бизнеса и в целом создает неприятные ощущения для клиентов.

Как разработчик, вы всегда ищете самый простой (экономичный по времени) и эффективный способ решения проблемы. Часто это достигается выполнением двух условий:

  1. Использование внешних библиотек, применимых к вашему решению.

  2. Разработка масштабируемых приложений.

Первое условие объяснять не надо — ведь вы же не начнете писать ОС, не написав приложение, верно? На протяжении всего поста мы рассмотрим, как использовать предварительно написанные пакеты для отправки электронной почты. А теперь перейдем ко второму пункту: читайте дальше.

Для масштабируемого дизайна вам подойдут такие сервисы, как Mailgun. Вы можете рассчитывать на многофункциональное решение, отвечающее требованиям для отправки больших объемов электронной почты.

Если вы заботитесь о доставке (а вы должны), Mailgun предлагает высокую надежность, поскольку он разработан для очень хорошей обработки транзакционной электронной почты. Вы можете настроить несколько доменов и выбрать, хотите ли вы делиться IP-адресами или создавать свою собственную репутацию. Чтобы защитить заголовки ваших электронных писем, Mailgun требует, чтобы в учетную запись были добавлены DKIM и SPF, а также чтобы они прошли проверку на уровне аутентификации и выравнивания. Все эти вещи работают вместе, чтобы помочь вам с доставкой электронной почты.

Теперь к хорошему: настройка PHP-скрипта-оболочки для Mailgun . Сначала мы будем использовать менеджер пакетов, а затем посмотрим примеры его применения.

PEAR — это инициатива сообщества, которая позволяет нам повторно использовать компоненты кода PHP, в то время как зависимый код также добавляется и поддерживается.

Во-первых, вам понадобится PHP и менеджер пакетов для продолжения. Их лучше всего устанавливать с помощью Debian Advanced Package Manager (APT), если вы используете Linux.

Хотя PEAR — это более старое решение, оно по-прежнему широко используется и является сокращением от PHP Extension and Application Repository. Судя по установленной версии PHP, у вас, вероятно, уже есть PEAR. Вы можете проверить, запустив груша команда без аргументов. Если вы получили предупреждение о том, что в вашей системе его нет, просто запустите: sudo apt install php-pear. Теперь мы готовы установить сторонний PHP-код с помощью PEAR.

Если вы следуете этой статье, используя код, это точка, в которой вы должны открыть свою учетную запись Mailgun , чтобы получить доступ к API . Если вы застряли, просто ознакомьтесь с этими советами по началу работы.

Шаги с PEAR применяются следующим образом:

  1. Установка зависимостей проекта и включение пакетов с помощью основного класса или скрипта vendor/autoloader.php

  2. Предоставление переменных, связанных с API отправить электронное письмо (а)

Просто, правда?

Мы можем установить пакет Mail, набрав sudo pear install Mail . После завершения установки следующим шагом будет включение этого в файл сценария:

require_once "Mail. php";

Сэкономьте время и сделайте так, как предлагает наш шаблон, а затем укажите переменные, специфичные для API.

Если вы перейдете на панель инструментов API, вы можете найти следующие необходимые фрагменты информации на вкладке домена:

Нам нужен хост , учетная запись пользователя и переменные пароль , а также порт 8 для использования :

Мы используем SMTP-соединение для отправки электронной почты через нашу учетную запись Mailgun.

Мы собираем указанные выше параметры в массив и создаем экземпляр класса Mail следующим образом: Здесь переменная $to содержит значение адреса получателя, а переменная $headers представляет собой массив, содержащий дополнительные поля для доставки.

На этом этапе вы можете проверить полный окончательный код:

Полный исходный код можно скачать здесь.

Если вы все настроили, то можете попробовать запустить скрипт: php mailer. php.

Вы запускаете его и получаете уродливую трассировку стека ошибок! Внимательно изучите его:

Неустранимая ошибка PHP: Uncaught Error: Class 'Net_SMTP' не найден в /usr/share/php/Mail/smtp>php:366.

Это означает, что мы забыли добавить еще одну зависимость проекта, необходимую для использования PEAR Mail. Запустите sudo pear install Net_SMTP 9.0099 и повторите попытку!

Вывод:

Сообщение успешно отправлено!

Если вы следили, то ваше сообщение должно было прийти на указанный почтовый ящик, и я вам молча аплодирую. Браво!

Мы увидели пример сценария для начала работы с Mailgun с менеджером пакетов PEAR и создали PHP-скрипты для отправки электронной почты с помощью SMTP и HTTP API. Но есть и другие варианты, которые вы можете использовать, если PEAR вам не подходит. На самом деле вы можете воспроизвести тот же результат с помощью Composer, и Mailgun подробно рассказывал об этом ранее в блоге.