0

我四处张望,高高搜寻。我已经看到了我即将发布的 PHP 代码的许多问题,但与我所看到的具体问题无关。

这是我的问题 - 两行 ($values/$required) 我有 'name','email',subject','message'

我想在其中添加“电话”。(即“姓名”、“电子邮件”、“电话”、“主题”、“信息”)

如果我将它添加到两行之一(不管哪一行),我仍然可以提交表单,但它不会在我收到的电子邮件中给我那行(电话)。

如果我将“电话”添加到两行($values/$required),那么当我点击提交(所有行都填写完毕)时,我会得到一个“请填写所有必填字段,标有 *”。

有人能告诉我我错过了什么吗?

另外 - 'subject' 实际上是一个 vin/body # 但如果我将 html 中的标签更改为 'vin' 而不是 'subject' 那么它会给我“请填写所有必填字段,标有 *”错误所以我只是将其保留为“主题”,即使这不是与表单中该行项目真正相关的内容。

<?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!';
    }
}
?>
4

1 回答 1

0

更新的答案:

嗯,有好消息也有坏消息。好消息是,我认为您的代码实际上运行正常。我认为您的表格实际上并没有发布“电话”字段。

我通过将 $_POST 数组替换为:

$_POST = array('name' => 'Joel', 'email' => 'joel.small@biscon.com.au', 'subject' => 'Guy','message' =>'Thingo','tel' => 'Some number');

然后我将 'tel' 添加到 'values' 数组中,您的代码按预期工作。

在处理数据之前执行 print_r($_POST) 并查看数组的结构。如果 tel 字段不存在,则您的表单未提交。

于 2013-11-05T23:07:43.133 回答