Отправка нескольких форм PHP

0

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

$mailcheck = spamcheck($_POST['inputemail']);
        if ($mailcheck==FALSE)
          {
          echo "Invalid input";
          }
        else
          {
          // This still needs to be debugged online as soon as possible
          $from = $_POST['inputemail'];
          $name = $_POST['inputname'];
          $phone = $_POST['inputphone'];
          $date = $_POST['inputdate'];
          $time = $_POST['inputtime'];
          $data = $_POST['inputprotection'];
          $subject = $_POST['inputdropdown'];
          $message = $_POST['inputmessage'];
          $message = wordwrap($message, 70);
          mail("[email protected]",$subject,$message,"From: $from\n" . "Name: $name\n" . "Phone: $phone\n" . "Date: $date\n" . "Time: $time\n" . "Keep Data? $data\n");
          echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";
          }
        }

Здесь я объявляю всю информацию, которая будет передана как заголовок для электронной почты. Текущая проверка синтаксиса PHP проходит так же, как и сообщение электронной почты, содержащее сообщение $to, $subject, $message all fine, но заголовок $ проходит только через финальную часть (Keep Data? $data\n). Когда я удаляю все остальные поля и просто сохраняю часть $ data, email перестает отправлять любой $header. У меня также есть проблема с переадресацией, которая была удалена из приведенного ниже кода и будет вставлена, как только проблема будет устранена. Текущий полный PHP:

<html>
<body>

    <?php
    function spamcheck($field)
      {
      // Sanitize e-mail address
      $field=filter_var($field, FILTER_SANITIZE_EMAIL);
      // Validate e-mail address
      if(filter_var($field, FILTER_VALIDATE_EMAIL))
        {
        return TRUE;
        }
      else
        {
        return FALSE;
        }
      }
    ?>

    <?php 
    if (isset($_POST['inputemail']))
        {
        $mailcheck = spamcheck($_POST['inputemail']);
        if ($mailcheck==FALSE)
          {
          echo "Invalid input";
          }
        else
          {
          // This still needs to be debugged online as soon as possible
          $from = $_POST['inputemail'];
          $name = $_POST['inputname'];
          $phone = $_POST['inputphone'];
          $date = $_POST['inputdate'];
          $time = $_POST['inputtime'];
          $data = $_POST['inputprotection'];
          $subject = $_POST['inputdropdown'];
          $message = $_POST['inputmessage'];
          $message = wordwrap($message, 70);
          mail("[email protected]",$subject,$message,"From: $from\n" . "Name: $name\n" . "Phone: $phone\n" . "Date: $date\n" . "Time: $time\n" . "Keep Data? $data\n");
          echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";
          }
        }
    ?>

</body>

и временно размещается по адресу http://luke-hale.com/temp/contact.html. Я уверен, что это всего лишь случай дезинформирования с моей стороны, но любая помощь будет отличной, ура!

РЕДАКТИРОВАТЬ:

хорошо, так что проблема сортируется с помощью:

          $subject = $_POST['inputdropdown'];
          $message = $_POST['inputmessage'] . "\r\n\r\n" . $_POST['inputname'];
          $message = wordwrap($message, 70);
          $headers = "From: " . $_POST['inputemail'];
          mail("[email protected]",$subject,$message,$headers);
          echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";

Что работает, хотя не отображает $ headers нигде, но я не слишком суетился об этом, следующее - это перенаправление, которое я обычно выполняю через:

header("refresh:5;url=http://www.domain.com")

Хотя раньше это не работало правильно, я применил бы редактирование при проверке на будущую ссылку anyones.

РЕДАКТИРОВАТЬ

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

<html>
<body>

    <?php
    function spamcheck($field)
      {
      // Sanitize e-mail address
      $field=filter_var($field, FILTER_SANITIZE_EMAIL);
      // Validate e-mail address
      if(filter_var($field, FILTER_VALIDATE_EMAIL))
        {
        return TRUE;
        }
      else
        {
        return FALSE;
        }
      }
    ?>

    <?php 
    if (isset($_POST['inputemail']))
        {
        $mailcheck = spamcheck($_POST['inputemail']);
        if ($mailcheck==FALSE)
          {
          echo "Invalid input";
          }
        else
          {
          $subject = $_POST['inputdropdown'];
          $message = "Name: " . $_POST['inputname'] . "\r\n\r\n" . "Email: " . $_POST['inputemail'] . "\r\n\r\n" . "Phone: " . $_POST['inputphone'] . "\r\n\r\n" . "Date: " . $_POST['inputdate'] . "\r\n\r\n" . "Time: " . $_POST['inputtime'] . "\r\n\r\n" . "Retain Data? " . $_POST['inputprotection'] . "\r\n\r\n" . "Message: " . $_POST['inputmessage'];
          $message = wordwrap($message, 70);
          $headers = "From: " . $_POST['inputemail'];
          mail("[email protected]",$subject,$message,$headers);
          echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";
          }
        }
    header("refresh:5;url=http://www.domain.com")
    ?>

