Jump to content

Adding Email verification help


blesseld

Recommended Posts

Hey,

 

Ok , so i have my form working, and it checks to make sure the password and email fields match,  and I just want to add an email verification function.

 

I added this to my functions.php file

<?php
function is_valid_email($email) {
  $result = TRUE;
  if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) {
    $result = FALSE;
  }
  return $result;
}
?>

 

First I edited it to be $var instead of $email  simply because I have a $reemail variable as well for the retype email form field. So now it's...

 

<?php
function is_valid_email($var) {
  $result = TRUE;
  if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $var)) {
    $result = FALSE;
  }
  return $result;
}
?>

 

 

And this is the main chunk of my signup.php  *see commented line

 

<?php
if (isset($_SESSION['user']))
    destroySession();
if (isset($_POST['user'])) {
    $user = sanitizeString($_POST['user']);
    $pass = sanitizeString($_POST['pass']);
    $repass = sanitizeString($_POST['repass']);
    $fname = sanitizeString($_POST['fname']);
    $lname = sanitizeString($_POST['lname']);
    $email = sanitizeString($_POST['email']); //this is what I originally had
    $reemail = sanitizeString($_POST['reemail']);//this is what I originally had
    $email =  is_valid_email($_POST['email']); //this is what I tried
    $reemail =  is_valid_email($_POST['reemail']);//tried removing the sanitize strings for email as well
    if ($user == "" || $pass == "" || $email == "") {
        $error = "<div id=\"warning-box\"><p class=\"main-text\">Not all fields were entered.  Please ensure that you have entered:<br />- User Name<br />- Password<br />- Email<br /><br /></p></div><br />";
    } elseif ($repass != $pass) {
        $error1 = "<div id=\"warning-box\"><p class=\"main-text\">Please ensure that you have entered:<br />- User Name<br />- Password<br />- Email<br /><br /><span style=\"color:#ff0000;\">Error</span>: The passwords entered do not match.<br /><br /></p></div><br />";
    } elseif ($reemail != $email) {
        $error2 = "<div id=\"warning-box\"><p class=\"main-text\">Please ensure that you have entered:<br />- User Name<br />- Password<br />- Email<br /><br /><span style=\"color:#ff0000;\">Error</span>: The email addresses entered do not match.<br /><br /></p></div><br />";
    } else {
        $query = "SELECT * FROM tbnlmembers WHERE user='$user'";
        if (mysql_num_rows(queryMysql($query))) {
            $error = "That username already exists<br /><br />";
        } else {
            $query = "INSERT INTO tbnlmembers VALUES(NULL, '$user', MD5('$pass'), '$fname', '$lname', '$email')";
            queryMysql($query);
        }
        header('Location: http://mysite.com/users/tbnl-login.php');
        die("");
    }
}
echo <<< _END
<div id="user-sign-up-form">
	<form method='post' action='tbnl-signup.php'>
	$error
	$error1
	$error2
		<ul class="single">
			<li><label>First Name</label><input type='text' maxlength='16' name='fname' value='$fname' /></li>
			<li><label>Last Name</label><input type='text' maxlength='16' name='lname' value='$lname' /></li>
			<li><label>Desired User Name</label><input type='text' maxlength='16' name='user' value='$user' onBlur='checkUser(this)'/><br /><label> </label><span id='info'></span></li>
			<li><label>Password</label><input type='password' maxlength='16' name='pass' value='$pass' /></li>
			<li><label>Re-Enter Password</label><input type='password' maxlength='16' name='repass' value='$repass' /></li>
			<li><label>Email</label><input type='text' maxlength='32' name='email' value='$email' /></li>
			<li><label>Re-Enter Email</label><input type='text' maxlength='32' name='reemail' value='$reemail' /></li>
			<li><input type='submit' value='Signup' /></li>
		</ul>
	</form>
</div>
_END;
include ("../inc/page-bot.php");
?>

 

With the code in place, I was able to get it to not submit if i don't include @ in the email,  but the email value always ended up being "1"  no matter what email I type in.

 

Any thought,

greatly appreciated

thanks in advance.

Link to comment
https://forums.phpfreaks.com/topic/172732-adding-email-verification-help/
Share on other sites

That worked,

 

Also changed to

 

preg_match()

 

came back

 

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /home/tbaynigh/public_html/users/inc/tbnl-functions.php on line 55

 

added ^ befor the end "    ^"  is that why eregi() is depreciated?

 

 

Also woulda never guessed

 

$email =  is_valid_email($_POST['email']) ? $_POST['email'] : null;

 

what does the end

 

? $_POST['email'] : null;    do?  this is for my sake of understanding.  Is it to repost the 'email' variable?

 

 

 

what does the end

 

? $_POST['email'] : null;    do?  this is for my sake of understanding.  Is it to repost the 'email' variable?

 

Well you did:

 

$email =  is_valid_email($_POST['email']);

 

Which stores the result of your function into $email thus 1 (true) or 0 (false). ? and : are called ternary operator's and their operation is the same as if you wrote an if and an else like:

 

if (is_valid_email($_POST['email'])) {
    $email = $_POST['email'];
} else {
    $email = null;
}

 

Where I would write (and is the same as the above if/else statement):

 

$email = null;
if (is_valid_email($_POST['email'])) {
    $email = $_POST['email'];
}

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.