繁体   English   中英

用户登录错误

[英]User Login Error

(抱歉,这是一个nooby问题-我是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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM