note 98744 deleted from function.preg-match by danbrown

From: Date: Mon, 05 Jul 2010 13:30:24 +0000
Subject: note 98744 deleted from function.preg-match by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-170705@lists.php.net to get a copy of this message
Note Submitter: norrismp at gmail dot com ---- Check for a valid username and email address. Robust reporting to report exactly what is wrong. <?php function is_user($username) { //only numbers and letters in username if(preg_match("[^A-Za-z0-9]",$username)) { die("Bad username [code1]. Your IP address has been logged. Please contact support if you are getting this in error."); } //username looks good return $username; } function is_email( $email, $check_dns = false ) { // Test for the minimum length the email can be if ( strlen( $email ) < 3 ) { die("Bad email [code1]. Your IP address has been logged. Please contact support if you are getting this in error."); } // Test for an @ character after the first position if ( strpos( $email, '@', 1 ) === false ) { die("Bad email [code2]. Your IP address has been logged. Please contact support if you are getting this in error."); } // Split out the local and domain parts list( $local, $domain ) = explode( '@', $email, 2 ); // LOCAL PART // Test for invalid characters if ( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) { die("Bad email [code3]. Your IP address has been logged. Please contact support if you are getting this in error."); } // DOMAIN PART // Test for sequences of periods if ( preg_match( '/\.{2,}/', $domain ) ) { die("Bad email [code4]. Your IP address has been logged. Please contact support if you are getting this in error."); } // Test for leading and trailing periods and whitespace if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) { die("Bad email [code5]. Your IP address has been logged. Please contact support if you are getting this in error."); } // Split the domain into subs $subs = explode( '.', $domain ); // Assume the domain will have at least two subs if ( 2 > count( $subs ) ) { die("Bad email [code6]. Your IP address has been logged. Please contact support if you are getting this in error."); } // Loop through each sub foreach ( $subs as $sub ) { // Test for leading and trailing hyphens and whitespace if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) { die("Bad email [code7]. Your IP address has been logged. Please contact support if you are getting this in error."); } // Test for invalid characters if ( !preg_match('/^[a-z0-9-]+$/i', $sub ) ) { die("Bad email [code8]. Your IP address has been logged. Please contact support if you are getting this in error."); } } // DNS // Check the domain has a valid MX and A resource record if ( $check_dns && function_exists( 'checkdnsrr' ) && !( checkdnsrr( $domain . '.', 'MX' ) || checkdnsrr( $domain . '.', 'A' ) ) ) { die("Bad email [code9]. Your IP address has been logged. Please contact support if you are getting this in error."); } // Congratulations your email made it! return $email; } ?>

« previous php.notes (#170705) next »