leet8845 Posted August 10, 2007 Share Posted August 10, 2007 Hi, I need some code to validate an email address sent on my form. Does anyone know if its possible to add anything to exsiting code below to do this. I'm mainly bothered that the email has a '@' symbol, nothing more complex really. Here's my code which works fine at the mo: <?php // Getformdataandcreateemail $Email2="mail@mywebsite.co.uk"; $email=$_POST['Email']; $name=stripslashes($_POST['Name']); $subject=stripslashes($_POST['Subject']); $messagecont=stripslashes($_POST['Message']); $message= <<<EOD -------------------------------- Enquiry from your website -------------------------------- Name: $name Subject: $subject EmailAddress: $email Message: $messagecont -------------------------------- End of Message -------------------------------- EOD; //Sendemail @mail($Email2,$subject,$message, "From:$Email2"); header("Location:thankyou.html"); ?> Many thanks for looking Quote Link to comment Share on other sites More sharing options...
leet8845 Posted August 10, 2007 Author Share Posted August 10, 2007 oh yeah, im a total noob so simple explanations(if possible) greatly appreciated!!!! Quote Link to comment Share on other sites More sharing options...
MadTechie Posted August 11, 2007 Share Posted August 11, 2007 $email = "me@hotmail.com"; if (preg_match('/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $email)) { echo "email valid"; } Better one (RFC 2822 standard) $email = "me@hotmail.com"; if(preg_match('/\A(?:^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$)\Z/i', $email )) { echo "email valid"; } Quote Link to comment Share on other sites More sharing options...
leet8845 Posted August 12, 2007 Author Share Posted August 12, 2007 Hey thanks for that, just a couple of Q's: Any clues where I paste this into my code?, also do i change the email address? Again thanks Quote Link to comment Share on other sites More sharing options...
MadTechie Posted August 12, 2007 Share Posted August 12, 2007 replace $email=$_POST['Email']; with $email = $_POST['Email']; if(preg_match('/\A(?:^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$)\Z/i', $email )) { echo "email valid"; } Quote Link to comment Share on other sites More sharing options...
leet8845 Posted August 13, 2007 Author Share Posted August 13, 2007 Hi thanks for that but its still not working, have I made a mistake? <?php // Getformdataandcreateemail $Email2="mail@mywebsite.co.uk"; $email = $_POST['Email']; if(preg_match('/\A(?:^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$)\Z/i', $email )) { echo "email valid"; } $name=stripslashes($_POST['Name']); $subject=stripslashes($_POST['Subject']); $messagecont=stripslashes($_POST['Message']); $message= <<<EOD -------------------------------- Enquiry from your website -------------------------------- Name: $name Subject: $subject EmailAddress: $email Message: $messagecont -------------------------------- End of Message -------------------------------- EOD; //Sendemail @mail($Email2,$subject,$message, "From:$Email2"); header("Location:thankyou.html"); ?> Quote Link to comment Share on other sites More sharing options...
MadTechie Posted August 13, 2007 Share Posted August 13, 2007 Try this. <?php // Getformdataandcreateemail $FromEMail = "mail@mywebsite.co.uk"; $ToEMail=$_POST['Email']; if(!preg_match('/\A(?:^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$)\Z/i', $ToEMail)) { die ("$ToEMail in an invalid email"); } $name=stripslashes($_POST['Name']); $subject=stripslashes($_POST['Subject']); $messagecont=stripslashes($_POST['Message']); $message= <<<EOD -------------------------------- Enquiry from your website -------------------------------- Name: $name Subject: $subject EmailAddress: $email Message: $messagecont -------------------------------- End of Message -------------------------------- EOD; //Sendemail @mail($ToEMail,$subject,$message, "From:$FromEMail"); header("Location:thankyou.html"); ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.