Skip to main content
nigelh70638339
Inspiring
September 20, 2017
Answered

PHP Contact Form issue

  • September 20, 2017
  • 1 reply
  • 6151 views

I have been trying for ages to create a Contact Form and recently discovered a followable tutorial on Youtube. I know that they cannot be 100% trusted.

Can someone please check out the code below and tell me why I am not receiving emails when I do a test. I have crossed out my email address for obvious reasons and this I have checked and correct.

I like the way this looks - www.ultimate-top-trumps.co.uk/contact.php and would like to keep it as close as possible. I do have a CSS file but its not this hence I have pasted in the php script page.

I have used Dreamweaver CS6 and using a Mac.

Any help would be greatly appreciated!

<?php

// Set email variables

$email_to = 'xxxxxxx';

$email_subject = 'Form submission';

// Set required fields

$required_fields = array('fullname','email','comment');

// set error messages

$error_messages = array(

  'fullname' => 'Please enter a Name to proceed.',

  'email' => 'Please enter a valid Email Address to continue.',

  'comment' => 'Please enter your Message to continue.'

);

// Set form status

$form_complete = FALSE;

// configure validation array

$validation = array();

// check form submittal

if(!empty($_POST)) {

  // Sanitise POST array

  foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));

  // Loop into required fields and make sure they match our needs

  foreach($required_fields as $field) {

  // the field has been submitted?

  if(!array_key_exists($field, $_POST)) array_push($validation, $field);

  // check there is information in the field?

  if($_POST[$field] == '') array_push($validation, $field);

  // validate the email address supplied

  if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);

  }

  // basic validation result

  if(count($validation) == 0) {

  // Prepare our content string

  $email_content = 'New Website Comment: ' . "\n\n";

  // simple email content

  foreach($_POST as $key => $value) {

  if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";

  }

  // if validation passed ok then send the email

  mail($email_to, $email_subject, $email_content);

  // Update form switch

  $form_complete = TRUE;

  }

}

function validate_email_address($email = FALSE) {

  return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;

}

function remove_email_injection($field = FALSE) {

   return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));

}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<!-- Contact Form Designed by James Brand @ dreamweavertutorial.co.uk -->

<!-- Covered under creative commons license - http://dreamweavertutorial.co.uk/permissions/contact-form-permissions.htm -->

  <title>Contact Form</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <link href="contact/css/contactform.css" rel="stylesheet" type="text/css" />

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>

    <script type="text/javascript" src="contact/validation/validation.js"></script>

  <script type="text/javascript">

  var nameError = '<?php echo $error_messages['fullname']; ?>';

  var emailError = '<?php echo $error_messages['email']; ?>';

  var commentError = '<?php echo $error_messages['comment']; ?>';

  </script>

</head>

<body onload="MM_preloadImages('contact.images/x.png')">

<div id="formwrap">

<h2> We appreciate your feedback.</h2>

<div id="form">

<?php if($form_complete === FALSE): ?>

<form action="contact.php" method="post" id="comments_form">

  <div class="row">

    <div class="label">Your Name</div> <!--end .label -->

    <div class="input">

    <input type=="text" id="fullname" class="detail" name="fullname" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>

"/><?php if(in_array('fullname', $validation)): ?><span class="error"><?php echo $error_messages['fullname']; ?></span><?php endif; ?>

    </div><!-- end .input -->

    <div class="context">e.g. John Smith or Jane Doe</div><!-- end .context -->

    </div><!--end .row -->

   

    <br>

   

    <div class="row">

    <div class="label">Your Email Address</div> <!--end .label -->

    <div class="input">

    <input type=="text" id="email" class="detail" name="email" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>"/><?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?>

    </div><!-- end .input -->

    <div class="context">We will never share your details</div><!-- end .context -->

    </div><!--end .row -->

   

    <br>

  <div class="row">

    <div class="label">Your Message</div> <!--end .label -->

    <div class="iput2">

    <textarea id="comment" name="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?>

</textarea><?php if(in_array('comment', $validation)): ?><span class="error"><?php echo $error_messages['comment']; ?></span><?php endif; ?>

    </div><!-- end .input -->

    </div><!--end .row -->

    <div class="Submit">

      <p>

        <input type ="submit" id="submit" name="submit" value="Send Message"/>

      </p>

   

    </div><!-- end .submit -->

   

    </form>

<?php else: ?>

<p style="font-size:18px; font-family:Verdana, Geneva, sans-serif; font-weight:bold; color:#000; margin-left:25px;">Thank you for your Message!</p>

<script type="text/javascript">

setTimeout ('ourRedirect()', 5000)

function ourRedirect(){

  location.href='index.html'

}

</script>

<?php endif; ?>

</div><!--end of form --></div>

<p> </p>

<p> </p>

</body>

</html>

    This topic has been closed for replies.
    Correct answer osgood_

    OK, but I am a complete novice at php and only really just got to grips with css. Is there anything in the code that you can see that might be the problem?

    I asked 123 last week and they told me that the code is wrong and basically, tough, just as you said osgood.


    nigelh70638339  wrote

    I asked 123 last week and they told me that the code is wrong and basically, tough, just as you said osgood.

    There's nothing wrong with the code, tell 123 you have tested it along with other php mail scripts on several different php servers where the code works. If it works for markw39954149 and myself that's conclusive proof.

    The problem is you are trying to run php on a Windows server which is not its native environment, that's a problem, especailly if the host refuses to accept its there rsponsiblity, assuming you have done everything correct at your end and the server supports the php mail function.

    Hosts will never accept anything unless you have  proof and then if they still refuse to do anything about it that leaves little choice other than to up-sticks and move. Do you really think the host will spend time trying to work out what is wrong when you are a small customer paying probably £4 a month for hosting, they are not bothered at all..

    1 reply

    Legend
    September 20, 2017

    First. Have you uploaded the file to your remote server and tested it? This wont work if you are testing it locally.

    Second. Are you sure your server supports php and the php 'mail' function?

    The code works just fine for me. It's a bit OTT (over the top) in  my opinion, but works.

    nigelh70638339
    Inspiring
    September 20, 2017

    Yes it is all uploaded but not yet available to use as I have not linked to it.

    My host is 123 and they told me that they have run a php script and things work for them.

    I have done about 8 tests since it has been online and received nothing back. I have checked my spam also.

    Nancy OShea
    Community Expert
    Community Expert
    October 20, 2017

    Who is Mark?


    Nevermind.  I now see Mark's post.  It got lost in this long thread.

    Nancy O'Shea— Product User & Community Expert