2016-04-17 5 views
2

私はウェブサイトのサインアップとログインシステムを作成しなければならないプロジェクトのコードを書いています。ユーザーは自分のユーザー名とパスワードを入力した後、エンターキーを押した後、別のファイルから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']); 
    } 

:私は、以下の「UserLogin.php」ファイルを呼び出す

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

あなたは、あなたがセミコロン($password後)、isset()が関数で呼び出されることができない、あなたが配列$this['username']としてクラスを使用することはできませんが欠落しているprivate $password

0

後にセミコロンが欠落しています$this->usernameのように呼び出す必要があります。
userLogin()メソッドは、すべてokでもtrueを返しますが、ユーザー/パスが間違っている場合は何も行いません。

のみ本当のアドバイスは、エラーログを見て、それらを一つ一つ解決することです。