PHP формата за контакт не се изпраща

Имам формуляр за контакт на страница, която изпраща подробностите за формуляра на имейл адрес. Можете да го видите тук, www.wonder.ie

HTML за формуляра е следният:

<form id="form" name="form27" class="wufoo  page" enctype="multipart/form-data" method="post" action="mailer.php">  
    <ul>
        <li id="foli1">
            <label class="op" id="title1" for="Field1">Name</label>
            <div><input id="Field1" name="name" type="text" class="op required" value="" maxlength="255" tabindex="1" onkeyup="handleInput(this);" onchange="handleInput(this);" /></div>  
        </li>

        <li id="foli2">
        <label class="op" id="title2" for="Field2">Email</label>
            <div><input id="Field2" name="email" type="text" class="op required email" value="" maxlength="255" tabindex="2" onkeyup="handleInput(this);" onchange="handleInput(this);" /></div>
        </li>

        <li id="foli3">
            <label class="op" id="title3" for="Field3">Inquiry</label>
            <div><textarea id="Field3" name="message" class="op required" rows="10" cols="50" tabindex="3" onkeyup="handleInput(this);" onchange="handleInput(this);"></textarea></div>
        </li>
        </ul>  
        <input id="button" name="saveForm" class="btTxt submit" type="submit" value="Submit" />         
</form>

И за моя PHP това е следното:

<?php
if(isset($_POST['submit'])) {
$to = "[email protected]";
$subject = "Email from Wonder.ie";
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];

$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";

mail($to, $subject, $body);
} else {
echo "blarg!";
}
?>

Всичко правилно ли изглежда? Знам, че имената на формулярите са съвпаднали правилно с PHP, но не мога да разбера защо не получавам имейла, който познавате - FYI, PHP на сайта има истински имейл адрес, а не [email protected]. След като натисна бутона за изпращане, минавам към mailer.php, но забелязвам ехото "blarg!" така че моето предположение е, че имейлът не се изпраща.

Благодаря ти!


person Liam    schedule 19.02.2010    source източник


Отговори (9)


Трябва да се промениш

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

to

if(isset($_POST['saveForm'])) {
person codeholic    schedule 19.02.2010
comment
Това е 100% правилно; когато имате достъп до променливи в $_POST, те се маркират чрез атрибута name на елемента на формуляра. - person Erik; 19.02.2010

Опитайте да промените

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

to

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

Това е така, защото $_POST търси името на въведената форма, а не типа.

person superUntitled    schedule 19.02.2010

Ако нищо по-горе не помогне, опитайте и вижте дали можете да отстраните грешки в кода.

Улавяне на PHP mail() грешки и показване на разумно съобщение за потребителска грешка

person Ronni Skansing    schedule 01.08.2013

Във вашия PHP код проверявате дали $_POST['submit'] е зададено, но във вашия HTML код сте дали на бутона за изпращане името saveForm, така че трябва да промените реда

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

to

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

Надявам се това да ви е помогнало :)

person Vegard Skui    schedule 02.04.2013

Някои имейл сървъри няма да приемат имейли без подходящи заглавки и вие не сте предоставили такива. Това е, което използвам.

http://us2.php.net/manual/en/function.mail.php

$header = "From: ".$fromText."\r\n";
$header .= "Cc: ".$ccText."\n";
$header .= "Reply-To : ".$fromText."\r\n";
$header .= "Return-Path : ".$fromText."\r\n";
$header .= "X-Mailer: PHP\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/plain; charset=iso-8859-1\r\n";
mail($toText, $subjectText, $msgText, $header, '-f'.$fromText);
person DaveBaldwin    schedule 20.07.2013

използвате

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

но сте запазили името на бутона за изпращане катоsaveForm
И така, използвайте

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

person MihirUj    schedule 25.01.2015

вашият проблем е, че се излива blarg. определено публикацията не достига до вас

код->

mail($to, $subject, $body);

и името на изпращането трябва да бъде променено на

'saveForm'

между другото :)..

просто опитах

mail($to, $subject, $body);

във вашия x.php, качете го и променете към , темата и тялото към правилните неща и ако е изпратено, тогава функцията за поща работи добре.

 if(@mail($emailRecipient, $subject, $message, $headers))
    {
      echo "Mail Sent Successfully";
    }else{
      echo "Mail Not Sent";
    }

това също е добър код, който намерих в stackoverflow, за да проверя дали функцията за поща работи.

person user2901794    schedule 21.10.2013

Във вашия html имате

<input id="button" name="saveForm" class="btTxt submit" type="submit" value="Submit" />

но в php файла, когато проверявате за $_POST["submit"], което не е правилно.

Трябва да промените if(isset($_POST['submit'])) на if(isset($_POST['saveForm']))

or if(isset($_POST['submit'])) to if(isset($_POST))

person khoa vo    schedule 02.04.2013

Ръководство за изпращане на поща с HTML формуляр в PHP http://top-answers.net/webhost/web-hosting.html

person Dinesh Kumar    schedule 27.12.2011