The Web Design Group

... Making the Web accessible to all.

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Validator for form, Validation
lamboman
post Apr 28 2017, 01:51 PM
Post #1





Group: Members
Posts: 2
Joined: 28-April 17
Member No.: 26,390



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

}

?>

User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post
Christian J
post Apr 28 2017, 03:52 PM
Post #2


.
********

Group: WDG Moderators
Posts: 9,628
Joined: 10-August 06
Member No.: 7



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?
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post
lamboman
post Apr 30 2017, 10:40 AM
Post #3





Group: Members
Posts: 2
Joined: 28-April 17
Member No.: 26,390



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.
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post

Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



- Lo-Fi Version Time is now: 19th March 2024 - 04:57 AM