联系表格和PHP

时间:2015-05-09 14:40:04

标签: javascript php jquery forms

我是开发新手,只是在我们说话时学习它。我还没有学习PHP和JavaScript / JQuery,所以我的网站上的联系表格有问题。

JavaScript似乎正在运行,但PHP操作并非如此。我已经从网络上删除了它的开放脚本,所以我确定这些操作缺少一些代码,因为我不知道我在看什么,我就是完全迷失了。任何帮助都会很棒。

<!-- FORM -->
    <form id="form" form role="form" action="contact_form.php" method="post">
     <p id="returnmessage"></p>
   <br/>
      <label>Name: <span>*</span></label>
    <br/>
    <input type="text" id="name" placeholder="Name"/><br/>
    <br/>
    <label>Email: <span>*</span></label>
    <br/>
    <input type="text" id="email" placeholder="Email"/><br/>

    <br/>       
                            <textarea id="message" placeholder="Message......."></textarea><br/>
    <br/>
    <input type="button" id="submit" value="Send"/>
                            <br/>
          </form>

PHP

<?php 
//Fetching Values from URL 
$name = $_POST['name1'];
$email = $_POST['email1'];
$message = $_POST['message1'];
$contact = $_POST['contact1'];
//sanitizing email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
//After sanitization Validation is performed
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
if (!preg_match("/^[0-9]{10}$/", $contact)) {
echo "<span>* Please Fill Valid Contact No. *</span>";
} else {
$subject = $name;
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From:' . $email. "\r\n"; // Sender's Email
$headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender
$template = '<div style="padding:50px; color:white;">Hello ' . $name .      ',<br/>'
. '<br/>Thank you...! For Contacting Us.<br/><br/>'
. 'Name:' . $name . '<br/>'
. 'Email:' . $email . '<br/>'
. 'Contact No:' . $contact . '<br/>'
. 'Message:' . $message . '<br/><br/>'
. 'This is a Contact Confirmation mail.'
. '<br/>'
. 'We Will contact You as soon as possible .</div>';
$sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">"     . $template . "</div>";
// message lines should not exceed 70 characters (PHP rule), so wrap it
$sendmessage = wordwrap($sendmessage, 70);

// Send mail by PHP Mail Function
mail(ash.cruikshank@gmail.com, $subject, $sendmessage, $headers);
echo "Your Query has been received, We will contact you soon.";
}
} else {
echo "<span>* invalid email *</span>";
}

JAVASCRIPT

$(document).ready(function(){  
$("#submit").click(function(){
var name = $("#name").val();
var email = $("#email").val();
var message = $("#message").val();
var contact = $("#contact").val();

$("#returnmessage").empty(); //To empty previous error/success message.
//checking for blank fields 
if(name==''||email==''||contact=='')
{
alert("Please Fill Required Fields"); 
}
else{
// Returns successful data submission message when the entered information    is stored in database.
$.post("contact_form.php",{ name1: name, email1: email,   message1:message, contact1: contact},
function(data) {
            $("#returnmessage").append(data);//Append returned message to message paragraph
                if(data=="Your Query has been received, We will contact you soon."){
                    $("#form")[0].reset();//To reset form fields on success
                }
        });
     }

 });
 });

2 个答案:

答案 0 :(得分:2)

您的第一个问题是您没有从html表单中命名任何变量。 PHP需要这些才能处理信息。例如:

 <input type="text" id="name" placeholder="Name"/>

需要有一个名称字段(不仅仅是id,type和placeholder)。以下是匹配PHP脚本中的post变量的方式:

 <input type="text" id="name" name="name1" placeholder="Name"/>

您也应该使用其余的HTML输入执行此操作。确保它们与php表单中的POST中的变量匹配(这是PHP脚本中名为$_POST['']的变量)这将解决您的第一个问题。

此外,正如评论中所提到的,特别是在开发代码时,将错误报告置于代码顶部以捕获任何问题是一个非常好的主意。如果将它放在代码顶部,则可能会出现一些非常大的信息错误:

<?php error_reporting(E_ALL); ini_set('display_errors', 1); ?>

注意,将电子邮件地址保存在变量中可能是个好主意,而不是硬编码。

对于sendmessage变量,您需要连接这样的变量(如上面评论中所述),否则第二个$sendmessage变量将覆盖第二个变量。 (请注意第二行.之前的=

$sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">"     . $template . "</div>";

$sendmessage  .=  wordwrap($sendmessage, 70);

但是,您可能希望将其清理一下以确保其正常工作。在您尝试将两个项目连接到一个变量之前尝试将此类内容作为纯文本消息只在一个变量中。它应该通过罚款发送,然后一旦你了解它的工作原理就可以担心格式化。

我建议您阅读一些教程(http://w3schools.com非常适合学习),但您正在做的这类事情是一个很好的起点。如果您遇到更多麻烦,请尝试将代码剥离到最低限度(例如,从电子邮件中删除HTML段;只需先将其作为纯文本发送以确保它正常工作,然后将其重新插入,删除正则表达式检查和javascript,直到你有表格工作,然后一点一点地添加回来。这样你就可以更好地理解这些作品是如何工作的。)

答案 1 :(得分:0)

更改

$name = $_POST['name1']; $email = $_POST['email1']; $message = $_POST['message1']; $contact = $_POST['contact1'];

$name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $contact = $_POST['contact'];

并为每个输入提供名称属性(name =“name”,name =“email”..)。

这将是有效的。