I have made a simple login system. Whenever user login password is hashed with password_hash() algorithm and sent to database. But the login page doesnot match the input password with database hashed password by dehashing.
For example :
Username = john & Password = doe
In above example "doe" is hashed and sent to database and the login page does not login user with the password "doe",user can login with the hashed password directly.
My code is shown below :
signup.php
<?php
date_default_timezone_set('Asia/Kathmandu');
$time = date("h:i:s");
$date = date("Y-d-m");
$con = mysqli_connect("localhost", "root", "", "classic") or DIE("Error!");
if(isset($_POST['submit'])){
$fname=mysqli_real_escape_string($con, $_POST['fname']);
$lname=mysqli_real_escape_string($con,$_POST['lname']);
$uname=mysqli_real_escape_string($con,$_POST['uname']);
$psw=mysqli_real_escape_string($con,$_POST['psw']);
$email=mysqli_real_escape_string($con,$_POST['email']);
$dob=mysqli_real_escape_string($con,$_POST['dob']);
$pswhash = password_hash("$psw", PASSWORD_DEFAULT);
$unique_email = "SELECT * FROM `users` where email='$email'";
$unique_emailresult = mysqli_query($con, $unique_email);
if(mysqli_num_rows($unique_emailresult)>0)
{
echo "Email already exist, try different Email.";
header("refresh:2; url=http:../signup");
}
else{
$unique_user = "SELECT * FROM `users` where username='$uname'";
$unique_userresult = mysqli_query($con, $unique_user);
if(mysqli_num_rows($unique_userresult)>0)
{
echo "Username already exist, try different username.";
header("refresh:2; url=http:../signup");
}
else{
$sql= "INSERT INTO users (firstname, lastname, username, password, email, dob, joindate, jointime) VALUES ('$fname','$lname','$uname','$pswhash','$email', '$dob', '$date', '$time')";
$result=mysqli_query($con, $sql);
if(!$result)
{
die("Error:");
}
echo"New account created successfully, Please Login.";
header("refresh:2; url=http:../login.php");
}
}
}
else{
header("refresh:0; url=http:../login.php");
}
?>
login.php
<?php
session_start();
if(isset($_SESSION['user'])){
header("location:index.php");
}
include_once('Db/dbconnect.php');
#user verification starts
if(isset($_POST['login'])){
$uname = mysqli_real_escape_string($con, $_POST['uname']);
$email = mysqli_real_escape_string($con, $_POST['uname']);
$psw = mysqli_real_escape_string($con, $_POST['psw']);
$sql="SELECT * FROM users WHERE (username='$uname' OR email='$uname') AND password='$psw'";
$result= mysqli_query($con,$sql) or die(mysqli_errno());
$trws= mysqli_num_rows($result);
if($trws==1){
$rws= mysqli_fetch_array($result);
$_SESSION['user']=1;
$_SESSION['username']=$rws['username'];
$_SESSION['password']=$rws['password'];
header("location:index.php?username=$uname&request=login&status=success");
}
else{
echo"Username and password does not matched";
}
}
?>