In many websites we will see option like ‘forgotten password’, this will help us to recover password of users. If we click on forgotten password option,you’ll be redirected to a form details where you will have to check your username or email. These details are being send in the database to check if the user address really exists. If so, then you’ll receive in your email address an automatic response from the database with the new password details.
View Final DemoDownload
Step 1 – THE HTML
The first step is to make the connection between the database and mysql using the web application given in the file dbc.php .
PHP Code:
<!--?php
define ("DB_HOST", "localhost"); // set database host
define ("DB_USER", "user"); // set database user
define ("DB_PASS","pass"); // set database password
define ("DB_NAME","dbname"); // set database name
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database");
/* Registration Type (Automatic or Manual)
1 ---> Automatic Registration (Users will receive activation code and they will be automatically approved after clicking activation link)
0 -> Manual Approval (Users will not receive activation code and you will need to approve every user manually)
*/
$user_registration = 1; // set 0 or 1
define("COOKIE_TIME_OUT", 10); //specify cookie timeout in days (default is 10 days)
define('SALT_LENGTH', 9); // salt for password
/* Secure against Session Hijacking by checking user agent */
if (isset($_SESSION['HTTP_USER_AGENT']))
{
if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
{
logout();
exit;
}
}
// before we allow sessions, we need to check authentication key - ckey and ctime stored in database
/* If session not set, check for cookies set by Remember me */
if (!isset($_SESSION['id_user']) && !isset($_SESSION['Nom']) )
{
if(isset($_COOKIE['id_user']) && isset($_COOKIE['Password'])){
/* we double check cookie expiry time against stored in database */
$cookie_user_id = filter($_COOKIE['user_id']);
$rs_ctime = mysql_query("select `ckey`,`ctime` from `user` where `id_user` ='$cookie_id_user'") or die(mysql_error());
list($ckey,$ctime) = mysql_fetch_row($rs_ctime);
// coookie expiry
if( (time() - $ctime) > 60*60*24*COOKIE_TIME_OUT) {
logout();
}
/* Security check with untrusted cookies - dont trust value stored in cookie.
/* We also do authentication check of the `ckey` stored in cookie matches that stored in database during login*/
$_SESSION['id_user'] = $_COOKIE['id_user'];
$_SESSION['Nom'] = $_COOKIE['Nom'];
/* query user level from database instead of storing in cookies */
list($user_level) = mysql_fetch_row(mysql_query("select user_level from user where id_user='$_SESSION[id_user]'"));
if (!strstr($password, $char)) {
$password .= $char;
$i++;
}
}
return $password;
}
function logout()
{
global $db;
session_start();
if(isset($_SESSION['id_user']) || isset($_COOKIE['id_user'])) {
mysql_query("update `user`
set `ckey`= '', `ctime`= ''
where `id_user`='$_SESSION[id_user]' OR `id_user` = '$_COOKIE[id_user]'") or die(mysql_error());
}
/************ Delete the sessions****************/
unset($_SESSION['id_user']);
unset($_SESSION['Nom']);
unset($_SESSION['user_level']);
unset($_SESSION['HTTP_USER_AGENT']);
session_unset();
session_destroy();
/******************* ACTIVATION BY FORM**************************/
if ($_POST['doReset']=='Reset')
{
$err = array();
$msg = array();
foreach($_POST as $key =--> $value) {
$data[$key] = filter($value);
}
if(!isEmail($data['email'])) {
$err[] = "ERROR - Please enter a valid email";
}
$user_email = $data['email'];
//check if activ code and user is valid as precaution
$rs_check = mysql_query("select id_user from user where email='$user_email'") or die (mysql_error());
$num = @mysql_num_rows($rs_check);
// Match row found with more than 1 results - the user is authenticated.
if ( $num <= 0 ) {
$err[] = "Error - Sorry no such account exists or registered.";
//header("Location: forgot.php?msg=$msg");
//exit();
$rows = @mysql_fetch_array($rs_check);
Bookmarks