Revision: 46968
Updated Code
at May 28, 2011 02:51 by olemedia
Updated Code
$mailFrom = "ValidMailbox@validdomain"; $mailTo = "ValidToAddress"; $mailSubject = "Useful Subject: Here's my subject"; $mailSignature = "\n\n-- \n"; $mailSignature .= "Your friendly Neighborhood web application.\n"; $mailSignature .= "For help and other information, see http://yourwebapp/help\n"; $mailBody = "blahblahblah\n"; $mailBody .= $mailSignature; $mailBody = wordwrap($mailBody, 70); $mailHeader = "From: $mailFrom "; $mailHeader .= "Reply-To: $mailFrom "; $mailHeader .= "X-Mailer: ".MYSITE." "; $mailHeader .= "X-Sender-IP: {$_SERVER['REMOTE_ADDR']} "; $mailHeader .= "Bcc: ".MONITORADDRESS." "; // Test with this additional headers: $mailHeader .= 'MIME-Version: 1.0' . " " $mailHeader .= 'Content-Type: text/html; charset="iso-8859-1"'." "; $mailHeader .= "Content-Transfer-Encoding: 8bit\n"; $mailParams = "-f$mailFrom"; $mailResult = mail($mailTo,$mailSubject,$mailBody,$mailHeader,$mailParams); //A Bonus Snippet $mysite = whatsMySite(); define("MYSITE",$mysite); function whatsMySite() { // protocol if(isset($_SERVER['HTTPS']) and ("on" == $_SERVER['HTTPS'])) { $mysite = "https://"; } else { $mysite = "http://"; } // host $mysite .= $_SERVER['HTTP_HOST']; // path $path = dirname($_SERVER['SCRIPT_NAME']); if("/" != $path) { $mysite .= $path; } return($mysite); } // Filter Methods // Filter After Submit // clean the data prior to actually processing it. A function like the one below can be use for this purpose. // will replace the newlines and carriage returns // Watch out for deprecated method preg_replace function heal($str) { $injections = array('/(\n+)/i', '/(\r+)/i', '/(\t+)/i', '/(%0A+)/i', '/(%0D+)/i', '/(%08+)/i', '/(%09+)/i', '/(BCC:+)/i', '/(CC:+)/i', '/(TO:+)/i' ); $str= preg_replace($injections,'',$str); return $str; } function safe( $name ) { return( str_ireplace(array( "\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:" ), "", $name ) ); } // Validation function which returns true if it finds newlines or carriage returns in the passed string function isInjected($str) { $injections = array('(\n+)', '(\r+)', '(\t+)', '(%0A+)', '(%0D+)', '(%08+)', '(%09+)' ); $inject = join('|', $injections); $inject = "/$inject/i"; if(preg_match($inject,$str)) { return true; } else { return false; } } Another method for filtering after the submit might look like the following. Be sure to change $_POST to $_GET if you are using that method. foreach( $_POST as $value ){ if( stripos($value,'Content-Type:') !== FALSE ){ mail('[email protected]','Spammer Bot Attempt',$_SERVER['REMOTE_ADDR']); exit("{$_SERVER['REMOTE_ADDR']} Has been Recorded"); } }
Revision: 46967
Updated Code
at May 28, 2011 02:36 by olemedia
Updated Code
$mailFrom = "ValidMailbox@validdomain"; $mailTo = "ValidToAddress"; $mailSubject = "Useful Subject: Here's my subject"; $mailSignature = "\n\n-- \n"; $mailSignature .= "Your friendly Neighborhood web application.\n"; $mailSignature .= "For help and other information, see http://yourwebapp/help\n"; $mailBody ="blahblahblah\n"; $mailBody .= $mailSignature; $mailHeader = "From: $mailFrom "; $mailHeader .= "Reply-To: $mailFrom "; $mailHeader .= "X-Mailer: ".MYSITE." "; $mailHeader .= "X-Sender-IP: {$_SERVER['REMOTE_ADDR']} "; $mailHeader .= "Bcc: ".MONITORADDRESS." "; $mailParams = "-f$mailFrom"; $mailResult = mail($mailTo,$mailSubject,$mailBody,$mailHeader,$mailParams); //A Bonus Snippet $mysite = whatsMySite(); define("MYSITE",$mysite); function whatsMySite() { // protocol if(isset($_SERVER['HTTPS']) and ("on" == $_SERVER['HTTPS'])) { $mysite = "https://"; } else { $mysite = "http://"; } // host $mysite .= $_SERVER['HTTP_HOST']; // path $path = dirname($_SERVER['SCRIPT_NAME']); if("/" != $path) { $mysite .= $path; } return($mysite); } // Filter Methods // Filter After Submit // clean the data prior to actually processing it. A function like the one below can be use for this purpose. // will replace the newlines and carriage returns // Watch out for deprecated method preg_replace function heal($str) { $injections = array('/(\n+)/i', '/(\r+)/i', '/(\t+)/i', '/(%0A+)/i', '/(%0D+)/i', '/(%08+)/i', '/(%09+)/i', '/(BCC:+)/i', '/(CC:+)/i', '/(TO:+)/i' ); $str= preg_replace($injections,'',$str); return $str; } function safe( $name ) { return( str_ireplace(array( "\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:" ), "", $name ) ); } // Validation function which returns true if it finds newlines or carriage returns in the passed string function isInjected($str) { $injections = array('(\n+)', '(\r+)', '(\t+)', '(%0A+)', '(%0D+)', '(%08+)', '(%09+)' ); $inject = join('|', $injections); $inject = "/$inject/i"; if(preg_match($inject,$str)) { return true; } else { return false; } } Another method for filtering after the submit might look like the following. Be sure to change $_POST to $_GET if you are using that method. foreach( $_POST as $value ){ if( stripos($value,'Content-Type:') !== FALSE ){ mail('[email protected]','Spammer Bot Attempt',$_SERVER['REMOTE_ADDR']); exit("{$_SERVER['REMOTE_ADDR']} Has been Recorded"); } }
Revision: 46966
Updated Code
at May 28, 2011 02:24 by olemedia
Updated Code
$mailFrom = "ValidMailbox@validdomain"; $mailTo = "ValidToAddress"; $mailSubject = "Useful Subject: Here's my subject"; $mailSignature = "\n\n-- \n"; $mailSignature .= "Your friendly Neighborhood web application.\n"; $mailSignature .= "For help and other information, see http://yourwebapp/help\n"; $mailBody ="blahblahblah\n"; $mailBody .= $mailSignature; $mailHeader = "From: $mailFrom "; $mailHeader .= "Reply-To: $mailFrom "; $mailHeader .= "X-Mailer: ".MYSITE." "; $mailHeader .= "X-Sender-IP: {$_SERVER['REMOTE_ADDR']} "; $mailHeader .= "Bcc: ".MONITORADDRESS." "; $mailParams = "-f$mailFrom"; $mailResult = mail($mailTo,$mailSubject,$mailBody,$mailHeader,$mailParams); //A Bonus Snippet $mysite = whatsMySite(); define("MYSITE",$mysite); function whatsMySite() { // protocol if(isset($_SERVER['HTTPS']) and ("on" == $_SERVER['HTTPS'])) { $mysite = "https://"; } else { $mysite = "http://"; } // host $mysite .= $_SERVER['HTTP_HOST']; // path $path = dirname($_SERVER['SCRIPT_NAME']); if("/" != $path) { $mysite .= $path; } return($mysite); } // Filter Methods Filter After Submit clean the data prior to actually processing it. A function like the one below can be used for this purpose. function safe( $name ) { return( str_ireplace(array( "\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:" ), "", $name ) ); } Another method for filtering after the submit might look like the following. Be sure to change $_POST to $_GET if you are using that method. foreach( $_POST as $value ){ if( stripos($value,'Content-Type:') !== FALSE ){ mail('[email protected]','Spammer Bot Attempt',$_SERVER['REMOTE_ADDR']); exit("{$_SERVER['REMOTE_ADDR']} Has been Recorded"); } }
Revision: 46965
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 28, 2011 02:13 by olemedia
Initial Code
$mailFrom = "ValidMailbox@validdomain"; $mailTo = "ValidToAddress"; $mailSubject = "Useful Subject: Here's my subject"; $mailSignature = "\n\n-- \n"; $mailSignature .= "Your friendly Neighborhood web application.\n"; $mailSignature .= "For help and other information, see http://yourwebapp/help\n"; $mailBody ="blahblahblah\n"; $mailBody .= $mailSignature; $mailHeader = "From: $mailFrom "; $mailHeader .= "Reply-To: $mailFrom "; $mailHeader .= "X-Mailer: ".MYSITE." "; $mailHeader .= "X-Sender-IP: {$_SERVER['REMOTE_ADDR']} "; $mailHeader .= "Bcc: ".MONITORADDRESS." "; $mailParams = "-f$mailFrom"; $mailResult = mail($mailTo,$mailSubject,$mailBody,$mailHeader,$mailParams); //A Bonus Snippet $mysite = whatsMySite(); define("MYSITE",$mysite); function whatsMySite() { // protocol if(isset($_SERVER['HTTPS']) and ("on" == $_SERVER['HTTPS'])) { $mysite = "https://"; } else { $mysite = "http://"; } // host $mysite .= $_SERVER['HTTP_HOST']; // path $path = dirname($_SERVER['SCRIPT_NAME']); if("/" != $path) { $mysite .= $path; } return($mysite); }
Initial URL
http://collaborate.extension.org/wiki/Best_Practices_Using_the_PHP_mail_Function
Initial Description
Initial Title
using the PHP mail function
Initial Tags
mail, function
Initial Language
PHP