我到处找过,上下搜索。我已经看到我将要发布的PHP代码存在许多问题,但没有看到与我的特定问题相关的问题。
这是我的问题 - 我有"姓名","电子邮件","主题","消息"的两行($values/$required
)我想在其中添加"tel"。(即"姓名"、"电子邮件"、"电话"、"主题"、"消息")
如果我将其添加到两行之一(无论哪一行无关紧要),我仍然可以提交表单,但它不会在我收到的电子邮件中给我该行(电话)。
如果我将"tel"添加到两行($values/$required),那么当我点击提交时,我会收到"请填写所有必填字段,标有*"(填写所有行)。
有人可以告诉我我错过了什么吗?
另外 - "主题"实际上是一个 vin/body #,但如果我将 html 中的标签更改为"vin"而不是"主题",那么它会给我"请填写所有必填字段,标有 *"错误,所以我只是将其保留为"主题"即使这不是与表单中该行项目真正关联的内容。
<?php
if(!$_POST) exit;
$email = $_POST['email'];
//$error[] = preg_match('/'b[A-Z0-9._%-]+@[A-Z0-9.-]+'.[A-Z]{2,4}'b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_''.-][a-z0-9]+)*" ."@"."([a-z0-9]+(['.-][a-z0-9]+)*)+"."''.[a-z]{2,}"."$",$email )){
$error.="Invalid email address entered";
$errors=1;
}
if($errors==1) {
echo $error;
} else {
$values = array('name','email','subject','message',);
$required = array('name','email','subject','message',);
$your_email = "myemail@mydomain.com";
$email_subject = "VIN / Body - ".$_POST['subject'];
$email_content = "PART INQUIRY INFORMATION BELOW 'n";
foreach ($values as $key => $value) {
if (in_array($value,$required)) {
if ($key != 'subject' && $key != 'company') {
if (empty($_POST[$value])) {
echo 'Please fill in all required fields, marked with *';
exit;
}
}
}
$email_content .= $value.': '.$_POST[$value]."'n";
}
if(@mail($your_email,$email_subject,$email_content)) {
echo 'Message sent!';
} else {
echo 'ERROR!';
}
}
?>
更新的答案:
嗯,有好消息也有坏消息。 好消息是,我认为您的代码实际上运行正常。 我认为您的表单实际上并没有发布"tel"字段。
我通过将 $_POST 数组替换为:
$_POST = array('name' => 'Joel', 'email' => 'joel.small@biscon.com.au', 'subject' => 'Guy','message' =>'Thingo','tel' => 'Some number');
然后,我将"tel"添加到"values"数组中,您的代码按预期工作。
在处理数据并查看数组结构之前执行print_r($_POST)。 如果 tel 字段不存在,则您的表单未提交。