简体   繁体   中英

php contact form returns field names and not the values

I am new to this, so please be kind. I have a contact form for a website. I am not sure what errors I have made to get this. This is what I receive in email from the contact form:

<p>$usersname has contacted you from your site.</p><h3>Their Message is as follows:</h3><p>$usersmessage</p>$usersmessage"$usersmessage"<h5>Contact details</h5><p>Phone Number: $usersphonenumber</p><p>Email Address: $usersemail</p>

Not sure what i am doing wrong

It uses this php file:

<?php

if(isset($_REQUEST['contactformid']) && $_REQUEST['contactformid'] == 1){

$youremail = "webmaster@trwebcreations.com"; // Enter your email here!!

$usersname = ($_POST["usersname"]);
$usersemail = ($_POST["usersemail"]);
$usersphonenumber = ($_POST["usersphonenumber"];)
$usersmessage = ($_POST["usersmessage"];)
$subject = 'Message From Chris Gent | Landscape Studio website';
$message = '%usersname% has contacted you from your site.
            Their Message is as follows: %usersmessage%

            Contact details
            Phone Number: %usersphonenumber%
            Email Address: %usersemail%; 

$headers = 'From:' . $usersemail . "\r\n";
mail($youremail, $subject, $message, $headers);

echo '<p>Thank you for your email, a member of our staff will contact you</p>';

} else {    echo '<p>Form could not be sent, please try again!</p>';    }

This is the header script on the html page:

<script>$(document).ready(function() {$('#ajaxcontactform').submit(function(){$('input[type=submit]', this).attr('disabled', 'disabled');});



$('#ajaxcontactform').submit(

    function parseResponse() {

        var usersname = $("#name");
        var usersemail = $("#email");
        var usersphonenumber = $("#phone");
        var usersmessage = $("#comment");
        var contactformid = $("#contactformid");
        var url = "contact.php";

            var emailReg = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
            var valid = emailReg.test(usersemail.val());

            if(!valid) {
                $("#contactwarning").html('<p class="rejectionalert"><span>Your email is not valid!</span></p>').slideDown().delay(2000).slideUp();
                $('input[type=submit]', $("#ajaxcontactform")).removeAttr('disabled');
                return false;
            }

          if (usersname.val() == "" || usersname.val() == "Please Insert Your Name") {                
               $("#contactwarning").html('<p class="rejectionalert"><span>Please Insert Your Name!</span></p>').slideDown().delay(2000).slideUp();
               $('input[type=submit]', $("#ajaxcontactform")).removeAttr('disabled');
               return false;               
          }
          if (usersemail.val() == "" || usersemail.val() == "Please Insert Your Email") {
               $("#contactwarning").html('<p class="rejectionalert"><span>Please Insert Your Email!</span></p>').slideDown().delay(2000).slideUp();
               $('input[type=submit]', $("#ajaxcontactform")).removeAttr('disabled');
               return false;
          }
          if (usersphonenumber.val() == "" || usersphonenumber.val() == "Please Insert Your Phone Number") {
               $("#contactwarning").html('<p class="rejectionalert"><span>Please Insert Your Phone Number!</span></p>').slideDown().delay(2000).slideUp();
               $('input[type=submit]', $("#ajaxcontactform")).removeAttr('disabled');
               return false;
          }
          if (usersmessage.val() == "" || usersmessage.val() == "Please Leave A Message") {
               $("#contactwarning").html('<p class="rejectionalert"><span>You forgot to leave a message!</span></p>').slideDown().delay(2000).slideUp();
               $('input[type=submit]', $("#ajaxcontactform")).removeAttr('disabled');
               return false;
          }

                $.post(url,{ usersname: usersname.val(), usersemail: usersemail.val(), usersphonenumber: usersphonenumber.val(), usersmessage: usersmessage.val(), contactformid: contactformid.val() } , function(data) {
                    $('#contactajax').html(data);
                    $('#contactajax').slideDown().delay(1000).slideUp();
                    $("#name").val('Please Insert Your Name');
                    $("#email").val('Please Insert Your Email');
                    $("#phone").val('Please Insert Your Phone Number');
                    $("#comment").val('Please Leave A Message');
                    $('input[type=submit]', $("#ajaxcontactform")).removeAttr('disabled');
                });

      }

  ); });

Here is the actual html form:

<form action="javascript:parseResponse();" method="post" name="ajaxcontactform" id="ajaxcontactform">

            <div class="contacttextarea">
                <input name="contactformid" id="contactformid" type="hidden" value="1" />

                <fieldset>
                    <textarea name="comment" id="comment" cols="5" rows="5" class="contacttextarea"onfocus="if (this.value == 'Please Leave A Message') {this.value = '';}">Please Leave A Message</textarea>
                </fieldset>

            </div>

            <div class="contacttextboxes">

                <fieldset>
                    <input id="name" name="name" type="text" class="contacttextform" onfocus="if (this.value == 'Please Insert Your Name') {this.value = '';}"value="Please Insert Your Name">
                </fieldset>

                <fieldset>
                    <input id="phone" name="phone" type="text" class="contacttextform" onfocus="if (this.value == 'Please Insert Your Phone Number') {this.value = '';}"value="Please Insert Your Phone Number">
                </fieldset>

                <fieldset>
                    <input id="email" name="email" type="text" class="contacttextform" onfocus="if (this.value == 'Please Insert Your Email') {this.value = '';}"value="Please Insert Your Email">
                </fieldset>

                <fieldset>
                    <input name="send" type="submit" class="contactformbutton" value="Send">
                </fieldset>

            </div>

        </form>

Here is the form validation:

jQuery(document).ready(function($){

// hide messages 
$("#error").hide();
$("#sent-form-msg").hide();

// on submit...
$("#contactForm #submit").click(function() {
    $("#error").hide();

    //required:

    //name
    var name = $("input#name").val();
    if(name == ""){
        $("#error").fadeIn().text("Name required.");
        $("input#name").focus();
        return false;
    }

    // email
    var email = $("input#email").val();
    if(email == ""){
        $("#error").fadeIn().text("Email required");
        $("input#email").focus();
        return false;
    }

    // web
    var web = $("input#web").val();
    if(web == ""){
        $("#error").fadeIn().text("Web required");
        $("input#web").focus();
        return false;
    }

    // comments
    var comments = $("#comments").val();

    // send mail php
    var sendMailUrl = $("#sendMailUrl").val();

    //to, from & subject
    var to = $("#to").val();
    var from = $("#from").val();
    var subject = $("#subject").val();

    // data string
    var dataString = 'name='+ name
                    + '&email=' + email        
                    + '&web=' + web
                    + '&comments=' + comments
                    + '&to=' + to
                    + '&from=' + from
                    + '&subject=' + subject;                                 
    // ajax
    $.ajax({
        type:"POST",
        url: sendMailUrl,
        data: dataString,
        success: success()
    });
});  


// on success...
 function success(){
    $("#sent-form-msg").fadeIn();
    $("#contactForm").fadeOut();
 }

return false;});

Basic PHP:

$message = '%usersname% has contacted you from your site.';
            ^^^^^^^^^^^----this

Your %whatever% "variables" have absolutely NO meaning to PHP. If you want PHP to replace your variables with values, then you have to use the correct syntax:

$usersname = $_POST["usersname"];    

$mail = "Hello, $usersname, .....";
                ^^^^^^^^^^---a proper PHP variable

And note that you have to use " -quoted strings for this. $foo in a single-quoted variable is just four characters, $ , f , o , o . In a double-quoted string, it's a variable whose name is foo , and will replaced with the variable's value.

reason, you are using single quotes in email mensage format, try use double quotes or concat your variables in string like:

$message = 'hey steve my name is: '.$contact_name.' ill salute you!';

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM