-2

I have written the javaScript for this contact form, this is the HTML below and I have not included CSS here

<!-- conatact form -->
   <div class="cws-widget">
     <div class="widget-title"  style="color:#fec20b;">Send a Message</div>
         <div class="textwidget">
           <div role="form" class="cf" id="cf-f1705-o1" lang="en-US" dir="ltr">
         <!-- <div class="screen-reader-response"></div> -->
           <form action="" method="post" class="cf-form contact-form" novalidate="novalidate">
                                    <p><span class="cf-form-control-wrap your-name"><input type="text" name="name" id="name" for="name" value="" size="60" class="" aria-required="true" aria-invalid="false" placeholder="Name" /></span></p>
                                    <p><span class="cf-form-control-wrap your-email"><input type="email" name="email" id="email" for="email" value="" size="60" class="" aria-required="true" aria-invalid="false" placeholder="E-mail" /></span></p>
                                    <p><span class="cf-form-control-wrap your-message"><textarea name="message" id="message" for="message" cols="39" rows="6" class="" aria-invalid="false" placeholder="Message"></textarea></span></p>
                                    <p>
                                        <input type="submit" id="submit" value="Send" class="cf-form-control cf-submit" />
                                    </p>
                                </form>
                                <div class="email_server_responce"></div>
                            </div>
                        </div>
                    </div>

and the script to validate and Ajax server response is

if (jQuery(".contact-form").length) {

  jQuery(".contact-form").each(function(){

    jQuery(this).validate({
        onkeyup: false,
        onfocusout: false,
        errorElement: 'p',
        errorLabelContainer: jQuery(this).find('.msg_box_text'),
        rules:
        {
          name:
          {
            required: true
          },
          email:
          {
            required: true,
            email: true
          },
          message:
          {
            required: true
          },
          verify: {
            required: true,
            remote: {
              url: 'php/check-capcha.php',
              type: "post",
              data:
              {
                  code: function()
                  { 
                      return jQuery('.verify').val();
                  }
              }
            }
          }
        },
        messages:
        {
          name:
          {
            required: 'Please enter your name',
          },
          email:
          {
            required: 'Please enter your email address',
            email: 'Please enter a VALID email address'
          },
          message:
          {
            required: 'Please enter your message'
          },
          verify: {
            required: 'Please enter Captcha',
            remote: "Please enter a VALID Captcha"
          }
        },
        invalidHandler: function()
        {
          jQuery(this).find(".cws_msg_box.error-box").slideDown('fast');
          jQuery("#feedback-form-success").slideUp('fast');

        },
        submitHandler: function(form)
        {   
          jQuery(form).find(".cws_msg_box.error-box").slideUp('fast'); 
          var $form = jQuery(form).ajaxSubmit();
          submit_handler($form, jQuery(form).parent().children(".email_server_responce") );
        }
      });
    })
  var submit_handler =  function (form, wrapper){

    var $wrapper = jQuery(wrapper); //this class should be set in HTML code

    $wrapper.css("display","block");
    var data = {
      action: "email_server_responce",
      values: jQuery(form).serialize()
    };

    jQuery.post("php/contacts-process.php", data, function(s_response) {
      s_response = jQuery.parseJSON(s_response);
      if(s_response.info == 'success'){
        $wrapper.addClass("message message-success").append('<div class="cws_msg_box success-box clearfix"><div class="icon_section"><i class="fa fa-thumbs-up"></i></div><div class="content_section"><div class="msg_box_title">Success!</div><div class="msg_box_text">Your message was successfully delivered.</div></div></div>');
        $wrapper.delay(5000).hide(500, function(){
          jQuery(this).removeClass("message message-success").text("").fadeIn(500);
          $wrapper.css("display","none");
        });
        jQuery(form)[0].reset(); 
      } else { 
        $wrapper.addClass("cws_msg_box error-box clearfix").append("<div class='icon_section'><i class='fa fa-exclamation'></i></div><div class='content_section'><div class='msg_box_title'>Server fail!</div><div class='msg_box_text'><p> Please try again later!</p></div></div>");
        $wrapper.delay(5000).hide(500, function(){
          jQuery(this).removeClass("cws_msg_box error-box clearfix").text("").fadeIn(500);
          $wrapper.css("display","none");
        });
      }
    });
  return false;
  }
}

and the PHP is

<?php
//Fetching Values from URL  
$host="localhost";
$username="root";
$password="";
$databasename="test";

$connect=mysql_connect($host,$username,$password);
$db=mysql_select_db($databasename);

if($_POST){
    $name=$_POST['name'];
    $email=$_POST['email'];
    $message=$_POST['message'];

    $insert=mysql_query("insert into contact (name,email,message) values('$name','$email','$message')");  

    if($insert){
        $to = "example@gmail.com";
        $subject = "Contact Request.";
        $txt = "Hello,\n You have got a request from name: ".$name."\nemail: ".$email."\nmessage: ".$message."\n";
        $headers = "From: info@example.com";

        mail($to,$subject,$txt,$headers);
    }
}?>

the validation works perfectly but it does not send data to the database and there is no ajax response form the server.

Jay Blanchard
  • 34,243
  • 16
  • 77
  • 119
s4nj33b
  • 31
  • 3
  • 1
    ***Please [stop using `mysql_*` functions](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php).*** [These extensions](http://php.net/manual/en/migration70.removed-exts-sapis.php) have been removed in PHP 7. Learn about [prepared](http://en.wikipedia.org/wiki/Prepared_statement) statements for [PDO](http://php.net/manual/en/pdo.prepared-statements.php) and [MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) and consider using PDO, [it's really pretty easy](http://jayblanchard.net/demystifying_php_pdo.html). – Jay Blanchard Jan 04 '18 at 12:52
  • [Have you watched the AJAX request / response in the browser's developer tools? Have you included the jQuery library in the project? Are there any errors reported? Are you running this on a web-server?](http://jayblanchard.net/basics_of_jquery_ajax.html) – Jay Blanchard Jan 04 '18 at 12:52
  • [Little Bobby](http://bobby-tables.com/) says ***[your script is at risk for SQL Injection Attacks.](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)***. Even [escaping the string](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) is not safe! – Jay Blanchard Jan 04 '18 at 12:52

1 Answers1

0

Try with this.

from.php

<div class="cws-widget">
    <div class="widget-title"  style="color:#fec20b;">Send a Message</div>
    <div class="textwidget">
        <div role="form" class="cf" id="cf-f1705-o1" lang="en-US" dir="ltr">
            <form id="contactForm" class="cf-form contact-form" method="POST" novalidate="novalidate">
                <p><span class="cf-form-control-wrap your-name"><input type="text" name="name" id="name" for="name" value="" size="60" class="" aria-required="true" aria-invalid="false" placeholder="Name" /></span></p>
                <p><span class="cf-form-control-wrap your-email"><input type="email" name="email" id="email" for="email" value="" size="60" class="" aria-required="true" aria-invalid="false" placeholder="E-mail" /></span></p>
                <p><span class="cf-form-control-wrap your-message"><textarea name="message" id="message" for="message" cols="39" rows="6" class="" aria-invalid="false" placeholder="Message"></textarea></span></p>
                <p>
                    <input type="submit" id="submit" value="Send" class="cf-form-control cf-submit" />
                </p>
            </form>
            <div class="email_server_responce"></div>
        </div>
    </div>
</div>

$( "#contactForm" ).submit(function( event ) {
    event.preventDefault();
    $(this).validate({
        onkeyup: false,
        onfocusout: false,
        errorElement: 'p',
        errorLabelContainer: $(this).find('.msg_box_text'),
        rules:
        {
            name:
            {
                required: true
            },
            email:
            {
                required: true,
                email: true
            },
            message:
            {
                required: true
            },
            verify: {
                required: true,
                remote: {
                    url: 'php/check-capcha.php',
                    type: "post",
                    data:
                    {
                        code: function()
                        { 
                            return $('.verify').val();
                        }
                    }
                }
            }
        },
        messages:
        {
            name:
            {
                required: 'Please enter your name',
            },
            email:
            {
                required: 'Please enter your email address',
                email: 'Please enter a VALID email address'
            },
            message:
            {
                required: 'Please enter your message'
            },
            verify: {
                required: 'Please enter Captcha',
                remote: "Please enter a VALID Captcha"
            }
        },
        invalidHandler: function()
        {
            $(this).find(".cws_msg_box.error-box").slideDown('fast');
            $("#feedback-form-success").slideUp('fast');

        },
        submitHandler: function(form)
        {   
            $(form).find(".cws_msg_box.error-box").slideUp('fast'); 
            submit_handler( $("#contactForm").parent().children(".email_server_responce") );
        }
    });
});


var submit_handler =  function ( wrapper){

    var $wrapper = jQuery(wrapper);

    $wrapper.css("display","block");

    $.ajax({
        url: 'contacts-process.php',
        type: 'POST',
        data: $("#contactForm").serialize(),
        dataType: "json",
        success: function (data, textStatus) {
            console.log(data);
            $("#errorDiv").html(data);
            if(data.info == 'success'){
                $wrapper.addClass("message message-success").append('<div class="cws_msg_box success-box clearfix"><div class="icon_section"><i class="fa fa-thumbs-up"></i></div><div class="content_section"><div class="msg_box_title">Success!</div><div class="msg_box_text">Your message was successfully delivered.</div></div></div>');
                $wrapper.delay(5000).hide(500, function(){
                    jQuery(this).removeClass("message message-success").text("").fadeIn(500);
                    $wrapper.css("display","none");
                });
                $("#contactForm").reset(); 
            } else { 
                $wrapper.addClass("cws_msg_box error-box clearfix").append("<div class='icon_section'><i class='fa fa-exclamation'></i></div><div class='content_section'><div class='msg_box_title'>Server fail!</div><div class='msg_box_text'><p> Please try again later!</p></div></div>");
                $wrapper.delay(5000).hide(500, function(){
                    jQuery(this).removeClass("cws_msg_box error-box clearfix").text("").fadeIn(500);
                    $wrapper.css("display","none");
                });
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(jqXHR);
            console.log(textStatus);
            console.log(errorThrown);
        }
    });


    return false;
}

contacts-process.php

<?php
$host="localhost";
$username="root";
$password="YeezY@001";
$databasename="testst";

$connect = mysql_connect($host,$username,$password);
$db = mysql_select_db($databasename);

if($_POST){
    $name=$_POST['name'];
    $email=$_POST['email'];
    $message=$_POST['message'];

    //$insert=mysql_query("insert into contact (name,email,message) values('$name','$email','$message')");  

    //if($insert){

        // $to = "example@gmail.com";
        // $subject = "Contact Request.";
        // $txt = "Hello,\n You have got a request from name: ".$name."\nemail: ".$email."\nmessage: ".$message."\n";
        // $headers = "From: info@example.com";

        // mail($to,$subject,$txt,$headers);
    ///}

    if(isset($_POST)) { 

        $array['info'] = "Fail";
        $array['name'] = $name;
        $array['email'] = $email;
        $array['message'] = $message;

    } else {

        $array['info'] = "Success";
        $array['name'] = $name;
        $array['email'] = $email;
        $array['message'] = $message;
    }

    header('Content-Type: application/json');
    echo json_encode($array);
}?>