2016-03-25 25 views
0

使用一個小的聯繫表單,但是當表單被提交/發送時,我收到「無數據」消息。提交聯繫表單時顯示「無數據」?


<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> 

的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'; 
} 

?> 

我在它的眼前,只要它是一個模糊的,所以它可能是一個愚蠢的錯誤。任何幫助讚賞?

+1

這是因爲你不'沒有任何名稱爲'fields'的輸入,所以'$ _POST ['fileds']'沒有在你的窗體中設置 –

+0

沒有值名稱'fields'那就是爲什麼'if(!isset($ _ POST [字段「])){die(」No data「); }'總是如此,你什麼也沒得到 –

+1

只檢查'$ _POST ['submit']',然後分配整個'$ fields = $ _POST'; – mitkosoft

回答

1

沒有與名稱的形式沒有輸入字段fields

您需要直接訪問它們這樣

$_POST['your_input_name_declared_in_form'] 
1

做得一樣遵循

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

檢查提交按鈕值不是一個好習慣。直接檢查發佈的值將更加有效和有效 –

+0

當用戶單擊表單並將所有輸入保留爲空時,僅顯式設置$ _POST ['submit']是顯而易見的。 –

+0

這就是爲什麼我告訴我說什麼? –