This certainly does seem to be a popular question! Firstly, I sincerely apologise for repeating the question. I have tried several fixes used in different questions and haven't found anything which can fix my problem yet. I have created a website that essentially wants to send a query from the contact form to me. i will try to define my problems: 1. I am expecting an error message to come up which says 'Name is a required field', or similar, however this doesn't. 2. When pressing submit the page takes me to a blank page that directs me to my mail_form.php on my server. Of note, my servers is 123-reg who say that they do allow user scripts but also provide their own example of one to use - I have tried this to no avail. I'm not 100% sure what you'll ask to see so I'll provide my jsfiddle and the relevant bits: My jsfiddle: http://jsfiddle.net/c9Sug/ My PHP: \[code\]<?php $yourEmail = "[email protected]"; // the email address you wish to receive these mails through $yourWebsite = "HTTP://WWW.SSWEBTEST.CO.UK"; // the name of your website $thanksPage = 'thankyou.html'; // URL to 'thanks for sending mail' page; leave empty to keep message on the same page $maxPoints = 4; // max points a person can hit before it refuses to submit - recommend 4$error_msg = null;$result = null;function isBot() { $bots = array("Indy", "Blaiz", "Java", "libwww-perl", "Python", "OutfoxBot", "User-Agent", "PycURL", "AlphaServer", "T8Abot", "Syntryx", "WinHttp", "WebBandit", "nicebot"); $isBot = false; foreach ($bots as $bot) if (strpos($_SERVER['HTTP_USER_AGENT'], $bot) !== false) $isBot = true; if (empty($_SERVER['HTTP_USER_AGENT']) || $_SERVER['HTTP_USER_AGENT'] == " ") $isBot = true; exit("Bots not allowed.</p>");}if ($_SERVER['REQUEST_METHOD'] == "POST") { function clean($data) { $data = http://stackoverflow.com/questions/15590644/trim(stripslashes(strip_tags($data))); return $data; } $points = (int)0; $badwords = array("adult", "beastial", "bestial", "blowjob", "clit", "cum", "cunilingus", "cunillingus", "cunnilingus", "cunt", "ejaculate", "fag", "felatio", "fellatio", "fuck", "fuk", "fuks", "gangbang", "gangbanged", "gangbangs", "hotsex", "hardcode", "jism", "jiz", "orgasim", "orgasims", "orgasm", "orgasms", "phonesex", "phuk", "phuq", "porn", "pussies", "pussy", "spunk", "xxx", "viagra", "phentermine", "tramadol", "adipex", "advai", "alprazolam", "ambien", "ambian", "amoxicillin", "antivert", "blackjack", "backgammon", "texas", "holdem", "poker", "carisoprodol", "ciara", "ciprofloxacin", "debt", "dating", "porn", "link=", "voyeur"); $exploits = array("content-type", "bcc:", "cc:", "document.cookie", "onclick", "onload", "javascript"); foreach ($badwords as $word) if (strpos($_POST['comments'], $word) !== false) $points += 2; foreach ($exploits as $exploit) if (strpos($_POST['comments'], $exploit) !== false) $points += 2; if (strpos($_POST['comments'], "http://") !== false || strpos($_POST['comments'], "www.") !== false) $points += 2; if (isset($_POST['nojs'])) $points += 1; if (preg_match("/(<.*>)/i", $_POST['comments'])) $points += 2; if (strlen($_POST['name']) < 3) $points += 1; if (strlen($_POST['comments']) < 15 || strlen($_POST['comments'] > 1500)) $points += 2; foreach ($_POST as $key => $value) $_POST[$key] = trim($value); if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['comments'])) { $error_msg .= "Name, e-mail and comments are required fields. \n"; } elseif (strlen($_POST['name']) > 15) { $error_msg .= "The name field is limited at 15 characters. Your first name or nickname will do! \n"; } elseif (!preg_match("/^[a-zA-Z-'\s]*$/", stripslashes($_POST['name']))) { $error_msg .= "The name field must not contain special characters. \n"; } elseif (!preg_match('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])(([a-z0-9-])*([a-z0-9]))+' . '(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i', strtolower($_POST['email']))) { $error_msg .= "That is not a valid e-mail address. \n"; } elseif (!empty($_POST['url']) && !preg_match('/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(\d+))?\/?/i', $_POST['url'])) $error_msg .= "Invalid website url."; if ($error_msg == NULL && $points <= $maxPoints) { $subject = "Automatic Form Email"; $message = "You received this e-mail message through your website: \n\n"; foreach ($_POST as $key => $val) { $message .= ucwords($key) . ": " . clean($val) . "\r\n"; } $message .= 'IP: '.$_SERVER['REMOTE_ADDR']."\r\n"; $message .= 'Browser: '.$_SERVER['HTTP_USER_AGENT']."\r\n"; $message .= 'Points: '.$points; if (strstr($_SERVER['SERVER_SOFTWARE'], "Win")) { $headers = "From: $yourEmail \r\n"; $headers .= "Reply-To: {$_POST['email']}"; } else { $headers = "From: $yourWebsite <$yourEmail> \r\n"; $headers .= "Reply-To: {$_POST['email']}"; } if (mail($yourEmail,$subject,$message,$headers)) { if (!empty($thanksPage)) { header("Location: $thanksPage"); exit; } else { $result = 'Your mail was successfully sent.'; } } else { $error_msg = 'Your mail could not be sent this time.'; } } else { if (empty($error_msg)) $error_msg = 'Your mail looks too much like spam, and could not be sent this time. ['.$points.']'; }}function get_data($var) { if (isset($_POST[$var])) echo htmlspecialchars($_POST[$var]);}?>\[/code\]My validation.css: \[code\].forms li { overflow: hidden; list-style-type:none;}em.error { clear: both; display: block; font-size: 12px; font-style:italic; color: #f00; margin: -10px 0 10px 175px; width:200px;}input, textarea { padding:5px; } \[/code\]My validation.js: \[code\]/* * Simple jQuery Form Validation Plugin * http://github.com/davist11/jQuery-Simple-Validate * * Copyright (c) 2010 Trevor Davis (http://trevordavis.net) * Dual licensed under the MIT and GPL licenses. * Uses the same license as jQuery, see: * http://jquery.org/license * * @version 0.1 */;(function(b){b.fn.simpleValidate=function(l){var g=b.extend({},b.fn.simpleValidate.defaults,l);return this.each(function(){var d=b(this),a=b.meta?b.extend({},g,d.data()):g,h=a.errorText.search(/{label}/);d.bind("submit",function(i){var f=false;d.find(a.errorElement+"."+a.errorClass).remove();d.find(":input."+a.inputErrorClass).removeClass(a.inputErrorClass);d.find(":input.required").each(function(){var e=b(this),j=b.trim(e.val()),k=e.siblings("label").text().replace(a.removeLabelChar,""),c="";if(j===""){c=h>-1?(c=a.errorText.replace("{label}",k))c=a.errorText);f=true}else if(e.hasClass("email"))if(!/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/.test(j)){c=h>-1?(c=a.emailErrorText.replace("{label}",k))c=a.emailErrorText);f=true}c!==""&&e.addClass(a.inputErrorClass).after("<"+a.errorElement+' class="'+a.errorClass+'">'+c+"</"+a.errorElement+">")});if(f)i.preventDefault();else if(a.completeCallback!==""){a.completeCallback(d);a.ajaxRequest&&i.preventDefault()}})})};b.fn.simpleValidate.defaults={errorClass:"error",errorText:"{label} is a required field.",emailErrorText:"Please enter a valid {label}",errorElement:"strong",removeLabelChar:"*",inputErrorClass:"",completeCallback:"",ajaxRequest:false}})(jQuery);\[/code\]Thank you so much in advance!