×Закрыть

Помогите, пожалуйста, с формой, приходит пустое письмо

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

<?php
// ----------------------------конфигурация-------------------------- // 
$adminemail="yarluk07@interos.s-host.net";  // e-mail админа
$date=date("d.m.y"); // число.месяц.год
$time=date("H:i"); // часы:минуты:секунды
$backurl="http://interos.s-host.net";  // На какую страничку переходит после отправки письма
//---------------------------------------------------------------------- //
$name = filter_input(INPUT_POST,'name');
$phone = filter_input(INPUT_POST,'phone');
$email = filter_input(INPUT_POST,'email', FILTER_VALIDATE_EMAIL);
if ( $email === false ){
// не валидный емейл
}
{
echo
"<center>Вернитесь <a
href='javascript:history.back(1)'><B>назад</B></a>. Вы
указали неверные данные!";
}
{
$msg="
<p>Имя:$name</p>
<p>Телефон:$phone</p>
<p>E-mail:$email</p>
";
// Отправляем письмо админу
mail("$adminemail","$date $time Сообщение
от $name", "$msg");
// Сохраняем в базу данных
$f = fopen("message.txt", "a+");
fwrite($f," \n $date $time Сообщение от $name");
fwrite($f,"\n $msg ");
fwrite($f,"\n ---------------");
fclose($f);
}
?>
HTML:
<div class="form">
              <form action= "php/post.php" method= "POST"> 
                <div class="form-heading">
                    <h6>Получите доступ </h6>
                    <p>к оптовым ценам <span>+ скидку до 25 000 грн</span>. на заказ</p>
                </div>
                <div class="form-content">
                    <div class="form-group form-group1">
                        <label>Имя</label>
                        <input type="text" name="name" class="name required">
                    </div>
                    <div class="form-group form-group2">
                        <label>Телефон</label>
                        <input type="text" name="phone" class="phone required">
                    </div>
                    <div class="form-group form-group3">
                        <label>E-mail</label>
                        <input type="text" name="email" class="email required">
                    </div>
                    <a href="#" class="submit ORDER1">Получить доступ</a>
                    <p>Мы гарантируем  конфиденциальность ваших  данных</p>
                </div>
              </form>
            </div>
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Спробуйте замість:

$name = filter_input(INPUT_POST,'name');
$phone = filter_input(INPUT_POST,'phone');
$email = filter_input(INPUT_POST,'email', FILTER_VALIDATE_EMAIL);

записати так:

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$phone = filter_input(INPUT_POST, 'phone', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

Вместо

<a href="#" class="submit ORDER1">Получить доступ</a>

нужно

<input type="submit" value="Получить доступ"/>

ты крут братан!спасибо тебе большое!!!

Запомните следующие команды: php.net/...​/en/function.var-dump.php и php.net/...​l/en/function.print-r.php
Если у вас не настроен дебаггер и код работает не так, как нада — то вы делаете следующее: пишете var_dump($your_variable_name) там, где подозреваете проблему. Вам выводится значение переменной, тогда вы хотя бы поймете, что и где ваш код делает не так.
Как минимум, начните с var_dump($msg) перед командой mail. Просто пыриться и думать, что не так — не поможет, учитесь дебажить.

Камон, 2k18 никто в php уже die-ми не дебажит. Зачем вы советуете плохие практики, заведомо делая из человека натурального пхпшника. Xdebug, интеграция с phpStorm. А если есть задача тонкого дебага, установка end-point и VarDumper в помощь.

Потому что чувак пока скобки посчитать не может, какой xdebug? Научится писать Хеллоу Ворлд — тогда все засетапит. Всему своё время)))

Ярослав, вам таки варто було б прислухатись до порад більш досвідчених колег, раз самі питаєте про це.

подскажи пожалуйста где ошибка, плохо понимаю php, хоть убей не вижу лажу

Як у тебе зараз:

if ( $email === false ){
// не валидный емейл
}
{
echo
"<center>Вернитесь <a
href='javascript:history.back(1)'><B>назад</B></a>. Вы
указали неверные данные!";
}
{

Як треба:

if ( $email === false ){
  // не валидный емейл
  echo
  "<center>Вернитесь <a
  href='javascript:history.back(1)'><B>назад</B></a>. Вы
  указали неверные данные!";
}
else
{

на почту приходит письмо

Имя:

Телефон:

E-mail:

почему не определяет $name $phone $email

А хочешь я угадаю: Твой запрос вообще не прилетает на php/post.php, он прилетает на php/mail.php

Не спрашивай откуда знаю. Могу намекнуть: хардкодить настройки — очень плохая практика.

подскажи пожалуйста как правильно, исправил на php/mail.php, но в письме по прежнему пустые строки Имя, Телефон, E-mail без $name $phone $email

Після слів

указали неверные данные!";

у вас закривається фігурна дужка і зразу ж відкривається нова. Схоже, що ви забули поставити else

Подписаться на комментарии