我需要请求页面的所有输入,然后通过电子邮件发送。。。但是,有很多方法可以在不创建太多变量的情况下调用每个人吗?
Obs:因为我是php的初学者,如果你能给我举一个例子,我将不胜感激。
这是我正在使用的代码:
<?php
require 'email/PHPMailerAutoload.php';
$recipient = $_POST['emailFor'];
$sender = $_POST['senderEmail'];
$message = $_POST['message'];
//I mean this part:
$results_SRV_AA_A10Name = $_POST['result-SRV-AA-A10-name'];
$results_SRV_AA_A10Email = $_POST['result-SRV-AA-A10-email'];
$results_SRV_AA_A10Tel = $_POST['result-SRV-AA-A10-tel'];
$results_SRV_AA_A11 = $_POST['result-SRV-AA-A11'];
$results_SRV_AA_A12 = $_POST['result-SRV-AA-A12'];
$results_SRV_AA_A13 = $_POST['result-SRV-AA-A13'];
etc....
$mail = new PHPMailer;
$mail ->isSMTP();
$mail ->Host = '***********';
$mail ->SMTPAuth = true;
$mail ->Username = '*************';
$mail ->Password = '*************';
$mail ->SMTPSecure = 'ssl';
$mail ->Port = 465;
$mail->addReplyTo($sender);
$mail ->setFrom('**********', 'Stack Overflow');
$mail ->addAddress($recipient);
$mail->Subject = "$sender send you this";
$mail ->isHTML(true);
$mail ->CharSet = 'UTF-8';
$mail ->Body .="
$AllVariables
";
if(!$mail ->send()){
echo "Erro no envio do e-mail, tente em instantes<br>";
echo $mail ->ErrorInfo;
} else {
echo "
<html>
<head>
<title>Mensagem enviada</title>
<script>alert('Enviada com sucesso');</script>
<meta http-equiv='refresh' content='1; index.html'>
</head>
<body></body>
</html>
";
}
如果您只想将所有$_POST
值转储为换行的值:
$post = implode("n", $_POST);
$mail->Body .= "n{$post}n";
// eg:
// John Doe
// john.doe@email.com
// 555-5555
// ...
如果您也希望包含字段名称:
foreach ($_POST as $key => $value) {
$mail->Body .= "{$key}: {$value}n";
}
// eg:
// result-SRV-AA-A10-name: John Doe
// result-SRV-AA-A10-email: john.doe@email.com
// result-SRV-AA-A10-tel: 555-5555
// ...
当然,不要忘记对用户提供的数据进行消毒/转义。
您只需使用此函数即可完成以下操作:
extract($_POST);
之后,关联数组中的键将成为变量!还有一点,字段名称使用_而不是-。