Php name e mail: PHP Forms Validate E-mail and URL

Отправка электронной почты из веб-формы с помощью PHP

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

Начало работы

Я предполагаю, что у вас есть веб-сайт, поддерживающий PHP. Хотя вы можете протестировать часть сценария локально, проще протестировать отправку фактического электронного письма на действующем веб-сайте.

Для простоты я буду использовать форму всего с тремя полями ввода и кнопкой отправки. HTML-код выглядит следующим образом:

Открывающий тег

 содержит два атрибута: метод и действие. Атрибут метода сообщает браузеру, как обрабатывать данные при отправке формы. Всегда устанавливайте его для отправки по электронной почте. Установка содержимого формы на URL-адрес, который выглядит плохо и может привести к раскрытию конфиденциальной информации. Атрибут действия сообщает браузеру, куда отправлять данные формы для обработки. В этом примере я отправляю его на страницу с именем accept.php.

Сценарий, обрабатывающий форму, использует атрибут имени каждого элемента ввода для извлечения данных. Никогда не используйте пробелы в атрибуте имени. Если вы хотите использовать несколько слов, используйте верблюжий регистр, например, productName или символ подчеркивания (product_name).

Создание страницы для скрипта обработки

Помимо обработки данных формы, скрипт подтвердит отправку сообщения. Создайте веб-страницу со следующим HTML-кодом в разделе  и сохраните ее как accept.php в той же папке, что и форма:

Страница в конечном итоге будет использовать логику PHP для отображения правильного сообщения.

Сбор данных из формы

Чтобы получить доступ к данным из поля, просто добавьте атрибут name в кавычки в пару квадратных скобок после $_POST. Например, $_POST[’email’] содержит значение поля с именем электронной почты.

Чтобы обработать форму, необходимо убедиться, что она была отправлена, а затем сформировать содержимое сообщения электронной почты.

    1. Над типом документа в файле accept.php создайте следующий блок кода PHP:

Имя кнопки отправки в моей форме — «Отправить», поэтому это подтверждает, что $_POST[‘send’] существует, другими словами, форма была отправлена. Если вы используете другое имя для кнопки отправки, измените его, чтобы оно совпадало. Переменные PHP чувствительны к регистру: $_post или $_Post не будут работать. Также убедитесь, что открывающая и закрывающая скобки совпадают (перед открывающей фигурной скобкой стоят две закрывающие скобки).

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

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

 

    3. Начните строить тело сообщения электронной почты на следующей строке:

 

PHP использует точку (точка) для соединения строк (текста) вместе, так что это добавляет значение поля имени к буквальному тексту «Имя:». Строка заканчивается двумя символами возврата каретки и новой строки. Обратите внимание, что \r\n\r\n заключен в двойные кавычки. Если вы используете одинарные кавычки, вы получите \r\n\r\n как обычный текст.

    4. Текст сообщения электронной почты должен состоять из одной строки, поэтому добавьте остальные поля, поставив перед знаком равенства точку, например: поле.

    5. Протестируйте свой код, добавив следующую строку для отображения тела сообщения:

    6. Загрузите страницу с формой в браузере, введите что-нибудь в каждое поле и нажмите кнопку «Отправить сообщение». Если все пойдет хорошо, вы должны увидеть что-то похожее на следующий скриншот:

Рис. 1. Содержимое всех полей формы объединено в одну строку.

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

Отправка электронного письма

Если все прошло успешно, вы можете попробовать отправить электронное письмо. PHP не отправляет почту. Он действует как посредник для почтового транспортного агента (MTA) веб-сервера, поэтому лучше всего делать это на работающем веб-сайте.

  1. Удалить сообщение echo $; и замените его следующим кодом:

Это передает функции mail() три аргумента: адрес, на который отправляется электронное письмо, строку темы и  сообщения. Если функции удастся передать сообщение агенту передачи сообщений, $success будет иметь значение true.

    2. Отредактируйте основной раздел страницы следующим образом, чтобы отобразить соответствующее сообщение:

Если задано значение $success и оно верно, отображается сообщение «Спасибо». В противном случае отображается сообщение об ошибке. Сообщение об ошибке также будет отображаться, если кто-то попытается получить доступ к accept.php без отправки формы.

    3. Загрузите форму и файл accept.php на свой веб-сайт и снова протестируйте форму. Если вы получили сообщение «Спасибо», проверьте свой почтовый ящик (и спам-ловушку), чтобы узнать, получили ли вы электронное письмо. Если да, поздравляю. Если нет, не волнуйтесь. Код на данный момент является абсолютным минимумом для отправки электронной почты, и он работает не на всех серверах.

Добавление заголовков электронной почты

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

    1. Вставьте новую строку в сценарий непосредственно перед строкой, которая отправляет электронное письмо, и создайте заголовок для адреса отправителя следующим образом:

