2016-03-25 9 views
0

Mit einem kleinen Kontaktformular, aber wenn das Formular gesendet/gesendet wird, bekomme ich eine "No data" Nachricht."Keine Daten" beim Absenden des Kontaktformulars?


<form method="post" action="mail.php"> 
    <input type="text" placeholder="Name*" name="name" required> 
    <input type="email" placeholder="Email*" name="email" required> 
    <input type="text" placeholder="Subject" name="subject"> 
    <textarea placeholder="Message" name="message" required></textarea> 
    <input type="submit" value="Send" name="submit"> 
</form> 

Die PHP:

<?php 

// variable 
$fromemail = '[email protected]_site_com'; // from mail 
$to = "[email protected]"; // to mail 

// 
// check data 
if (!isset($_POST["fields"])) { 
die("No data"); 
} 

$fields = $_POST["fields"]; 

if(empty($fields['name'])) { 
die("No name"); 
} 

if(empty($fields['email'])) { 
die("No email"); 
} 

if (!empty($fields['code'])) { 
die("ok"); 
} 



$subject = "Site mail: " . $fields['subject']; 
// subject massege 
$subject = '=?utf-8?Q?'."\"".urlencode($subject)."\"".'?='; 
$subject= str_replace("%","=",$subject); 
$subject = str_replace("+","_",$subject); 

// content massage 
$name = $name ? $name : 'unknown'; 
$from = 'Mail from'."<".$fromemail.">"; 
$mess = $mess ? $mess : 'unknown'; 
$message = "<b>Client name: </b> " . $fields['name'] . "<br>"; 
$message .= "<b>Client email: </b> " . $fields['email'] . "<br>"; 
/*$message .= "<b>Client phone: </b> ".$site."<br>";*/ 
$message .= "<b>Subject: </b> " . $fields['subject'] . "<br>"; 
$message .= "<b>Text:</b>\n" . $fields['text'] . "<br>"; 

$message .= "Sent: ".strftime("%a, %d %b %Y %H:%M:%S"); 
// end content massage 


$headers = "Content-type: text/html; charset=utf-8 \r\n"; 
$headers .= "From: Site Mail <" . $fromemail . ">\r\n"; 

if(mail($to, $subject, $message, $headers)){ 
print 'ok'; 
} else { 
print 'email not senta'; 
} 

?> 

Ich habe so lange auf sie gestarrt es ist verschwommen, so ist es wahrscheinlich ein dummer Fehler. Irgendwelche Hilfe geschätzt?

+1

folgen ist dies, weil Sie don 't haben keine Eingabe mit dem Namen 'Felder' so' $ _POST [' fileds '] 'ist nicht gesetzt –

+0

in Ihrer Form kein Wert gibt es mit Namen' Felder' deshalb 'if (! isset ($ _ POST [" Felder "])) { sterben (" keine Daten "); } 'ist immer wahr und du bekommst nichts –

+1

überprüfe nur nach' $ _POST ['submit'] ', dann weise ganze' $ fields = $ _POST' zu; – mitkosoft

Antwort

1

Es gibt kein Eingabefeld in der Form mit dem Namen fields

Sie müssen sie wie diese es tun

$_POST['your_input_name_declared_in_form'] 
1

direkt zuzugreifen, als

if(isset($_POST['submit'])) 
{ 
    $fields = $_POST; 
    if(empty($fields['name'])) { 
     die("No name"); 
    } 

    if(empty($fields['email'])) { 
     die("No email"); 
    } 

    if (!empty($fields['code'])) { 
      die("ok"); 
    } 

} 
+0

Es ist keine gute Methode, die Werte der Sendeschaltfläche zu überprüfen. direkt überprüfen die geposteten Werte werden mehr gut und effektiv –

+0

es ist offensichtlich, wenn Benutzer auf Formular klicken und alle Eingabe leer lassen, dann nur $ _POST ['submit'] gesetzt ist. –

+0

und deshalb erzähle ich was ich gesagt habe? –

Verwandte Themen