Have an issue with my login script - users register or I can add on my admin panel but when they go to login they are advised their username/email or password is incorrect - I know neither is but there is a salt password hash in place.
<?php
// login_process.php
// LOGIN RESPONSES
//
// 1 Login successful
// 0 ...
// -1 Database error
// -2 Data fields empty
// -3 Username/email address not registered
// -4 Password incorrect
// -5
//
include_once("check_login_status.php");
// If user is already logged in, just update page
if($user_ok == true){
header("location: index.php");
exit();
}
// AJAX CALLS THIS LOGIN CODE TO EXECUTE
if(isset($_POST["e"])){
// CONNECT TO DATABASE
include_once("db_conx.php");
// GATHER THE POSTED DATA INTO LOCAL VARIABLES AND SANITIZE
$e = mysqli_real_escape_string($mysqli, $_POST["e"]);
$p = $_POST["p"];
// GET USER IP ADDRESS
$ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR'));
// FORM DARA ERROR HANDLING
if($e == "" || $p == ""){
echo -2;
exit();
} else {
// END FORM DATA ERROR HANDLING
$sql = "SELECT mem_id, mem_username, mem_pwd, mem_salt, mem_active, mem_level FROM smd_members WHERE (mem_email='$e' OR mem_username='$e') AND mem_active=1 LIMIT 1";
$query = mysqli_query($mysqli, $sql);
if(mysqli_errno($mysqli)){
echo -1;
exit();
}
if(mysqli_num_rows($query) == 0){
echo -3;
exit();
}
$row = mysqli_fetch_row($query);
$db_id = $row[0];
$db_username = $row[1];
$db_pass_str = $row[2];
$db_pass_salt = $row[3];
$db_active = $row[4];
$db_level = $row[5];
$salt_complete = '$2y$14$'.$db_pass_salt;
// encrypt password with salt
$crypt = crypt($p, $salt_complete);
if($db_active == 0){
header("location: ../reactivate.php?u=".$db_id);
}
if($crypt != $db_pass_str){
echo -4;
exit();
} else {
// CREATE THEIR SESSIONS AND COOKIES
$_SESSION['userid'] = $db_id;
$_SESSION['username'] = $db_username;
$_SESSION['password'] = $db_pass_str;
$_SESSION['level'] = $db_level;
setcookie("id", $db_id, strtotime('+30 days'), "/", "", "", TRUE);
setcookie("user", $db_username, strtotime('+30 days'), "/", "", "", TRUE);
setcookie("pass", $db_pass_str, strtotime('+30 days'), "/", "", "", TRUE);
setcookie("level", $db_level, strtotime('+30 days'), "/", "", "", TRUE);
// UPDATE THEIR "IP" AND "LASTLOGIN" FIELDS
$sql = "UPDATE smd_members SET mem_lastip='$ip', mem_lastlogin=now() WHERE mem_username='$db_username' LIMIT 1";
$query = mysqli_query($mysqli, $sql);
echo 1;
exit();
}
}
exit();
}
?>