我有一个提交到codeigniter电子邮件类并向我的客户发送电子邮件的表单。我有一个简单的to
输入域。
<input type="text" name="to" class="form-control">
我希望能够在这一个字段中输入多个电子邮件地址,并一次性向他们发送电子邮件。这是相当简单的编码,我只需要得到电子邮件到一个数组,并在编码中放置to
参数。
所以我希望能够键入像下面这样的东西到字段中,提交它,将post数据分解成一个数组,断点是,
或逗号。
someone@me.com, yournamehere@example.com, myself@myowndomain.com
上面的内容需要放入像这样的数组中:
$list = array(
'someone@me.com',
'yournamehere@example.com',
'myself@myowndomain.com,
);
我真正的问题是,通过使用,
逗号作为断点,将输入字段to
中的常规post数据打破为数组的最快和最干净的方法是什么
试一试;它对我来说工作得很好,同时添加preg_replace()
来删除所有空白。
另外,还有第二种方法使用过滤方法来帮助防止XSS注入使用PHP的FILTER_VALIDATE_EMAIL
过滤器。
<?php
if(isset($_POST['submit'])){
$to = $_POST['to'];
$var = explode(',', $to);
$me = "you@example.com";
foreach($var as $mailto){
$mailto = preg_replace('/'s+/', '', $mailto); // remove all whitespace
$subject = 'Message subject ' . $name; // optional variable
$message = "Hello there.";
$headers = "From: {$me}'r'n";
$headers .= "Reply-To: {$mailto}'r'n";
mail($mailto, $subject, $message, $headers);
}
} // brace for isset
?>
<form action="" method="post">
<input type="text" name="to" class="form-control">
<input type="submit" name="submit" value="Send">
</form>
使用PHP的FILTER_VALIDATE_EMAIL
过滤器。
<?php
if(isset($_POST['submit'])){
$to = $_POST['to'];
$me = "you@example.com";
$to = preg_replace('/'s+/', '', $to);
foreach(explode(",", $to) as $mailto){
if(!filter_var($mailto, FILTER_VALIDATE_EMAIL))
{ die("Sorry."); }
else{
$subject = 'Message subject from ' . $name; // optional variable
$message = "Hello there.";
$headers = "From: {$me}'r'n";
$headers .= "Reply-To: {$mailto}'r'n";
if(mail($mailto, $subject, $message, $headers)){
echo "Mail sent to $mailto ";
}
}
}
} // brace for isset
?>
<form action="" method="post">
<input type="text" name="to" class="form-control">
<input type="submit" name="submit" value="Send">
</form>
使用PHP的explosion()函数。PHP文档中有更体面的手册。这就是思路,但如果你想在后端接收这些用逗号分隔的邮件,你应该使用$_GET或$_POST。
<?php
//$str = $_POST['emails'];
$str = "someone@me.com, yournamehere@example.com, myself@myowndomain.com";
print_r (explode(",",$str));
?>
语法:爆炸(分隔符、字符串限制)。在你的例子中,你想要逗号作为分隔符,这就是为什么分隔符应该是逗号。