Forum Moderators: coopster

Message Too Old, No Replies

php script not working properly

         

benji

10:00 am on Mar 8, 2009 (gmt 0)

10+ Year Member



I've used and edited the following code.
It worked OK, but I wanted to add validation for postcode.
Since that, all that works now is the postcode validation, but nothing else!
I'm very new to psp, so get stuck very easily. Any help would be greatly appreciated.

<?php
if(isset($_POST['email'])) {

// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "my email";
$email_subject = "subject";

function died($error) {
// your error code can go here
echo "We are very sorry, but there are problems 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['forname']) ¦¦
!isset($_POST['surname']) ¦¦
!isset($_POST['email']) ¦¦
!isset($_POST['postcode']) ¦¦
!isset($_POST['textarea'])) {
died('We are sorry, but there appears to be a problem with the form your submitted.');
}

$first_name = $_POST['forname'];
$last_name = $_POST['surname'];
$email_from = $_POST['email'];
$post_code = $_POST['postcode'];
$comments = $_POST['textarea'];

$error_message = "";
$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
if(!eregi($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$first_name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!eregi($string_exp,$last_name)) {
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
$error_message = "";
$post_code_exp = "^([tT][fF][1][0] ?[0-9][a-zA-Z]{2})$";
if(!eregi($post_code_exp,$post_code)) {
$error_message .= 'Postcode MUST start with TF10.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'The Comments you entered do 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 .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";
$email_message .= "Postcode: ".clean_string($post_code)."\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);
?>

daveVk

11:18 am on Mar 8, 2009 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



You need to remove the line marked in red, as this will override prior error checks

$error_message = "";
$post_code_exp = "^([tT][fF][1][0] ?[0-9][a-zA-Z]{2})$";
if(!eregi($post_code_exp,$post_code)) {
$error_message .= 'Postcode MUST start with TF10.<br />';

p.s. This is a PHP forum on this site.

benji

1:17 pm on Mar 8, 2009 (gmt 0)

10+ Year Member



WOW! Easy as that...
Thankyou very much.

Didn't realise about the php forum either.
Thanks for advice :)