Почему не работает контактная форма сайта? - PullRequest
0 голосов
/ 02 ноября 2011

Я написал следующую контактную форму. Но это или работает. Пожалуйста, помогите мне ....

<?php
    if (isset($_POST['submit'])) {
        $ToEmail = 'mymail@gmail.com';
        $EmailSubject = 'Site contact form ';
        $mailheader = "From: " . $_POST["email"] . "\r\n";
        $mailheader .= "Reply-To: " . $_POST["email"] . "\r\n";
        $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $MESSAGE_BODY = "Name: " . $_POST["name"] . "<br>";
        $MESSAGE_BODY .= "Email: " . $_POST["email"] . "<br>";
        $MESSAGE_BODY .= "Comment: " . nl2br($_POST["comment"]) . "<br>";
        mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) 
        or die("Failure");

        echo "<p>Your message was sent.</p>"; 
    }         
?>

<form action="index.php?page=contacts" method="post">                
    <p>Your name:<br/>
        <input name="name" type="text"  size="32">
    </p>
    <p>Email address:<br/>
        <input name="email" type="text"  size="32">
    </p>
    <p>Message:<br/>
        <textarea name="comment" cols="55" rows="8"></textarea>
    </p>
    <p>
        <input type="submit" name="Submit" value="Send">
    </p>
</form>

Если вы найдете ошибку, пожалуйста, дайте мне знать. Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

если mail () возвращает false, то ваш PHP не настроен должным образом. Если вы работаете на хосте Windows, вам необходимо иметь действительные настройки SMTP и smtp_port, определенные в вашем php.ini, и SMTP-сервер должен быть запущен и запущен .

Это или вы передаете неверные значения для 'To:' или других заголовков, которые SMTP-сервер прямо отклоняет.

0 голосов
/ 02 ноября 2011

Php чувствителен к регистру, изменение

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

с:

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

потому что в вашей форме вы написали название кнопки отправки: Отправить

0 голосов
/ 02 ноября 2011

Кнопка «Отправить» имеет имя «Отправить», но вы проверяете «Отправить».Регистр чувствителен при работе с переменными Get / Post.

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

<?php
            if (isset($_POST['Submit'])) {
                $ToEmail = 'sustcorpus@gmail.com';
                $EmailSubject = 'Site contact form ';
                $mailheader = "From: " . htmlentities(strip_tags(trim($_POST["email"]))) . "\r\n";
                $mailheader .= "Reply-To: " . $_POST["email"] . "\r\n";
                $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
                $MESSAGE_BODY = "Name: " . htmlentities(strip_tags(trim($_POST["name"]))) . "<br>";
                $MESSAGE_BODY .= "Email: " . htmlentities(strip_tags(trim($_POST["email"]))) . "<br>";
                $MESSAGE_BODY .= "Comment: " . nl2br(htmlentities(strip_tags(trim($_POST["comment"])))) . "<br>";
                mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) 
                or die("Failure");

            echo "<p>Your message was sent.</p>"; 
        }

        ?>
            <form action="index.php?page=contacts" method="post">

                        <p>Your name:<br/>
                        <input name="name" type="text" value="<?php echo $_POST['name']?>"  size="32">
                        </p>
                        <p>Email address:<br/>
                        <input name="email" type="text" value="<?php echo $_POST['email']?>"  size="32">
                        </p>
                        <p>Message:<br/>
                        <textarea name="comment" cols="55" rows="8"><?php echo $_POST['comment']?></textarea>
                        </p>
                        <p>
                            <input type="submit" name="Submit" value="Send">
                        </p>
            </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...