2012-06-08 51 views
0

現在一直在努力解決這個問題。基本上我有6個字段,姓名,電子郵件,電話,地點,日期和預算。姓名和電子郵件是唯一必填字段。當我收到電子郵件時,我也會看到其他字段。是否可以只接收已填充的字段?PHP表格:只填充字段的成功電子郵件

這是代碼;

<?php 
// get posted data into local variables 
$EmailFrom = "[email protected]"; 
$EmailTo = "[email protected]"; 
$Subject = "My form"; 
$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Phone = Trim(stripslashes($_POST['Phone'])); 

$Location = Trim(stripslashes($_POST['Location'])); 
$Date = Trim(stripslashes($_POST['Date'])); 
$Budget = Trim(stripslashes($_POST['Budget'])); 

// validation 
$validationOK=true; 
if (!$validationOK) { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=#\">"; 
    exit; 
} 

$userip = ($_SERVER['X_FORWARDED_FOR']) ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; 

// prepare email body text 
$Body = ""; 
$Body .= "Location: "; $Body .= $Location; $Body .= "\n"; 
$Body .= "Date: "; $Body .= $Date; $Body .= "\n"; 
$Body .= "Budget: "; $Body .= $Budget; $Body .= "\n"; 

$Body .= "Name: "; $Body .= $Name; $Body .= "\n"; 
$Body .= "Email: "; $Body .= $Email; $Body .= "\n"; 
$Body .= "Phone: "; $Body .= $Phone; $Body .= "\n"; 
$Body .= "User's IP: ". $userip; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); 

// redirect to success page 
if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=#\">"; 
} 
else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=#\">"; 
} 
?> 
+0

當'

'提交所有領域在它內部將被包含在'$ _POST'中,更好的是使用'empty()'來確定字段是否被填充。 – deex

回答

1

使用empty來檢查,如果值被張貼或不:

$Phone = !empty($_POST['Phone']) ? trim(stripslashes($_POST['Phone'])) : false; 

再後來$Phone將是錯誤的,如果它沒有填寫,你可以這樣做:

if($Phone) 
    $Body .= "Phone: "; $Body .= $Phone; $Body .= "\n"; 
+0

不錯的保羅在更改'isset()'爲'empty()' – deex

+0

@dqlopez謝謝哈哈。如果不是您對這個問題的評論,我不會接受它。 – Paulpro

+0

工作很好!非常感謝。 – Jake

0

您可以簡單地進行檢查,看看值是否在那裏。你可以這樣做:

if (!empty($Location) { $Body .= "Location: "; $Body .= $Location; $Body .= "\n"; } 

等。這是說,如果位置不爲空,然後執行該代碼

0

是的,只是你Concat的字段前添加一個檢查身體,如:

if(!$Location) 
{ 
    $Body .= "Location: "; $Body .= $Location; $Body .= "\n"; 
} 
/*You can also use empty like: */ 
if(!empty($Date)) 
{ 
    $Body .= "Location: "; $Body .= $Date; $Body .= "\n"; 
} 
/*Continue here*/ 
+1

不需要$ Location!=「」即使它工作。如果($ Location)沒有任何東西,它將返回false。如果是,它會變成真 – chadpeppers

+0

謝謝,將編輯答案反映這 –

-1
if (isset($_POST['phone'] && !empty($_POST['phone']){ 
    $phone = $_POST['phone']; 
    //add $phone to email body 
} 
+0

爲什麼不只是在第一次檢查中添加到電子郵件?而不是設置額外的$ has_phone變量?並做額外的檢查? –

+0

夠真實。將追加。 – Joshua

相關問題