【问题标题】:Calling PHP object file results in the page not loading anymore调用 PHP 对象文件导致页面不再加载
【发布时间】:2016-08-09 10:19:06
【问题描述】:

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

【问题讨论】:

    标签: php mysql sql database mysqli


    【解决方案1】:

    private $password 后面缺少分号

    【讨论】:

      【解决方案2】:

      您缺少分号(在$password 之后),isset() 不能在函数上调用,并且您不能将类用作数组 $this['username'],您必须像 @987654324 一样调用它@.
      如果一切正常,您的 userLogin() 方法也会返回 true,但如果用户/密码错误则不执行任何操作。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-22
        • 1970-01-01
        • 2021-07-14
        • 1970-01-01
        • 1970-01-01
        • 2023-02-10
        • 1970-01-01
        相关资源
        最近更新 更多