我试过 - 单页html与php vs google formscontact表单

时间:2015-05-21 13:50:04

标签: php html forms

我被客户要求使用他们的联系表格链接到谷歌文档。我有一个视频,一步一步显示我做了什么,但当我提交表单时,有一个重定向到正在处理的页面,没有响应发送到表单文件。我将发布代码的代码。:

<div class="col-md-9 col-xs-12 forma">
<!--<form id="form" action="MWSContact.php" method="POST" enctype="text/plain">-->
                      <!--
                       <fieldset>
                        <input type="text" class="col-md-6 col-xs-12 name" name='name' placeholder='Name *'/>
                        <input type="text" class="col-md-6 col-xs-12 Email" name='Email' placeholder='Email *'/>
                        <input type="text" class="col-md-12 col-xs-12 Subject" name='Subject' placeholder='Subject'/>
                        <textarea type="text" class="col-md-12 col-xs-12 Message" name='Message' placeholder='Message *'></textarea>
                        </fieldset>
                        <div class="cBtn col-xs-12">
        <fieldset>
            <input class="send" type="submit" value="Send" />
            <input class="reset" type="reset" value="Reset" />
        </fieldset>
                      </div>  -->
      <!--  </form>-->
                </div>

<?
if (isset($_POST['email'])){

//Here is the email to info
$emial_to = 'email';
$email_subject = "MWS Contact";
$email_from = "Client";
//Error Code
function died ($error){
echo "We are sorry, but there were error (s) in your submitted form.";
echo "These errors appear below.<br/><br/>";

echo $error. "<br/><br/>";
echo "Please check your information again.<br/>";
die();
}
//Validation
if (!isset($_POST['name']) ||
!isset($_POST['email']) ||
!isset($_POST['message']) ||
!isset($_POST['subject'])){
died ('We are sorry but there appears to be a probem with your form submitted.');
}
//values
$name = $_POST['name'];
$email = $_POST['email'];
$message= $_POST['message'];
$subject = $_POST['subject'];
//error messages
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

if (!preg_match($email_exp, $email)){
    $error_message .= 'The Email address you entered does not appear to be valid. <br/>';
}
$string_exp = "/^[A-Za-z.'-]+$/";
    if (!preg_match($string_exp, $name)){
        $error_message .= 'The name you endtered does not appear to be valid. <br/>';
    }
    if (strlen($message) <2){
        $error_message .= 'The comment you entered does not appear to be valid.<br/>';
    }
    if (strlen($email_message) >0){
        died($error_message);
    }
    //Sanitize
    $email_message = "Form Details Below\n\n";

    function clean_string($string){
        $bad = array("content-type", "bcc:", "to:", "cc:", "href");
        return str_replace($bad," ", $string);
    }
        $email_message .="Name:" . clean_string($name) . "\n";
        $email_message .="Email:" . clean_string($email) . "\n";
        $email_message .="Subject:" . clean_string($subject) . "\n";
        $email_message .="Message:" . clean_string($message) . "\n";
"\n";
    //headers
    $headers = 'From: ' .$email_From . "\r\n". 'Reply-To:' . $email. "\r\n" . 'X-Mailer: PHP/' .phpversion();
        @mail ($email_to, $email_subject, $email_message, $headers);

}
?>
Thank you for contacting us. We will be in contact with you shortly.

google form

1 个答案:

答案 0 :(得分:3)

查看您的作业和条件语句的所有POST数组的lettercase:

  • $_POST['name']
  • $_POST['email']
  • $_POST['message']
  • $_POST['subject']

然后以你的形式

<input type="text" class="col-md-6 col-xs-12 name" name='name' placeholder='Name *'/>
<input type="text" class="col-md-6 col-xs-12 Email" name='Email' placeholder='Email *'/>
<input type="text" class="col-md-12 col-xs-12 Subject" name='Subject' placeholder='Subject'/>
<textarea type="text" class="col-md-12 col-xs-12 Message" name='Message' placeholder='Message *'></textarea>

信箱必须匹配。您在email中有$_POST['email'],然后在name='Email'输入。

if (isset($_POST['email'])){...}条件语句中的任何内容都不会因为这个原因而触发,包括所有其他不会填充的POST数组。

  • 所有其他人都一样。 POST数组/变量区分大小写。

因此,将它们全部更改为匹配name='email',并为其他人完成剩下的工作。

  • 此外,从表单标记中删除 enctype="text/plain",这也会导致表单失败;
    这非常重要
  • 请务必从代码中删除<!---->。这些是HTML评论,屏幕上不会显示任何内容,也不会执行。

  • 确保启用了短打开标记。否则,您需要将<?更改为<?php

  • 删除@的{​​{1}},它是一个错误抑制器。

错误报告会发出信号&#34;未定义索引电子邮件....&#34;启用它的其他人。

error reporting添加到文件的顶部,这有助于查找错误。

@mail

旁注:错误报告应仅在暂存时完成,而不是生产。

<强>脚注:

您似乎并未使用<?php error_reporting(E_ALL); ini_set('display_errors', 1); // rest of your code 执行任何操作,并且$subject没有为其发送电子邮件地址分配任何内容。您需要修改代码以确定它应该是什么。

  • $email_to需要添加到您的代码中,并将其替换为您的电子邮件地址。

编辑:

你有$email_to = "email@example.com";这是一个错字。见上面的代码。

$emial_to = 'email';$email_From更多错别字。

您应该使用$email_from = "Client";代替$email

  • mail()期望$email = $_POST['email'];是电子邮件,而不是名称。

From:&lt; =应该是$headers = 'From: ' .$email_From

...编辑似乎是无穷无尽的。

请仔细检查整个代码,确保所有内容都匹配,没有错别字,字母问题。等

  • 我相信我已经赐予你足够的帮助,让你开始。