</body>

Форма по-прежнему отправляет штраф, но возврат указывает, что строка, начинающаяся с "заголовка", не может быть передана, поскольку данные браузера уже изменены. Я не уверен, что я сделал или где, если бы кто-нибудь мог протянуть руку, это было бы здорово!

ЗАВЕРШЕНИЕ

Мой окончательный, полностью работающий код:

<?php
function spamcheck($field)
{
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
?>
<?php
ob_start();
if (isset($_REQUEST['inputemail'])&&($_REQUEST['inputname'])&&($_REQUEST['inputmessage']))
{
$mailcheck = spamcheck($_POST['inputemail']);
if ($mailcheck==FALSE)
{
echo "Invalid email, you'll be redirected ";
header("refresh:5;url=http://www.luke-hale.com/");
}
else
{
$subject = $_POST['inputdropdown'];
$message = "Name: " . $_POST['inputname'] . "\r\n\r\n" . "Email: " . $_POST['inputemail'] . "\r\n\r\n" . "Phone: " . $_POST['inputphone'] . "\r\n\r\n" . "Date: " . $_POST['inputdate'] . "\r\n\r\n" . "Time: " . $_POST['inputtime'] . "\r\n\r\n" . "Retain Data? " . $_POST['inputprotection'] . "\r\n\r\n" . "Message: " . $_POST['inputmessage'];
$message = wordwrap($message, 70);
$headers = "From: " . $_POST['inputemail'];
mail("[email protected]",$subject,$message,$headers);
echo "Thank you for your messgae, I'll get back to you as soon as possible! You'll be redirected in 5 seconds.";
}
header("refresh:5;url=http://www.luke-hale.com/");
}
else
{
echo "You did not fill all the required fields, please try again.";
header("refresh:5;url=http://www.luke-hale.com/");
}
?>
Теги:
forms
email
multiple-instances

3 ответа

1
Лучший ответ

Попробуйте поместить данные формы в переменную $message, вставьте \n после каждого атрибута, чтобы указать новую строку. Не используйте заголовок.

  • 0
    Ура! Есть ли шанс, что вы также знаете, как разобраться с редиректом, который в данный момент не работает?
  • 0
    Как вы перенаправляете пользователя? Обычно вы используете: header («Местоположение: домен / page.php» ); Не используйте абсолютный путь, если вы перенаправляете на тот же домен, вместо этого используйте относительный путь.
Показать ещё 3 комментария
1

Расположение и обновление требуют абсолютного URI

header('Location: http://www.domain.com');

Примеры для почты:
qaru.site/questions/8281915/...
qaru.site/questions/8281662/...

mail("Your Email Address Here",$subject,$therest,"subject: $subject\n");   

U сказал следующее: "Функция почты также не является проблемой, а правильный синтаксис -" mail($to,$subject,$message,$headers,$parameters)

Объяснение:

your email adress = $to  
$subject = $subject  
$therest = $message (rename it if you want)  
"subject: $subject\n" = the header (change it to $headers if you want that)

Пример заголовка (как в документации)

$headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
  • 0
    Строка заголовка не проблема, я использовал тот же код через другую форму, и он работает нормально, на самом деле лучше использовать ("refresh: 5; url = domain.com" ) в большинстве случаев. Проблема в том, что здесь ошибка: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/content/06/11062406/html/luke-hale/temp/contactform.php:4) в / home / content / 06/11062406 / html / luke-hale / temp / contactform.php ". Хотя я не могу увидеть, где был установлен заголовок?
  • 0
    Функция mail также не является проблемой, и правильный синтаксис - это mail ($ to, $ subject, $ message, $ headers, $ parameters)
Показать ещё 5 комментариев
0

Вы можете повторить Javascript внизу вашего PHP-скрипта, который перенаправляет, а именно:

$url = "url";
$time = 5000 // time in milliseconds

print "<script>window.setTimeout(function(){window.location='".$url."'},".$time.")       </script>"
  • 0
    К сожалению, это не сработало, luke-hale.com/temp/contact.html размещает его в настоящее время. Он печатает данные, но не перенаправляет
  • 0
    И это здесь: mail ("[email protected]", $ subject, $ message, $ headers); $ url = " luke-hale.com "; $ time = 5000; печать "window.setTimeout (функция () {window.location = '" $ URL.. "}, "$ время..")";
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню