php表单不提交其中一个字段

时间:2010-04-04 08:30:24

标签: php email forms

我已经购买了一个内置联系表格的模板 问题是它提交除“公司”名称之外的所有东西 我弄乱了它,但无法开始工作。 如果你能指出一些解决方案我会很高兴

提前致谢

这是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','message');
    $required = array('name','email','message');

    $your_email = "--------@gmail.com";
    $email_subject = "New Message: ".$_POST['subject'];
    $email_content = "new message:\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 'Thanks for your message, will contact you soon.'; 
    } else {
        echo 'ERROR!';
    }
}

2 个答案:

答案 0 :(得分:3)

$values = array ('name','email','message');

在PHP脚本中将'company'添加到此列表中。

另外,我会将foreach循环修改为这样,以获得预期的功能:

foreach($values as $key => $value)
{
    if(in_array($value,$required))
    {
        if(empty($_POST[$value]))
        {
                echo 'Please fill in all required fields, marked with *';
                exit;
        }
    }
    $email_content .= $value.': '.$_POST[$value]."\n";
}

这样,不在$required数组中的字段仍会添加到电子邮件中(如果它们存在) - 它们不必通过空检查。

答案 1 :(得分:1)

问题在于这一行:

$email_content .= $value.': '.$_POST[$value]."\n";

除非此行,否则永远不会到达:

if (in_array($value,$required)) {

......很满意。这意味着,只有$required中列出的字段才会附加到电子邮件中。如果可以,那么只需更改这些行:

$required = array('name','email','message');
$values = array ('name','email','message');

阅读:

$required = array ('name','email','message','company');
$values = array ('name','email','message','company');

如果还不行,请更改:

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";
    }
}

看起来像这样:

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";
}

然后,您可以从company中取出$required,但请将其保留在$values中。我怀疑启动时模板工作正常,因为所有字段都是 required

如果仍然不起作用,请更改此(顶部):

if(!$_POST) exit;

看起来像这样:

if(!$_POST) exit;
print_r($_POST);

...并在你的问题中粘贴其他输出。

另外,请考虑从其他供应商处购买模板:)