用户登录错误


User Login Error

(很抱歉,如果这是一个小问题-我是PhP的新手)

因此,我已经很好地设置了注册页面,并将其添加到MySQL数据库中,然而,当我使用正确的详细信息登录时,我会收到错误:

PHP致命错误:调用中未定义的方法User::authenticate()

这是我的ClassUser代码

`

     function __construct() {
         if(session_id() == "") {
             session_start();
         }
    if (isset($_SESSION['isLoggedIn']) && $_SESSION['isLoggedIn'] == true) {
        $this->_initUser();
    }
}//end__construct
public function autheniticate($user,$pass) {
    $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);
    if ($mysqli->connect_errno) {
        error_log("Cannot connect to MySQL: " . $mysqli->connect_error);
        return false;
    }
    $safeUser = $mysqli->real_escape_string($user);
    $incomingPassword = $mysqli->real_escape_string($pass);
    $query = "SELECT * from Customer WHERE email = '{$safeUser}'";
    if (!$result = $mysqli->query($query)) {
        error_log("Cannot retrieve account for {$user}");
        return false;
    }
    //Will be obly one row, so no while() loop needed
    $row = $result->fetch_assoc();
    $dbPassword = $row['password'];
    if (crypt($incomingPassword, $dbPassword) != $dbPassword ) {
        error_log("Passwords for {user} don't match");
        return false;
    }
    $this->id = $row['id'];
    $this->username = $row['username'];
    $this->isLoggedIn = true;
    $this->_setSesstion();
    return true;
}//end function authenticate
private function _setSession() {
    if(session_id() == '') {
        session_start();
    }
    $_SESSION['id'] = $this->id;
    $_SESSION['username'] = $this->username;
    $_SESSION['isLoggedIn'] = $this->isLoggedIn;
}//end function setSession
private function _initUser() {
    if(session_id() == '') {
        session_start();
    }
    $this->id = $_SESSION['id'];
    $this->username = $_SESSION['username'];
    $this->isLoggedIn = $_SESSION['isLoggedIn'];
}//end function initUser
 }//end classUser
 ?>`

这是我的登录过程代码;

`

 require_once('functions.inc');
 //prevent access if they haven't submitted the form
 if (!isset($_POST['submit'])) {
     die(header("Location: login.php"));
 }
 $_SESSION['formAttempt'] = true;
 if(isset($_SESSION['error'])) {
     unset($_SESSION['error']);
 }
 $_SESSION['error'] = array();
 $required = array("username","password");
 //Check required fields
 foreach ($required as $requiredField) {
     if (!isset($_POST[$requiredField]) || $_POST[$requiredField] == "") {
         $_SESSION['error'][] = $requiredField . " is required.";
     }
 }
 if (count($_SESSION['error']) > 0) {
     die(header("Location: login.php"));
 } else {
     $user = new User;
     if($user->authenticate($_POST['email'],$_POST['password'])) {
         unset($_SESSION['formAttempt']);
         die(header("Location: authenticated.php"));
     } else {
         $_SESSION['error'][] = "There was a problem with your username and password.";
         die(header("Location: login.php"));
     }
 }
 ?>
     `

`

//Prevent access if they haven't submitted the form
if (!isset($_POST['submit'])) {
    die(header("Location: register.php"));
}
$_SESSION['formAttempt'] = true;
if (isset($_SESSION['error'])) {
    unset($_SESSION['error']);
}
$_SESSION['error'] = array();
$required = array("username", "password1", "password2");
//Check Required Fields
foreach ($required as $requiredField) {
    if(!isset($_POST[$requiredField]) || $_POST [$requiredField] == "") {
        $_SESSION['error'][] = $requiredField . "is required.";
    }
}
if(!preg_match('/^['w.]+$/',$_POST['username'])) {
    $_SESSION['error'][] = "Username must only contain numbers and letters.";
}
if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {
    $_SESSION['error'][] = "Invalid email address";
}
if($_POST['password1'] != $_POST['password2']) {
    $_SESSION['error'][] = "Passwords do not match";
}
//Final disposition
if (count($_SESSION['error']) > 0) {
die(header("Location: register.php"));
} else {
    if(registerUser($_POST)) {
        unset($_SESSION['formAttempt']);
        die(header("Location: register-success.php"));
    } else {
        error_log("Problem registering user: {$_POST['email']}");
        $_SESSION['error'][] = "Problem registering account";
        die(header("Location: register.php"));
    }
}
function registerUser ($userData) {
    $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);
    if($mysqli->connect_errno) {
        error_log("Cannot connect to mySQL: " . $mysqli->connect_error);
        return false;
    }
    $email = $mysqli->real_escape_string($_POST['email']);
    //Check for an existing user
    $findUser = "SELECT id from Customer where email = '{$email}'"; 
    $findResult = $mysqli->query($findUser);
    $findRow = $findResult->fetch_assoc();
    if(isset($findRow['id']) && $findRow['id'] != "") {
        $_SESSION['error'][] = "A user with that email address already exists";
        return false;
    }
    $username = $mysqli->real_escape_string($_POST['username']);
    $cryptedPassword = crypt($_POST['password1']);
    $password = $mysqli->real_escape_string($cryptedPassword);

    $query = "INSERT INTO Customer (email,create_date,password,username) " . 
    "VALUES('{$email}',NOW(), '{$password}', '{$username}')"; 
    if($mysqli->query($query)) {
        $id = $mysqli->insert_id;
        error_log("Inserted ($email) as id ($id)");
        return true;
    } else {
        error_log("Problem inserting {$query}");
        return false;
    }
}
    ?>`

任何帮助都将不胜感激!感谢

您定义的函数名称是:

// You are misspelling "authenticate"
autheniticate($user,$pass)

但你打的是:

authenticate()