Форма php не работает - PullRequest
       3

Форма php не работает

0 голосов
/ 11 марта 2011

Итак, у меня есть PHP-форма с основными именами, адресами электронной почты и сообщениями, однако я не могу заставить ее работать! Я попытался поместить теги ID и NAME для каждого элемента формы, но это не сработает.

Вот фрагмент php

<?php
if(isset($_POST['submit'])) {

    $to = "xxx@example.com.br"; 
    $subject = "Success!";
    $name_field = $_POST['nome'];
    $email_field = $_POST['email'];
    $message = $_POST['mensagem'];
    $body = "From: $name_field\n E-Mail: $email_field\n $check_msg\n Message:\n $message\n";
    echo "Your form was sent!";
    mail($to, $subject, $body);

} else {
    echo "Ouch.";
}
?>

и форма

<form action="../php/send.php" method="post">
<label>Name:</label><input id="name" name="name" /><br />
<label>Email:</label><input id="email" name="email" /><br />
<label>Message:</label>
<textarea id="message" name="message" ></textarea><br />

<button type="submit" id="submit"></button>
</form>

Ответы [ 5 ]

2 голосов
/ 11 марта 2011

Вы не определили поле 'submit' (в форме нет name="submit"), поэтому ваш if() тест не пройден.

Лучший способ проверить POST -

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   ...
}

Эта запись присутствует всегда и гораздо надежнее, чем проверка определенного поля.

0 голосов
/ 08 февраля 2019

Нет атрибута имени, прикрепленного к вашей кнопке отправки, написанный вами PHP-код прослушивает имя данных POST "submit".
Измените это:

<form action="../php/send.php" method="post">
<label>Name:</label><input id="name" name="name" /><br />
<label>Email:</label><input id="email" name="email" /><br />
<label>Message:</label>
<textarea id="message" name="message" ></textarea><br />

<button type="submit" id="submit"></button> <!-- Add a name attribute -->
</form>

На это:

<form action="../php/send.php" method="post">
<label>Name:</label><input id="name" name="name" /><br />
<label>Email:</label><input id="email" name="email" /><br />
<label>Message:</label>
<textarea id="message" name="message" ></textarea><br />

<button type="submit" id="submit" name="submit"></button> <!-- Name attribute added -->
</form>
0 голосов
/ 21 августа 2013

Это просто ошибка DOM, просто измените ваше поле ввода name = "myname" или что-то еще, это решит вашу проблему.

<form action="../php/send.php" method="post">
<label>Name:</label><input id="name" name="my_name" /><br />
<label>Email:</label><input id="email" name="email" /><br />
<label>Message:</label>
<textarea id="message" name="message" ></textarea><br />

<button type="submit" id="submit"></button>
</form>
0 голосов
/ 12 марта 2011

Вместо $name_field = $_POST['name']; в операторе проверки POST используйте $name_field = $_REQUEST['name'];. $_REQUEST всегда будет захватывать name= поля ввода формы, из которой вы отправили.

<?php
if(isset($_POST['submit'])) {

    $to = "xxx@xxx.com.br"; 
    $subject = "Success!";
    $name_field = $_REQUEST['name'];
    $email_field = $_REQUEST['email'];
    $message = $_REQUEST['message'];
    $body = "From: $name_field\n E-Mail: $email_field\n $check_msg\n Message:\n $message\n";
    echo "Your form was sent!";
    mail($to, $subject, $body);
    // now do something else like adding thank you 

} else {
    echo <<< END
<form action="../php/send.php" method="post">
<label>Name:</label><input id="name" name="name" /><br />
<label>Email:</label><input id="email" name="email" /><br />
<label>Message:</label>
<textarea id="message" name="message" ></textarea><br />

<button type="submit" id="submit"></button>
</form>

END;
}

?>

Это должно работать

0 голосов
/ 11 марта 2011

Предлагаю заменить этот код:

if(isset($_POST['submit'])) {

с чем-то очевидным, например:

if(isset($_POST['email'])) {

Также есть пара ошибок:
Это:

$name_field = $_POST['nome'];
$email_field = $_POST['email'];
$message = $_POST['mensagem'];

Должно быть:

$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];

Кроме того, вам нужно проверить, что mail() возвращает true. Изменения:

echo "Your form was sent!";
mail($to, $subject, $body);

Кому:

if(mail($to, $subject, $body)) {
    echo "Your form was sent!";
} else {
    echo "mail() returned error! Your form was not sent!";
}

Если вы уверены, что mail() действительно выполняется без каких-либо ошибок, но письма по-прежнему не отправляются / не достигают получателя, проверьте журналы сервера, возможно, вам нужно настроить php (обычно нет) или sendmail.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...