Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php表单不提交其中一个字段_Php_Email_Forms - Fatal编程技术网

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

php表单不提交其中一个字段,php,email,forms,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 ADDR

我买了一个模板,它内置了联系人表单 问题是,除了公司名称,它提交了所有内容 我把它弄得乱七八糟,但没法去做。 如果你能给我指点解决办法,我会很高兴的

提前谢谢

这是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!';
    }
}
在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数组中的字段仍然会添加到电子邮件中(如果它们存在的话)——它们不必通过空检查

在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数组中的字段仍然会被添加到电子邮件中(如果存在的话)-它们不必通过空检查。

问题是这一行:

$email_content .= $value.': '.$_POST[$value]."\n";
if (in_array($value,$required)) {
除非此行:

$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";
}
if(!$_POST) exit;
print_r($_POST);
然后,您可以将公司从$required中取出,但将其保留在$values中。我怀疑模板在您启动时工作正常,因为所有字段都是必需的

如果仍然不起作用,请将其更改为:

if(!$_POST) exit;
看起来像这样:

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(!$_POST) exit;
print_r($_POST);
。。。并将附加输出粘贴到问题中


也可以考虑从另一个供应商购买模板:

问题是这条线:

$email_content .= $value.': '.$_POST[$value]."\n";
if (in_array($value,$required)) {
除非此行:

$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";
}
if(!$_POST) exit;
print_r($_POST);
然后,您可以将公司从$required中取出,但将其保留在$values中。我怀疑模板在您启动时工作正常,因为所有字段都是必需的

如果仍然不起作用,请将其更改为:

if(!$_POST) exit;
看起来像这样:

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(!$_POST) exit;
print_r($_POST);
。。。并将附加输出粘贴到问题中


也可以考虑从另一个供应商购买模板:

我试过了,但是表单现在不会发送电子邮件,而且添加这个数组会使公司成为表单中的必填字段吗?必需=数组'name','email','message';然后将其仅添加到$values。这是一个告诉脚本如果foreach循环发生,哪些字段需要放入电子邮件中的命令。@Marc B很抱歉,这没有帮助,表单将不会提交文件。查看您之前发布的javascript。如果字段/值到达服务器,PHP可以处理它。它不会因为不喜欢古龙水或其他东西而选择性地忽略一个字段。从发布的代码来看,由于将字段附加到电子邮件内容数组的调用位于ifin_数组$value,$required块中,它实际上只包括电子邮件中编码的必填字段。我觉得这很奇怪。我试过了,但表单现在不会发送电子邮件。添加到这个数组会使公司成为表单中的必填字段吗$必需=数组'name','email','message';然后将其仅添加到$values。这是一个告诉脚本如果foreach循环发生,哪些字段需要放入电子邮件中的命令。@Marc B很抱歉,这没有帮助,表单将不会提交文件。查看您之前发布的javascript。如果字段/值到达服务器,PHP可以处理它。它不会因为不喜欢古龙水或其他东西而选择性地忽略一个字段。从发布的代码来看,由于将字段附加到电子邮件内容数组的调用位于ifin_数组$value,$required块中,它实际上只包括电子邮件中编码的必填字段。我觉得很奇怪。