bcooperz Posted April 28, 2011 Share Posted April 28, 2011 Hey my name is Brandon, im quite new to php but im improving and I really want to get into web design soon. Well lucky for you guys I was bored so i decided to create a Contact Us page. Just so you know MY contact us requires the user to be logged in to use it otherwise it redirects them to the login.php page and outputs a error saying "you need to be logged in to access this page", however i changed this contact us page so the user does not have to be logged in and it just requires all the fields to be entered. One thing I diden't add was a system to check if the email has a "@" sign in it, so you can be more confident that the email is real, I don't find this that important because if the user is leaving out a "@" sign then it's likely they are just wanting to send a fake email and they will do it regardless of a check or not. Here's The Code. <?php function mysql_prep($value) { $magic_quotes_active = get_magic_quotes_gpc(); $new_enough_php = function_exists("mysql_real_escape_string"); // i.e PHP >= v4.3.0 if($new_enough_php){ // PHP v4.3.0 or higher if ($magic_quotes_active){ $value = stripslashes($value); } $value = mysql_real_escape_string($value); }else{ //Before PHP v4.3.0 //if magic quotes aren't already on then add slahes manually if(!$magic_quotes_active){ $value = addslashes($value); } // if magic quotes are active then the slashes already exist } return $value; } function redirect_to($location = NULL){ if($location != NULL){ header("Location: {$location}"); exit; } } ?> <?php if (isset($_POST['submit'])){ // The form has been submitted $errors = array(); // Perform validations on the form $required_fields = array('title', 'email', 'message'); foreach($required_fields as $fieldname){ if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){ $errors[] = $fieldname; } } $field_with_lengths = array('title' => 20, 'email' => 50); foreach($field_with_lengths as $fieldname => $maxlength) { if (strlen(trim($_POST[$fieldname])) > $maxlength) { $errors[] = $fieldname; } } // Set the needed variables here $email = $_POST['email']; $title = $_POST['title']; $message = $_POST['message']; if (empty($errors)){ // Their are no errors in the form $headers = 'From: ' . $email . "\r\n" . 'Reply-To: [email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $sentmail=mail("[email protected]","$title","$message", "$headers"); // if your email successfully sent if($sentmail){ echo "Your Email Has been sent"; }else{ echo "Cannot send email"; } }else{ $count = count($errors); if($count == 1){ echo "Their Was {$count} Error In The Form" . "<br />"; echo "<b>"; print_r(implode(", ", $errors)); echo "</b>"; }else{ echo "Their Was {$count} Error's In The Form" . "<br />"; echo "<b>"; print_r(implode(", ", $errors)); echo "</b>"; } } }else{ // The Form Has Not Been Submitted $email = ""; $title = ""; $message = ""; } ?> <html> <head> <title>Contact Us</title> </head> <body> <form action="contact.php" method="post"> Title of message : <input type="text" name="title" maxlength="20" value="" /><br /> Your Email : <input type="text" name="email" maxlength="50" value="" /><br /> Message : <br /><textarea name="message" rows="20" cols="80"></textarea><br /><br /> <input type="submit" name="submit" value="Contact Us" /><br /> </form> </body> </html> Now in order for this to work you will need to have a domain or localhost will also do fine if you have it set up with a email system, some free domains will work as long as they have a email sending capability and php enabled. Also one thing you will want to do is change "[email protected]" in that code to your email so the users of your website are sending the emails to your email Thanks, BcooperZ. Quote Link to comment https://forums.phpfreaks.com/topic/234959-php-send-mail-code/ Share on other sites More sharing options...
JKG Posted April 28, 2011 Share Posted April 28, 2011 using a simple function like: <?php function isEmail($email) { // Email address verification return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email)); } ?> is good practise because its not to stop humans from sending a fake email, rather bots, good to contain a captcha too. Quote Link to comment https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207466 Share on other sites More sharing options...
bcooperz Posted April 28, 2011 Author Share Posted April 28, 2011 UPDATE! Added a email checking system so now it actually checks if the email contains a "@" or not. NEW CODE! <?php function mysql_prep($value) { $magic_quotes_active = get_magic_quotes_gpc(); $new_enough_php = function_exists("mysql_real_escape_string"); // i.e PHP >= v4.3.0 if($new_enough_php){ // PHP v4.3.0 or higher if ($magic_quotes_active){ $value = stripslashes($value); } $value = mysql_real_escape_string($value); }else{ //Before PHP v4.3.0 //if magic quotes aren't already on then add slahes manually if(!$magic_quotes_active){ $value = addslashes($value); } // if magic quotes are active then the slashes already exist } return $value; } function redirect_to($location = NULL){ if($location != NULL){ header("Location: {$location}"); exit; } } ?> <?php if (isset($_POST['submit'])){ // The form has been submitted $errors = array(); // Set the needed variables here $email = $_POST['email']; $title = $_POST['title']; $message = $_POST['message']; // Perform validations on the form $required_fields = array('title', 'email', 'message'); foreach($required_fields as $fieldname){ if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){ $errors[] = $fieldname; } } $field_with_lengths = array('title' => 20, 'email' => 50); foreach($field_with_lengths as $fieldname => $maxlength) { if (strlen(trim($_POST[$fieldname])) > $maxlength) { $errors[] = $fieldname; } } if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { $errors[] = "In-Correct Email Format"; } if (empty($errors)){ // Their are no errors in the form $headers = 'From: ' . $email . "\r\n" . 'Reply-To: [email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $sentmail=mail("[email protected]","$title","$message", "$headers"); // if your email successfully sent if($sentmail){ echo "Your Email Has been sent"; }else{ echo "Cannot send email"; } }else{ $count = count($errors); if($count == 1){ echo "Their Was {$count} Error In The Form" . "<br />"; echo "<b>"; print_r(implode(", ", $errors)); echo "</b>"; }else{ echo "Their Was {$count} Error's In The Form" . "<br />"; echo "<b>"; print_r(implode(", ", $errors)); echo "</b>"; } } }else{ // The Form Has Not Been Submitted $email = ""; $title = ""; $message = ""; } ?> <html> <head> <title>Contact Us</title> </head> <body> <form action="test.php" method="post"> Title of message : <input type="text" name="title" maxlength="20" value="" /><br /> Your Email : <input type="text" name="email" maxlength="50" value="" /><br /> Message : <br /><textarea name="message" rows="20" cols="80"></textarea><br /><br /> <input type="submit" name="submit" value="Contact Us" /><br /> </form> </body> </html> Quote Link to comment https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207469 Share on other sites More sharing options...
cssfreakie Posted April 28, 2011 Share Posted April 28, 2011 is there a specific reason you center aligned the text and did not use code tags? [code] Quote Link to comment https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207471 Share on other sites More sharing options...
bcooperz Posted April 28, 2011 Author Share Posted April 28, 2011 Updated my second post with the tag thanks for that i am new to this forum and diden't know it had that function. Quote Link to comment https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207472 Share on other sites More sharing options...
cssfreakie Posted April 28, 2011 Share Posted April 28, 2011 Updated my second post with the tag thanks for that i am new to this forum and diden't know it had that function. hehe no problem, I thought i let you know, because most people stop reading after they see such a post. anyway cheers for sharing your script. I assume (from the looks of it) it was working already? Quote Link to comment https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207474 Share on other sites More sharing options...
bcooperz Posted April 28, 2011 Author Share Posted April 28, 2011 Yea it's for people having troubles with their send mail scripts, I saw some people having troubles. BTW im looking for a website design buddy if your interested, just to talk to on like MSN or something about sites, i want to be a programmer as my job. Quote Link to comment https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207476 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.