HTML 表单 + PHP 问题


HTML Form + PHP Issues

我到处找过,上下搜索。我已经看到我将要发布的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 字段不存在,则您的表单未提交。