Printable Version of Topic

Click here to view this topic in its original format

HTMLHelp Forums _ Server-side Scripting _ Validator for form

Posted by: lamboman Apr 28 2017, 01:51 PM

Forms are not my strong point.Below I have the form and it works fine. I also have a validator script below that works as it is but I want to add the comment part to it and whatever I do it seems to not work.

<form action="send_form_email.php" method="post">
<div class="one_third first">
<label for="first_name">Name <span>*</span></label>
<input type="text" name="first_name" id="first_name" value="" size="22" required>
</div>
<div class="one_third">
<label for="email">Mail <span>*</span></label>
<input type="email" name="email" id="email" value="" size="22" required>
</div>
<div class="block clear">
<label for="comment">Your Comment</label>
<textarea name="comment" id="comment" cols="25" rows="10"></textarea>
</div>
<div>
<input type="submit" name="submit" value="Submit Form">
&nbsp;
<input type="reset" name="reset" value="Reset Form">
</div>
</form>





<?php

if(isset($_POST['email'])) {



// EDIT THE 2 LINES BELOW AS REQUIRED

$email_to = "My email";

$email_subject = "Inquiry from site";




function died($error) {

// your error code can go here

echo "We are very sorry, but there were error(s) found with the form you submitted. ";

echo "These errors appear below.<br /><br />";

echo $error."<br /><br />";

echo "Please go back and fix these errors.<br /><br />";

die();

}



// validation expected data exists

if(!isset($_POST['first_name']) ||

!isset($_POST['email'])) {

died('We are sorry, but there appears to be a problem with the form you submitted.');

}



$first_name = $_POST['first_name']; // required

$email_from = $_POST['email']; // required





$error_message = "";

$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

if(!preg_match($email_exp,$email_from)) {

$error_message .= 'The Email Address you entered does not appear to be valid.<br />';

}

$string_exp = "/^[A-Za-z .'-]+$/";

if(!preg_match($string_exp,$first_name)) {

$error_message .= 'The First Name you entered does not appear to be valid.<br />';

}




if(strlen($error_message) > 0) {

died($error_message);

}

$email_message = "Form details below.\n\n";



function clean_string($string) {

$bad = array("content-type","bcc:","to:","cc:","href");

return str_replace($bad,"",$string);

}



$email_message .= "First Name: ".clean_string($first_name)."\n";

$email_message .= "Email: ".clean_string($email_from)."\n";







// create email headers

$headers = 'From: '.$email_from."\r\n".

'Reply-To: '.$email_from."\r\n" .

'X-Mailer: PHP/' . phpversion();

@mail($email_to, $email_subject, $email_message, $headers);

?>



<!-- include your own success html here -->



Thanks for subscribing to our news letter.

<body onLoad="timer=setTimeout(function(){ window.location='http://whatever.com';}, 5000)">
<p>You will be redirected in 5 seconds</p>
</body>

<?php

}

?>


Posted by: Christian J Apr 28 2017, 03:52 PM

Try adding this:

CODE
$comment = $_POST['comment'];
$comment = strip_tags($comment);
$email_message .= clean_string($comment)."\n";

after this line:

CODE
$email_message .= "Email: ".clean_string($email_from)."\n";

Note that this will only perform basic sanitation by removing HTML tags, it doesn't limit the min- or maxlength of the message.

BTW, why do you use so much whitespace in your code example? I'm curious because I've seen it in other forum posts too --is it some text editor that causes it?

Posted by: lamboman Apr 30 2017, 10:40 AM

QUOTE(Christian J @ Apr 28 2017, 04:52 PM) *

Try adding this:

CODE
$comment = $_POST['comment'];
$comment = strip_tags($comment);
$email_message .= clean_string($comment)."\n";

after this line:

CODE
$email_message .= "Email: ".clean_string($email_from)."\n";

Note that this will only perform basic sanitation by removing HTML tags, it doesn't limit the min- or maxlength of the message.

BTW, why do you use so much whitespace in your code example? I'm curious because I've seen it in other forum posts too --is it some text editor that causes it?



Cant thank you enough. Works just as I hoped. Not sure about the white spaces. I believe I copied this script from somewhere so i am guessing it was like that originally. Thanks again.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)