// inputs are form $_POST[] variables login and password
// relevant table columns are id,login,password,and sometimes key_chain
// id is integer, the rest char with password being a hash
// the output success/fail flag is $id is set upon success, unset if failed
//Check Keys Table for this Login
if(isset($staff)) $sql = "SELECT `id`,`password`,`key_chain`"; else $sql = "SELECT `id`,`password`";
$x = mysqli_real_escape_string($my_db_link,strtolower(trim($_POST['login'])));
$sql .= " FROM `keys` WHERE `login`='$x';";
$result = mysqli_query($my_db_link,$sql) or die(mysqli_error($my_db_link));
unset($x);
unset($id);
// is there a matching login in the table?
if (mysqli_num_rows($result)>=1) {
//matching login found
$row = mysqli_fetch_array($result);
$id = $row['id'];
$password = $row['password'];
if(isset($staff)) $key_chain = $row['key_chain']; //text string to determine user's privilege
mysqli_free_result($result);
//if password is null, then it is not set yet, so set it
if( (!isset($password)) OR (strlen(trim($password))<60) ){ //min hash length is 60
// set the password
$x = password_hash(mysqli_real_escape_string($my_db_link,strtolower(trim($_POST['password']))), PASSWORD_DEFAULT);
$sql = "UPDATE `keys` SET `password`='$x' WHERE `id`='$id' LIMIT 1;";
mysqli_query($my_db_link,$sql) or die(mysqli_error($my_db_link));
unset($x);
//if password not null, then test it
} elseif (!password_verify( mysqli_real_escape_string($my_db_link,strtolower(trim($_POST['password']))),$password)) {
// bad login -- wrong password
unset($id);
unset($key_chain);
}//if(isset($id) AND
}//if (mysqli_num_rows($result)>=1) {
unset($password);
unset($row);
unset($sql);
Like this:
Like Loading...