调用PHP对象文件导致页面不再加载

时间:2016-04-17 19:19:33

标签: php mysql sql database mysqli

所以,我一直在为我的项目编写代码,我必须为网站创建一个注册和登录系统,而且我现在很困难。我打电话给以下" 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变量中审查了我的实际数据库信息。

2 个答案:

答案 0 :(得分:2)

private $password

之后你错过了分号

答案 1 :(得分:0)

您丢失了分号(在$password之后),isset()无法在函数上调用,您无法将该类用作数组{{ 1}},你必须把它称为$this['username'] 如果一切正常,你的$this->username方法也会返回true,但如果用户/传递错误则无效。

唯一的真实建议是查看错误日志并逐一解决。