Where could I find a script that validates a user's email?
Moderator: General Moderators
Where could I find a script that validates a user's email?
I'm trying to create a professional script that validates that an email typed in a text field by the user when they are registering, is an actual email address. So, if the email address is missing the @ sign or doesn't meet the typical parameters that an email should have, it will not pass and the user will have to type in a valid email address. This is pretty advanced for me. Any scripts you guys use that you would like to share? Or, where could I find a script that does something like this?
Re: Where could I find a script that validates a user's emai
Just do a google search for "php preg_match email validation." There's bound to be hundreds of scripts like that.
Re: Where could I find a script that validates a user's emai
Hey thanks for the reply. I'm having some troubles with my email validator however. When I hit submit, I keep getting the error "Enter a Valid Email", even if the email address is valid. There is something wrong with my structure but I can't figure it out. Here is the code I'm working with. The area that is having trouble is:
And here is my entire code:
Code: Select all
//////////// Email Validation ////////////
function validEmail($email)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
$isValid = false;
}
else
{
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64)
{
// local part length exceeded
$isValid = false;
}
else if ($domainLen < 1 || $domainLen > 255)
{
// domain part length exceeded
$isValid = false;
}
else if ($local[0] == '.' || $local[$localLen-1] == '.')
{
// local part starts or ends with '.'
$isValid = false;
}
else if (preg_match('/\\.\\./', $local))
{
// local part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
{
// character not valid in domain part
$isValid = false;
}
else if (preg_match('/\\.\\./', $domain))
{
// domain part has two consecutive dots
$isValid = false;
}
else if
(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
str_replace("\\\\","",$local)))
{
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\\\"|[^"])+"$/',
str_replace("\\\\","",$local)))
{
$isValid = false;
}
}
if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
{
// domain not found in DNS
$isValid = false;
}
}
return $isValid;
}
if (validEmail($email)==false){
$proerror = "Enter a Valid Email";
}
else{
//////////// End Email Validation /////////
$update = "UPDATE `users` SET `fname`='$fnamenew', `lname`='$lnamenew', `email`='$emailnew' WHERE `username`='$username'";
mysql_query($update);
$success = "Success!";
}Code: Select all
<?php
session_start();
if (isset($_SESSION['username'])){
include('inc/connect.php');
$username = isset($_SESSION['username']) ? $_SESSION['username'] : '';
$edit = (isset($_POST['edit']));
$passchange = (isset($_POST['passchange']));
if (!empty($username))
{
//if user is logged in
$sql = mysql_query("SELECT * FROM `users` WHERE `username`='$username'");
$row = mysql_fetch_assoc($sql);
$dbfname = $row['fname'];
$dblname = $row['lname'];
$dbemail = $row['email'];
$dbpassword = $row['password'];
$passcapture = $_POST['password'];
$password = md5($passcapture);
$error = "";
$proerror = "";
if ($edit)
{
$fnamenew = mysql_real_escape_string(strtolower(strip_tags($_POST['fname'])));
$lnamenew = mysql_real_escape_string(strtolower(strip_tags($_POST['lname'])));
$emailnew = mysql_real_escape_string(strip_tags($_POST['email']));
//////////// Email Validation ////////////
function validEmail($email)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
$isValid = false;
}
else
{
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64)
{
// local part length exceeded
$isValid = false;
}
else if ($domainLen < 1 || $domainLen > 255)
{
// domain part length exceeded
$isValid = false;
}
else if ($local[0] == '.' || $local[$localLen-1] == '.')
{
// local part starts or ends with '.'
$isValid = false;
}
else if (preg_match('/\\.\\./', $local))
{
// local part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
{
// character not valid in domain part
$isValid = false;
}
else if (preg_match('/\\.\\./', $domain))
{
// domain part has two consecutive dots
$isValid = false;
}
else if
(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
str_replace("\\\\","",$local)))
{
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\\\"|[^"])+"$/',
str_replace("\\\\","",$local)))
{
$isValid = false;
}
}
if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
{
// domain not found in DNS
$isValid = false;
}
}
return $isValid;
}
if (validEmail($email)==false){
$proerror = "Enter a Valid Email";
}
else{
//////////// End Email Validation /////////
$update = "UPDATE `users` SET `fname`='$fnamenew', `lname`='$lnamenew', `email`='$emailnew' WHERE `username`='$username'";
mysql_query($update);
$success = "Success!";
}
$dbfname = $fnamenew;
$dblname = $lnamenew;
$dbemail = $emailnew;
}
// Change Password
if ($passchange)
{
if($password){
if($password==$dbpassword){
$passwordnew = $_POST['passwordnew'];
$passwordconf = $_POST['passwordconf'];
if (isset($passwordnew) && !empty($passwordnew)){
if (isset($passwordconf) && !empty($passwordconf)){
if (strlen($passwordnew)>=6 && strlen($passwordconf)>=6){
if ($passwordnew==$passwordconf){
$passwordnew = md5($passwordnew);
$passupdate = "UPDATE `users` SET `password`='$passwordnew' WHERE `username`='$username'";
mysql_query($passupdate);
$passsuccess = "Success!";
}
else{
$error = "Your new password does not match!";
}
}
else{
$error = "Your new password must contain at least 6 characters!";
}
}
else{
$error = "Please type in your Confirmed Password!";
}
}
else{
$error = "Please type in your New Password!";
}
}
else{
$error = "Invalid Password";
}
}
else{
$error = "Please type in your Password!";
}
}
}
}
else{
header("Location: index.php");
}
?>
<html>
<head>
<title>Profile</title>
<script type="text/javascript" language="javascript">
function inputLimiter(e,allow) {
var AllowableCharacters = '';
if (allow == 'UserNameChar'){AllowableCharacters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';}
if (allow == 'UsernameChar'){AllowableCharacters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';}
var k;
k=document.all?parseInt(e.keyCode): parseInt(e.which);
if (k!=13 && k!=8 && k!=0){
if ((e.ctrlKey==false) && (e.altKey==false)) {
return (AllowableCharacters.indexOf(String.fromCharCode(k))!=-1);
} else {
return true;
}
} else {
return true;
}
}
</script>
<style>
#container{
width: 275px;
margin-left: auto;
margin-right: auto;
}
#profile{
width: 222px;
text-align: right;
margin-left: auto;
margin-right: auto;
}
#changepassword{
width: 268px;
text-align: right;
margin-left: auto;
margin-right: auto;
}
#centerpro{
width: 60px;
margin-left: auto;
margin-right: auto;
}
#centerpas{
width: 120px;
margin-left: auto;
margin-right: auto;
}
#center{
width: 150px;
margin-left: auto;
margin-right: auto;
text-align: center;
}
</style>
</head>
<body>
<div id="container">
<div id="profile">
<h3 align="center">Profile</h3>
<form action="profile.php" method="POST">
Username: <input type="text" value="<?php echo ucfirst($username); ?>" readonly="readonly"><br />
First Name: <input type="text" maxlength="25" id="UserNameChar" onkeypress="return inputLimiter(event,'UserNameChar')" name="fname" value="<?php echo ucfirst($dbfname); ?>"><br />
Last Name: <input type="text" maxlength="25" id="UserNameChar" onkeypress="return inputLimiter(event,'UserNameChar')" name="lname" value="<?php echo ucfirst($dblname); ?>"><br />
Email: <input type="text" maxlength="64" name="email" value="<?php echo ucfirst($dbemail); ?>"><br />
<div id="centerpro"><input type="submit" name="edit" value="Submit"></div>
<div id="center"><?php echo $success, $proerror; ?></div>
</div>
<br />
<br />
<div id="changepassword">
<h3 align="center">Change Password</h3>
Password: <input type="password" maxlength="25" name="password"><br /><br />
New Password: <input type="password" maxlength="25" name="passwordnew"><br />
Confirm Password: <input type="password" maxlength="25" name="passwordconf"><br />
<div id="centerpas"><input type="submit" name="passchange" value="Change Password"></div>
<div id="center"><?php echo $passsuccess, $error; ?></div>
</form>
</div>
</div>
</body>
</html>- AbraCadaver
- DevNet Master
- Posts: 2572
- Joined: Mon Feb 24, 2003 10:12 am
- Location: The Republic of Texas
- Contact:
Re: Where could I find a script that validates a user's emai
I would just do this:
Code: Select all
filter_var($email, FILTER_VALIDATE_EMAIL);mysql_function(): WARNING: This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQLextension should be used. See also MySQL: choosing an API guide and related FAQ for more information.