Html表单没有从PHP处理

时间:2016-04-18 13:45:16

标签: php html

我有这个html表格

(function () { 
    var node = $("div").contents().filter(function () { return this.nodeType == 3 }).first(),
        text = node.text(),
        first = text.slice(0, text.indexOf(" "));

    if (!node.length)
        return;

    node[0].nodeValue = text.slice(first.length);
    node.before('<span>' + first + '</span><br/>');
})(); 

这是我在互联网上发现的我的PHP,但我不能让它工作。请帮我。我试图添加附加到文件的PHP,但这个编辑器不允许我。似乎正在发生的事情是,一旦在网页上填写表单,我就会收到错误返回并修复代码但我不明白错误是什么,因为我不了解PHP。

// Car.cpp
#include "Car.h"   

#define FERRARI
//#define FIAT

#ifdef FERRARI
string Car::WhatCarAmI() { return "Ferrari"; }
#endif

#ifdef FIAT
string Car::WhatCarAmI() { return "Fiat"; }
#endif

点击提交/发送后我收到的错误信息是: 我们非常抱歉,但您提交的表单中发现了错误。这些错误显示在下面。

  

很抱歉,您提交的表单似乎有问题。

     

请返回并修正这些错误。

1 个答案:

答案 0 :(得分:0)

在您的PHP代码中,您正在访问正在调用died()函数的块,该函数会攻击脚本并生成该错误消息:

// validation expected data exists
if (!isset($_POST['first_name']) ||
    !isset($_POST['last_name']) ||
    !isset($_POST['email']) ||
    !isset($_POST['telephone']) ||
    !isset($_POST['comments'])) {
    died('We are sorry, but there appears to be a problem with the form you submitted.');       
}

之所以这样,是因为上面的脚本正在查看是否已发送/发布了几个表单字段,而这些字段尚未发送/发布。您没有包含inputname="first_name"name="last_name"name="telephone"的表单name="comments"。因此,由于这个条件并不令人满意,所以它正在抛出died()函数。

您可以通过更改HTML表单,删除name="name",并为* first_name input last_name and name =&#34; message&#添加, changing来解决此问题。 34; to name =&#34; comments&#34;`,并为电话添加输入:

<form action="mail.php" method="post">

    <div class="col-md-9">

      <div class="col-md-4">
        <input type="text" name="first_name" id="first_name" class="name" placeholder="Your First Name">
      </div>

      <div class="col-md-4">
        <input type="text" name="last_name" id="last_name" class="name" placeholder="Your Last Name">
      </div>

      <div class="col-md-4">
        <input type="text" name="telephone" id="telephone" class="email" placeholder="Your Telephone">
      </div>

      <div class="col-md-4">
        <input type="text" name="email" id="email" class="email" placeholder="Your Email">
      </div>

      <div class="col-md-4">
        <input type="text" name="subject" id="subject" class="subject" placeholder="Subject">
      </div>

      <div class="col-md-12">
        <textarea name="comments" cols="1" rows="1" class="message" placeholder="Your message... " id="comments"></textarea>
      </div>

      <div class="col-md-4">
        <input type="submit" name="send" value="Send Message" id="submit" class="button templatemo_sendbtn">
      </div>

    </div>
</form>

修改

还必须满足以下条件:

$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$last_name)) {
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
if(strlen($comments) < 2) {
    $error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
    died($error_message);
}

这意味着您必须在comments textarea中输入有效的电子邮件地址(例如example@example.com),名字(例如John),姓氏(例如Doe)和2个或更多字符表格中的方框。