2013-06-01 29 views
-2

客戶在他的網站上有一個非常大的表單(大約40個字段),一旦用戶點擊提交,客戶應該發送給他的郵件。有沒有更實用的方式來發送一個非常大的形式在PHP?

我想做這樣的:

<? 

$name = $_REQUEST['name'] ; 
$lastname = $_REQUEST['lastname'] ; 
$address = $_REQUEST['lastname'] ; 
$field1 = $_REQUEST['field1'] ; 
$field2 = $_REQUEST['field2'] ; 
$field39 = $_REQUEST['field39'] ; 
.... 


$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

// Additional headers 
$headers .= 'To: Bob <[email protected]>' . "\r\n"; 
$headers .= 'From: User <[email protected]>' . "\r\n"; 

// Mail it 
mail("[email protected]", "FORM FROM YOUR WEB!", "Name: $name\r\n LastName: $lastname\r\n Address: $address\r\n  
Answer to field 1: $field1 ..... ", $headers); 
?> 

但由於大約有40場,我不知道我在做正確的方式。有沒有更適當的方法來做到這一點?

+3

你看到重複每一次 - 它是*我沒有想到使用foreach這樣的循環* –

回答

0

這不會是難以用range一個循環做:

foreach(range(1, 39) as $number) { 
    $message .= "Answer to field $number: " . $_REQUEST['field' . $number] . "\n"; 
} 
+0

工作。謝謝,我會嘗試一下! – Ant100

+0

哦,剛剛意識到這個問題,這些字段並沒有完全命名爲字段1,字段2等。我只是這樣寫的,以表明它是40個字段。但實際上每個領域都有不同的名稱,如:姓名,地址,電話,電子郵件,年齡等(40個不同的條目)。有沒有辦法通過字段循環,但不同地命名它們? – Ant100

+0

@ Ant100製作所有字段名稱的數組(例如'array('name','address','email')'),然後遍歷這些名稱? – lonesomeday

0

可以遍歷循環中的所有表單域,並創建消息字符串。

喜歡的東西:

function contains($string, $subString) 
{ 
    if (strpos($string, $subString) === false){ 
    return false; 
    } 
    return true; 
} 


foreach ($_REQUEST as $key => $value) 
{ 
    if (!contains($key, "field")) continue; 
    $msg .= $key; 
    $msg .= $value; 
} 

//now content of your message with form is in $msg 

如果您使用的foreach您可以採用不同命名字段。然後,如果條件爲繼續,並且放在那裏,那麼你就應該被處理。

+1

爲什麼在僞PHP中寫一個答案? – lonesomeday

0

不用擔心,這是一種非常常見的方式。最大郵件大小取決於提供商,但現在每個人都應該有10MB +。

的較詳細的解決方案是保存的excel片或pdf文件(是的,PHP可以做到這一點),並通過郵寄這一點 - 但它遠遠更多的工作。

(順便說一句,你可以循環的領域,以節省40倍的重複,例如foreach ($fields as $field) {...}

相關問題