我有一个推荐页面,人们可以在其中输入电子邮件地址以发送推介。
<form action="referemails.php" method="post">
Insert your friend's email below to refer them!<br><br>
Email: <input type="email" id="referemail" name="referemail[]" size="50" autofocus="autofocus" placeholder="example@email.com"><br>
Email: <input type="email" id="referemail" name="referemail[]" size="50" autofocus="autofocus" placeholder="example@email.com"><br>
Email: <input type="email" id="referemail" name="referemail[]" size="50" autofocus="autofocus" placeholder="example@email.com"><br>
<input type="submit" value="Submit"></form>
发送电子邮件的代码如下:
<?php
if (isset($_POST['referemail'])) {
$username= $_SESSION['username'];
$options = array("options" => array(FILTER_FORCE_ARRAY));
$email = filter_input(INPUT_POST, 'referemail', FILTER_SANITIZE_EMAIL, $options);
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Not a valid email
$error_msg = '<p class="error">The email address you entered is not valid</p>'; };
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: example@email.com' . "\r\n";
$to = implode(',', $email);
$subject = 'Email!';
$message ='...';}
if (mail($to, $subject, $message, $headers)) {
header('Location: ../includes/referfriends.php');
}
?>
我尝试了implode(','
命令的几个变体。但要么我不是把它放在正确的位置,或者我的理论是,我在$ email上的过滤器不会发送多封电子邮件。如果只输入一个电子邮件地址,它会发送电子邮件,但是多个电子邮件的行为就像发送的那样,虽然没有,但我的日志中没有错误。
我错过了什么或错误地阻止了多个地址?提前感谢任何知识或有用的链接。我已经尝试搜索webz并尝试了多种选择但总是达到这一点。
答案 0 :(得分:1)
问题是您的变量$email
,而扩展名$to
是一个字符串。因此,内爆不会像数组那样工作。
您已在输入中使用multiple
标记,但这是用于文件,而不是文本输入。您需要重新考虑如何获取电子邮件地址。
如果您想获得多个电子邮件地址,则需要多个输入:
<input type="email" name="email[]">
<input type="email" name="email[]">
注意方括号,它允许多个输入具有相同的名称并作为数组提交。
然后,您可以使用以下内容获取发送页面上的数据:
$options = array("options" => array(FILTER_FORCE_ARRAY));
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL, $options);
然后 $email
将保存一组提交的电子邮件地址。
答案 1 :(得分:0)
所以我改变了我的PHP代码,完全删除了过滤器。代替
$options = array("options" => array(FILTER_FORCE_ARRAY));
$email = filter_input(INPUT_POST, 'referemail', FILTER_SANITIZE_EMAIL, $options);
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Not a valid email
$error_msg = '<p class="error">The email address you entered is not valid</p>'; };
我只是说:
$email = implode(",",$_REQUEST['referemail']);
它有效。