我遇到登录功能问题。由于某种原因,crypt功能无法正常工作。当我尝试登录时,它一直告诉我我的用户名和密码是错误的。我使用的是PHP 5.4。
<?php
class USER
{
private $database;
function __construct($DB_connection)
{
$this->database = $DB_connection;
}
public function register($first_name,$last_name,$username,$email,$password)
{
try
{
$hash_format ="$2y$10$";
$salt = "Salt22Characters0rMore";
$format_and_salt = $hash_format . $salt;
$created_password = crypt($password);
$res = $this->database->prepare("INSERT INTO tb_users(username,email,password)
VALUES(:username, :email, :password)");
$res->bindparam(":username", $username);
$res->bindparam(":email", $email);
$res->bindparam(":password", $created_password);
$res->execute();
return $res;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function login($username,$email,$password, $created_password)
{
try
{
$res = $this->database->prepare("SELECT * FROM tb_users WHERE username=:username OR email=:email LIMIT 1");
$res->execute(array(':username'=>$username, ':email'=>$email));
$userRow=$res->fetch(PDO::FETCH_ASSOC);
if($res->rowCount() > 0)
{
if
(crypt($password, $userRow['password']) == $created_password)
{
$_SESSION['user_session'] = $userRow['user_id'];
return true;
}
else
{
return false;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function is_loggedin()
{
if(isset($_SESSION['user_session']))
{
return true;
}
}
public function redirect($url)
{
header("Location: $url");
}
public function logout()
{
session_destroy();
unset($_SESSION['user_session']);
return true;
}
}
?>
答案 0 :(得分:0)
您需要更改使用课程的方式。试试这个:
<?php
class USER
{
private $database;
function __construct($DB_connection)
{
$this->database = $DB_connection;
}
public function register($username,$email,$password)
{
try
{
$created_password = $this->saltPassword($password);
$res = $this->database->prepare("INSERT INTO tb_users(username,email,password)
VALUES(:username, :email, :password)");
$res->bindparam(":username", $username);
$res->bindparam(":email", $email);
$res->bindparam(":password", $created_password);
$res->execute();
return $res;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function login($username,$email,$password)
{
try
{
$res = $this->database->prepare("SELECT * FROM tb_users WHERE username=:username OR email=:email LIMIT 1");
$res->execute(array(':username'=>$username, ':email'=>$email));
$userRow=$res->fetch(PDO::FETCH_ASSOC);
if($res->rowCount() > 0)
{
if
($this->saltPassword($password) === $userRow['password'])
{
$_SESSION['user_session'] = $userRow['user_id'];
return true;
}
else
{
return false;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function is_loggedin()
{
if(isset($_SESSION['user_session']))
{
return true;
}
}
public function redirect($url)
{
header("Location: $url");
}
public function logout()
{
session_destroy();
unset($_SESSION['user_session']);
return true;
}
private function saltPassword($password)
{
$hash_format ="$2y$10$";
$salt = "Salt22Characters0rMore";
$format_and_salt = $hash_format . $salt;
return crypt($password, $format_and_salt);
}
}
?>