Monday 22 September 2014

Email Verification Using PHP

This tutorial demonstrates about registering users and activating their accounts using email verification system.

Database

Sample database users table contains four columns uid, email, password, activation and status.

PHP Code:
CREATE TABLE IF NOT EXISTS `users` (
`
uidint(11NOT NULL AUTO_INCREMENT,
`
emailvarchar(300NOT NULL UNIQUE,
`
passwordvarchar(300NOT NULL,
`
activationvarchar(300NOT NULL UNIQUE,
`
statusenum('0','1'NOT NULL DEFAULT '0',PRIMARY KEY (`uid`)


HTML Code

Contains simple HTML code.

PHP Code:
<form action="" method="post">
<
label>Email</label>
<
input type="text" name="email" class="input" autocomplete="off"/>
<
label>Password </label>
<
input type="password" name="password" class="input" autocomplete="off"/><br/>
<
input type="submit" class="button" value="Registration" />
<
span class='msg'><?php echo $msg?></span>
</form> 


db.php

Database configuration file, modify username, password, database and base url values. 

PHP Code:
<?php
define
('DB_SERVER''localhost');define('DB_USERNAME''username');define('DB_PASSWORD''password');define('DB_DATABASE''database');$connection = @mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);$base_url='http://www.youwebsite.com/email_activation/';?>


index.php

Contains PHP code, storing user registration values into users table. Here activation code generation using MD5 encryption. 

PHP Code:
<?phpinclude 'db.php';$msg='';
if(!empty(
$_POST['email']) && isset($_POST['email']) &&  !empty($_POST['password']) &&  isset($_POST['password']) )
{
// username and password sent from form$email=mysql_real_escape_string($_POST['email']);$password=mysql_real_escape_string($_POST['password']);// regular expression for email check$regex '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/';

if(
preg_match($regex$email))
{
$password=md5($password); // encrypted password$activation=md5($email.time()); // encrypted email+timestamp$count=mysqli_query($connection,"SELECT uid FROM users WHERE email='$email'");// email checkif(mysqli_num_rows($count) < 1)
{
mysqli_query($connection,"INSERT INTO users(email,password,activation) VALUES('$email','$password','$activation')");// sending emailinclude 'smtp/Send_Mail.php';$to=$email;$subject="Email verification";$body='Hi, <br/> <br/> We need to make sure you are human. Please verify your email and get started using your Website account. <br/> <br/> <a href="'.$base_url.'activation/'.$activation.'">'.$base_url.'activation/'.$activation.'</a>';Send_Mail($to,$subject,$body);$msg"Registration successful, please activate email.";
}
else
{
$msg'The email is already taken, please try new.';
}

}
else
{
$msg 'The email you have entered is invalid, please try again.';
}

}
// HTML Part?>


Send_Mail.php

Sending email function, just modify SMTP host, username and password. 

PHP Code:
<?phpfunction Send_Mail($to,$subject,$body)
{
require 
'class.phpmailer.php';$from       "from@yourwebsite.com";$mail       = new PHPMailer();$mail->IsSMTP(true);            // use SMTP$mail->IsHTML(true);$mail->SMTPAuth   true;                  // enable SMTP authentication$mail->Host       "tls://smtp.yourwebsite.com"// SMTP host$mail->Port       =  465;                    // set the SMTP port$mail->Username   "SMTP_Username";  // SMTP  username$mail->Password   "SMTP_Password";  // SMTP password$mail->SetFrom($from'From Name');$mail->AddReplyTo($from,'From Name');$mail->Subject    $subject;$mail->MsgHTML($body);$address $to;$mail->AddAddress($address$to);$mail->Send();
}
?>


activation.php

Contains PHP code, here based on activations code user status updating from 0 to 1. 

PHP Code:
<?phpinclude 'db.php';$msg='';
if(!empty(
$_GET['code']) && isset($_GET['code']))
{
$code=mysql_real_escape_string($_GET['code']);$c=mysqli_query($connection,"SELECT uid FROM users WHERE activation='$code'");

if(
mysqli_num_rows($c) > 0)
{
$count=mysqli_query($connection,"SELECT uid FROM users WHERE activation='$code' and status='0'");

if(
mysqli_num_rows($count) == 1)
{
mysqli_query($connection,"UPDATE users SET status='1' WHERE activation='$code'");$msg="Your account is activated";
}
else
{
$msg ="Your account is already active, no need to activate again";
}

}
else
{
$msg ="Wrong activation code.";
}

}
?>//HTML Part
<?php echo $msg?>


.htaccess

URL redirection script it turns
http://website.com/activation.php?code=ACTIVATION_CODE
to
http://website.com/activation/ACTIVATION_CODE

PHP Code:
RewriteEngine On

RewriteRule 
^activation/([a-zA-Z0-9_-]+)$ activation.php?code=$1
RewriteRule 
^activation/([a-zA-Z0-9_-]+)/$ activation.php?code=$

CSS code

PHP Code:
body{font-family"Helvetica",Arial,sans-serif;font-weight500;color:#333;}label{width:100px;display:block;font-weight:bold;color:#666666;}#main{margin:0 auto;width:800px;
}
.
input{padding:10px;font-size:14px;border:1px solid #999999;width:200px;margin-bottom:10px;
}
.
button {padding:10px;background-color#5fcf80 !important;border-color#3ac162 !important;}
.
msg{font-size:11px;color:#666;padding:10px;




follow me on twitter write in your message
Follow softwresandbook
and send to 40404 and receive my updates free on your mobile
If Any Problem Then Comments, also like my Fb Page





0 comments:

Post a Comment