Я использовал двойные кавычки, потому что каждый заголовок должен быть разделен возврат каретки и символ новой строки. Не указывайте адрес электронной почты отправителя в заголовке From. Этот заголовок должен быть адресом, который использует доменное имя вашего сайта.

    2. Большинство современных веб-сайтов используют кодировку UTF-8. Поэтому добавьте новый заголовок на следующей строке, используя оператор «точка-равно»:

Я не добавил символ возврата каретки и новой строки, потому что окончательный заголовок будет добавлен только в том случае, если адрес электронной почты отправителя действителен.

    3. Злоумышленники пытаются использовать поле электронной почты онлайн-форм для внедрения десятков адресов электронной почты и спам-контента, поэтому вам необходимо проверить адрес электронной почты отправителя, прежде чем добавлять его в заголовки:

Функция filter_input() принимает три аргумента. Первый указывает, что ввод был отправлен почтовым методом. Второе — это имя поля ввода. Третий аргумент указывает, как проверить ввод. В этом случае он подтверждает, что это один адрес электронной почты. Первый и третий аргументы являются константами PHP и чувствительны к регистру.

Если ввод не похож на действительный адрес электронной почты, функция возвращает false. В противном случае он возвращает адрес, который сохраняется как $email. Заголовок Reply-To добавляется, только если электронное письмо выглядит нормально. Помещение символа возврата каретки и новой строки в начало имеет тот же эффект, что и добавление их в конец предыдущего заголовка.

    4. Теперь, когда вы определили дополнительные заголовки электронной почты, передайте их в качестве четвертого аргумента функции mail() :

    5. Сохраните accept.php, загрузите исправленную версию на свой веб-сайт и снова протестируйте форму. . Если вы все еще не получили электронное письмо, проверьте следующий раздел.

Проверка того, что электронная почта получена из надежного источника

Многие хостинговые компании требуют передачи пятого аргумента tomail() , чтобы убедиться, что она исходит из надежного источника. Это ваш собственный адрес электронной почты в кавычках, которому предшествует -f (дефис-f). Если вы по-прежнему не получаете электронное письмо после добавления дополнительных заголовков, измените строку, которая отправляет письмо, следующим образом (используя свой собственный адрес электронной почты в последнем аргументе):

Хотите узнать больше о PHP? Эти курсы LinkedIn Learning могут помочь:

  • Основное обучение PHP
  • Советы, приемы и приемы PHP
  • PHP: объектно-ориентированное программирование с базами данных
  • PHP: объектно-ориентированное программирование

Использование $_ GET и $_ POST в PHP

php

2 года назад

Фахмида Йесмин

$_GET и $_POST — это переменные-массивы PHP, которые используются для чтения отправленных данных в форме HTML с использованием методов get и post соответственно. Между этими двумя переменными существуют два основных различия. Значения массива $_GET видны в URL-адресе после отправки HTML-формы, но значения массива $_POST не видны. Массив $_GET используется для работы с незащищенными данными, а массив $_POST — для работы с защищенными и большими объемами данных. Как эти две переменные массива можно использовать в PHP для чтения данных из формы, показано в этом руководстве.

Пример 1: Использование $_GET[] для чтения данных из URL-адреса

Создайте файл PHP со следующим сценарием, чтобы считать значение имени пользователя из URL-адреса и распечатать значение имени пользователя с другим текстом. Если для имени пользователя не указано значение, сценарий напечатает другое сообщение.

    //Проверяем, установлена ​​переменная или нет <б>«. $_GET[‘имя пользователя’].»«;
    }
    else
    {
        // Печатать сообщение, если значение не присвоено
        echo «Сейчас ни один пользователь не вошел в систему»;
    }
?>

Вывод:

Следующий вывод появится, если не указан аргумент URL с именем имя пользователя .

Следующий вывод появится, если в URL-адресе указано имя пользователя , как показано ниже.

http://localhost/php/getpost.php?username=fahmida

Пример 2. Использование $_GET[] для чтения данных от пользователя

Создайте файл PHP со следующим сценарием для чтения данных из формы с использованием массива $_GET[]. В скрипте определена HTML-форма из пяти полей. Форма будет отправлена ​​с методом get для чтения входных значений с помощью $_GETT[]. Поля: имя, фамилия, электронная почта, телефон и кнопка отправки. Когда пользователь нажимает кнопку отправки, функция isset() вернет true, а затем скрипт проверит, являются ли значения firstname и lastname пустыми или нет. Если какое-либо из значений поля пусто, то будет напечатано сообщение об ошибке. Если и имя, и фамилия содержат значения, то все значения полей формы будут напечатаны с использованием массива $_GET[].

