2013-01-11 63 views
0

真的很感謝一些PHP新手的幫助!php代碼發送複選框形式的結果到電子郵件

HTML形式有以下複選框列表:

<input type="checkbox" name="servicetype[]" value="Option A"> Option A<br> 
    <input type="checkbox" name="servicetype[]" value="Option B"> Option B<br> 
    <input type="checkbox" name="servicetype[]" value="Option C"> Option C<br> 
    <input type="checkbox" name="servicetype[]" value="Option D"> Option D<br> 
    <input type="checkbox" name="servicetype[]" value="Option E"> Option E<br> 

下面的PHP代碼是不是雖然工作。我希望表單上的勾號選項可以通過電子郵件發送。所有其他非複選框日期到達確定。這裏是php:

$mail = new Mail(); 
$mail->to = "[email protected]";    
$mail->from = $_REQUEST["emailaddress"]; 
$mail->subject = "Form Results"; 
$mail->body.= "Name: ".$_REQUEST["title"]." ".$_REQUEST["firstname"]." ".$_REQUEST["surname"]. "\n"; 
$mail->body.= "Email Address: ".$_REQUEST["emailaddress"]. "\n";    
$mail->body.= "Phone Number: ".$_REQUEST["telephonenumber"]. "\n"; 
$mail->body.= "Address: ".$_REQUEST["addressline1"]. "\n";  
$mail->body.= $_REQUEST["addressline2"]. "\n";     
$mail->body.= "Town/City: ".$_REQUEST["towncity"]. "\n"; 
$mail->body.= "County/State: ".$_REQUEST["countystate"]. "\n";    
$mail->body.= "Post Code: ".$_REQUEST["postcode"]."\n"; 
$mail->body.= "Country: ".$_REQUEST["country"]."\n";    

$servicetype = $_POST['servicetype']; 
$body .= "servicetype: \r\n". 

foreach ($servicetype as $selected) { 
$body .= " > ".$selected."\r\n";  
} 


$mail->send(); 
$success=1; 

php中的servicetype位是我複製的部分沒有成功。任何人都可以幫忙嗎?

+0

只是注意:你的腳本是脆弱,因爲你只是路過直接向它請求數據,而不首先清理數據。如果惡意用戶向您的腳本發送了一些令人討厭的數據,那麼您的腳本就會盲目地採取行動。 –

+0

你是什麼意思「沒有成功」?你期望發生什麼以及實際發生了什麼? – Steve

回答

1
  • 您將服務類型相關文本存儲在$body而不是$mail->body,即它不會包含在您的郵件中。
  • 你也結束了.代替;
  • 行你突然開始使用的,而不是$_POST$_REQUEST。這應該無關緊要(假設您在表單中使用post方法),但它很「奇怪」,並且容易出錯,突然在兩者之間切換。
  • 您需要檢查cehckbox是否真的被選中,否則$servicetype將會被取消設置,並且會出現錯誤。使用isset()進行此項檢查。

因此,改變你的代碼的最後一部分爲:

$servicetype = $_POST['servicetype']; 
if(isset($servicetype)) { 
    $mail->body .= "servicetype: \r\n"; 

    foreach ($servicetype as $selected) { 
     $mail->body .= " > ".$selected."\r\n";  
    } 
} 
+0

非常感謝您的快速響應!然而,在測試php腳本時,只要至少選擇一個選項,它就可以正常工作。如果選擇NO選項,那麼出現一個PHP錯誤....任何想法請問? – user1969931

+0

更新了我的答案,因爲您必須檢查是否有任何複選框已被檢查... – Veger

1

你可以不喜歡這個 -

$servicetype = implode(",", $_POST['servicetype']); 
$mail->body .= $servicetype."\r\n"; 
+1

使用is_array檢查。 –