-2

クライアントのサイトには非常に大きなフォーム (約 40 フィールド) があり、ユーザーが [送信] をクリックすると、このフォームがメールに送信されます。

私はこれを次のようにしようと考えていました:

<?

$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 <client@example.com>' . "\r\n";
$headers .= 'From: User <example@user.com>' . "\r\n";

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

しかし、約 40 のフィールドがあるため、正しい方法で行っているかどうかはわかりません。これを行うより適切な方法はありますか?

4

3 に答える 3

0

心配する必要はありません。これは完全に一般的な方法です。電子メールの最大サイズはプロバイダーによって異なりますが、現在では誰もが 10 MB 以上必要です。

より複雑な解決策は、ExcelシートまたはPDFファイルを保存し (はい、php で実行できます)、これをメールで送信することですが、それははるかに手間がかかります。

(ところで、フィールドをループして 40 回の繰り返しを節約できますforeach ($fields as $field) {...}) 。

于 2013-06-01T15:13:51.870 に答える
0

これは、次を使用してループで行うのは難しくありませんrange

foreach(range(1, 39) as $number) {
    $message .= "Answer to field $number: " . $_REQUEST['field' . $number] . "\n";
}
于 2013-06-01T15:12:21.187 に答える
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 を使用すると、フィールドに別の名前を付けることができます。次に、continu の if 条件を逆にしてそこにフィールドを配置すると、処理されません。

于 2013-06-01T15:12:25.747 に答える