//Проверяем, нажата ли кнопка отправки
if(isset($_GET[‘submit’]))
{
    //Проверяем имя и фамилию
    if($_GET[«fname»] == «» || $_GET[«lname»] == «» ){
        echo «Имя или фамилия не могут быть пустыми»;
    }
    else
    {
        //Вывести отправленные значения
        echo «First Name: «. $_GET[‘fname’].»
«;
        echo «Фамилия: «. $_GET[‘lname’].»
«;
        echo «Электронная почта: «. $_GET[‘электронная почта’].»
«;
        echo «Телефон: «. $_GET[‘телефон’];
    }
}
else
{
?>



   Использование PHP $_GET< /title> <br/></head> <br/><body> <br/><form method="get" action="#"> <br/>    <table> <br/>    <tr><td> <br/>     <label for="inputName">Введите свое имя :</label> <br/>    </td><td> <br/>     <input type="text" name="fname"><br/> <br/>    </td></tr><tr><td> <br/>     <label for="inputName">Введите свою фамилию:</label > <br/>    </td><td> <br/>     <input type="text" name="lname"><br/> <br/>    </td></tr><tr><td> <br/>     <label for="inputName" >Введите свой адрес электронной почты:</label> <br/>    </td><td> <br/>     <input type="text" name="email"><br/> <br/>    </td></tr><tr><td> <br/>     <label for="inputName">Введите свой телефон:</label> <br/>    </td><td> <br/>     <input type="text" name="phone"><br/> <br/>    </td></ tr><tr><td> <br/>     <input type="submit" name="submit" value="Submit"><br/> <br/>    </td><td></td></tr> <br/>     </ table> <br/></form> <br/> <script defer src="https://schtirlitz.ru/wp-content/cache/autoptimize/js/autoptimize_2db0b4f6118f3a39750c1a3256680403.js"></script></body> <br/></html> <br/> <?php <br/> }</p><p> ?></p><p> <strong> Вывод: </strong></p><p> Следующий вывод появится после запуска скрипта с веб-сервера.<img class="lazy lazy-hidden" loading='lazy' src="//schtirlitz.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='/800/600/http/seoslim.ru/wp-content/uploads/2013/03/Contact-Form.jpg' /><noscript><img loading='lazy' src='/800/600/http/seoslim.ru/wp-content/uploads/2013/03/Contact-Form.jpg' /></noscript> Здесь поля формы заполняются фиктивными данными.</p><p></p><p> Следующий вывод появится после нажатия кнопки отправки. Здесь печатаются входные значения формы.</p><p></p><h3></h3><strong> Пример 3: Использование $_POST[] для чтения данных от пользователя </strong></h3><p> Создайте файл PHP со следующим скриптом, чтобы проверить использование массива $_POST[] для получения данных от пользователя. Форма входа пользователя разработана в скрипте для получения имени пользователя и пароля от пользователя. Форма будет отправлена ​​с методом post для чтения входных значений с помощью $_POST[]. PHP-скрипт проверит, нажата ли кнопка отправки, используя функцию isset(). Эта функция вернет true, когда пользователь нажмет кнопку отправки формы. Затем он проверит значения полей имени пользователя и пароля. Если пользователь вводит «admin» в поле имени пользователя и «238967» в поле прохода, тогда условный оператор вернет true и напечатает сообщение об успешном выполнении; в противном случае будет напечатано сообщение об ошибке.<img class="lazy lazy-hidden" loading='lazy' src="//schtirlitz.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='/800/600/http/meritpath.com/classV/social/images/email.jpg' /><noscript><img loading='lazy' src='/800/600/http/meritpath.com/classV/social/images/email.jpg' /></noscript></p><p data-readability-styled="true"> <?php <br/> //Проверяем, нажата ли кнопка отправки <br/> if(isset($_POST[‘submit’])) <br/> { <br/>     //Проверяем имя и фамилию <br/>     if(trim($_POST[«username «]) == «admin» && trim($_POST[«pass»]) == «238967» ){ <br/>         echo «Авторизованный пользователь»; <br/>     } <br/>     else <br/>     { <br/>         echo «Неверный пользователь»;</p><p>     } <br/> } <br/> else <br/> { <br/> ?> <br/> <br/><html lang="en"> <br/><head> <br/>    <title>Использование PHP $_POST



   


   < td>
   

   

   

   

   
   

   

   

   

   




 
}

?>

Вывод:

После запуска сценария с веб-сервера появится следующий вывод. Здесь поля формы заполняются действительным именем пользователя и паролем.

Следующее сообщение об успешном завершении будет напечатано, если пользователь ввел правильное имя пользователя и пароль. Согласно сценарию допустимое имя пользователя — «admin» , а пароль — «238967» . Если какое-либо неверное значение представлено в любом из полей, то сообщение об ошибке « Недействительный пользователь, ”будет напечатано.

Заключение

Использование формы является важной задачей любого веб-приложения, поскольку данные пользователя требуются в большинстве веб-приложений. Массивы $_GET[] и $_POST[] — очень полезные переменные PHP для чтения данных, отправленных пользователем через любую HTML-форму. Но форма должна содержать кнопку отправки для отправки вставленных пользователем данных на сервер с помощью формы. В этом руководстве объясняется использование массива $_GET[] для чтения данных из URL-адреса и данных формы с помощью метода get, а также массива $_POST[] для чтения данных формы с помощью метода post.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *