所以,我一直在为我的项目编写代码,我必须为网站创建一个注册和登录系统,而且我现在很困难。我打电话给以下" UserLogin.php"档案:
class UserLogin
{
private $username;
private $firstName;
private $lastName;
private $userid;
private $emailaddr;
private $error;
private $db;
private $hash;
private $salt;
private $password
public function __construct($user, $pass)
{
$this['username'] = $user;
$this['password'] = $pass;
}
function getError()
{
return $this->error;
}
public function userLogin($username, $password)
{
if (checkUser($username)) {
if (checkPass($password)) {
$_SESSION['memberName'] = $this['username'];
$_SESSION['fName'] = $this['firstName'];
$_SESSION['lName'] = $this['lastName'];
return true;
}
} else {
$error = "Invalid username/password";
}
}
public function checkUser($username)
{
$mysqli = new mysqli('hostip', 'username', 'password', 'dbname', 3306);
$stmt = prepare($mysqli);
bind_param($stmt, "s", $username);
execute($stmt);
bind_result($stmt, $this['user_id'], $this['username'], $this['salt'], $this['hash']);
if (isset(fetch($stmt))) {
return false;
}
return true;
}
public function checkPass($password)
{
return hash_equals($this['hash'], crypt($password, $this['hash']));
//return (hash_hmac("sha256", $password, $this['salt']) === $this['hash']);
}
从另一个文件中,在用户输入用户名和密码然后按回车:
include 'UserLogin.php';
$username = $_GET["username"];
$password = $_GET["pwd"];
$usersession = new UserLogin($username, $password);
echo "created";
$var = $usersession->userLogin($username, $password);
if ($var){
echo "Verified";
}
到目前为止,我还没有找到任何错误,但是在点击登录按钮后我的网站没有完成加载。任何帮助将不胜感激。另请注意,我在mysqli变量中审查了我的实际数据库信息。
答案 0 :(得分:2)
private $password
答案 1 :(得分:0)
您丢失了分号(在$password
之后),isset()
无法在函数上调用,您无法将该类用作数组{{ 1}},你必须把它称为$this['username']
如果一切正常,你的$this->username
方法也会返回true,但如果用户/传递错误则无效。
唯一的真实建议是查看错误日志并逐一解决。