我有一个表单输入‘姓名’和‘电子邮件’。另一个代表“数据-1”。用户可以点击add按钮,jQuery将动态地为“Data-2”、“Data-3”需要的etc..as添加一个输入。
表单被张贴到PHP电子邮件脚本中,该脚本验证字段并将数据放置到模板中以供邮寄。
我如何添加输入'data-2','data-3‘等等。如果他们是被创造出来的?如果不是,我如何才能避免电子邮件模板中的空白?
(是否有一种方式来编写它,以便在收到帖子时添加此内容,如果没有,则什么也不做?)
下面是我使用的代码的一个示例:
$name = $_POST['name'];
$email = $_POST['email'];
$data-1 = $_POST['data-1'];(我是否需要添加:$data-2 = $_POST'data-2‘和$data-3.直到设定值为10?)
$e_body = "You were contacted by $name today.\r\n\n";
$e_data = "Data Set 1: $data-1.\r\n\n"; 在这里,我想展示“数据集2/3/4.等等”,如果它们存在的话
$e_reply = "You can contact $name via email, $email";
$msg = $e_body . $e_data . $e_reply;
if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) {我希望这是明确的,并感谢您的帮助或指导。
托姆
发布于 2010-07-21 09:51:51
作为一个普遍的观点,形式处理是骗人的,并有许多陷阱的粗心大意。值得看一看这篇文章on best practice form processing
问题的症结在于,您不知道$_POST数组中将得到多少“数据”值。答案只是在$_POST数组上迭代以找到数据值。
$rawData = array();
foreach ($_POST as $index => $value) {
// Test for a "data-n" index
if ((preg_match('#^data-\d+#i', $index, $matches))) {
$rawData[] = $value;
}
}上面的代码将使用表单'data-0‘、'data-1’等的键复制所有的$_POST值。然后,您可以筛选和验证这些值。
我们所做的就是在$_POST上迭代以获得每个键和值。然后我们使用preg_match测试密钥,看看它是否以字符串'data-‘开头,后面是一个或多个数字。如果是这样,我们将其添加到原始数据(未经过滤、未经验证)中。
在这个例子中,我们可以用strpos函数替换preg_match -
if ( strpos ($index, 'data-') === 0) {preg_match的使用为我们提供了更大的灵活性。例如,如果您想捕获'data-n‘键- 'data-23’、'data-999‘、'data-5’等的数字部分,那么请将if语句更改为
if ((preg_match('#^data-(\d+)#i', $index, $matches))) {
$rawData[$matches[1]] = $value;
}变量$matches是一个捕获搜索结果的数组。完全匹配的字符串是$matches。但是,我们在括号中包含了数字匹配模式,因此捕获的数字被放置到$matches1中,然后我们使用该数字来对$rawData数组进行键击。在本例中,$rawData的密钥= 23、999和5。
发布于 2010-07-21 01:03:29
为此,您应该使用输入数组。
在HTML中,将表单元素的名称设置为符合此命名方案:data[]。
然后,当表单提交时,您可以简单地遍历这个数组并将字段添加到循环中的电子邮件中:
$name = $_POST['name'];
$email = $_POST['email'];
$data = $_POST['data'];
$e_data = '';
foreach($data as $i => $d) {
if((int) $i != $i) continue; //thanks Alex
$e_data .= "Data Set {$i}: " . $d . "\r\n\n";
}
//...在客户端,您的代码应该如下所示:
<input type="hidden" name="data[]"/>发布于 2010-07-21 01:48:52
使用这样的东西:
if(isset($_POST['data-1']))
{
// $_POST['data-1'] exists, include it.
}
else
{
// $_POST['data-1'] doesn't exists, don't include it.
}https://stackoverflow.com/questions/3295567
复制相似问题