include工作时找不到类


Class not found when include is working

我有这些文件:

/index.php
/Auth.class.php
/Config.class.php
/logcheck.php
/register.php

我正在尝试将Auth.class.phpConfig.class.php包含在register.phplogcheck.php中,它运行良好,如下所示:

include("Auth.class.php");
include("Config.class.php");

但是,当我试图在register.php中创建其中一个类的对象时,我得到了Fatal Error: Class 'Config' not found in....错误消息。

导入正在工作,但创建的对象无效。CCD_ 7和CCD_。我没有用短标签。如果您需要更多信息,只需询问即可。

编辑:

register.php

<?php 
include("languages/en_GB.php");
include("Config.class.php");
include("Auth.class.php");
$dbh = new PDO("mysql:host=localhost;dbname=phpauth", "root", "");
$config = new Config($dbh);
$auth = new Auth($dbh, $config, $lang);
$register = $auth->register($_POST['email'], $_POST['password'], $_POST['password']);
if($register['error']) {
    // Something went wrong, display error message
    echo '<div class="error">' . $register['message'] . '</div>';
} else {
    // Logged in successfully, set cookie, display success message
/*   setcookie($config->cookie_name, $login['hash'], $login['expire'], $config->cookie_path, $config->cookie_domain, $config->cookie_secure, $config->cookie_http);*/
    echo '<div class="success">' . $login['message'] . '</div>';
}
?>

Config.class.php

<?php
namespace PHPAuth;
/**
 * PHPAuth Config class
 */
class Config
{
    private $dbh;
    private $config;
    private $config_table = 'config';
    /**
     *
     * Config::__construct()
     *
     * @param 'PDO $dbh
     * @param string $config_table
     */
    public function __construct('PDO $dbh, $config_table = 'config')
    {
        $this->dbh = $dbh;
        if (func_num_args() > 1)
            $this->config_table = $config_table;
        $this->config = array();
        $query = $this->dbh->query("SELECT * FROM {$this->config_table}");
        while($row = $query->fetch()) {
            $this->config[$row['setting']] = $row['value'];
        }
        $this->setForgottenDefaults(); // Danger foreseen is half avoided.
    }
    /**
     * Config::__get()
     * 
     * @param mixed $setting
     * @return string
     */
    public function __get($setting)
    {
        return $this->config[$setting];
    }
    /**
     * Config::__set()
     * 
     * @param mixed $setting
     * @param mixed $value
     * @return bool
     */
    public function __set($setting, $value)
    {
        $query = $this->dbh->prepare("UPDATE {$this->config_table} SET value = ? WHERE setting = ?");
        if($query->execute(array($value, $setting))) {
            $this->config[$setting] = $value;
            return true;
        } 
        return false;
    }
    /**
     * Config::override()
     * 
     * @param mixed $setting
     * @param mixed $value
     * @return bool
     */
    public function override($setting, $value){
        $this->config[$setting] = $value;
        return true;
    }
    /**
     * Danger foreseen is half avoided.
     *
     * Set default values.
     * REQUIRED FOR USERS THAT DOES NOT UPDATE THEIR `config` TABLES.
     */
    private function setForgottenDefaults()
    {
        // verify* values.
        if (! isset($this->config['verify_password_min_length']) )
            $this->config['verify_password_min_length'] = 3;
        if (! isset($this->config['verify_password_max_length']) )
            $this->config['verify_password_max_length'] = 150;
        if (! isset($this->config['verify_password_strong_requirements']) )
            $this->config['verify_password_strong_requirements'] = 1;
        if (! isset($this->config['verify_email_min_length']) )
            $this->config['verify_email_min_length'] = 5;
        if (! isset($this->config['verify_email_max_length']) )
            $this->config['verify_email_max_length'] = 100;
        if (! isset($this->config['verify_email_use_banlist']) )
            $this->config['verify_email_use_banlist'] = 1;
        // emailmessage* values
        if (! isset($this->config['emailmessage_suppress_activation']) )
            $this->config['emailmessage_suppress_activation'] = 0;
        if (! isset($this->config['emailmessage_suppress_reset']) )
            $this->config['emailmessage_suppress_reset'] = 0;
    }

}

Auth.class.php

<?php
namespace PHPAuth;
use ZxcvbnPhp'Zxcvbn;
use PHPMailer'PHPMailer'PHPMailer;
/***
* Auth class
* Required PHP 5.4 and above.
*/
class Auth
{
    private $dbh;
    public $config;
    public $lang;
/***
* Initiates database connection
*/
public function __construct('PDO $dbh, $config, $language = "en_GB")
{
    $this->dbh = $dbh;
    $this->config = $config;
    if (version_compare(phpversion(), '5.4.0', '<')) {
        die('PHP 5.4.0 required for PHPAuth engine!');
    }
    if (version_compare(phpversion(), '5.5.0', '<')) {
        require("files/password.php");
    }
    // Load language
    require "languages/{$language}.php";
    $this->lang = $lang;
    date_default_timezone_set($this->config->site_timezone);
}
/***
* Logs a user in
* @param string $email
* @param string $password
* @param int $remember
* @param string $captcha = NULL
* @return array $return
*/
public function login($email, $password, $remember = 0, $captcha = NULL)
{
    $return['error'] = true;
    $block_status = $this->isBlocked();
    if($block_status == "verify")
    {
        if($this->checkCaptcha($captcha) == false)
        {
            $return['message'] = $this->lang["user_verify_failed"];
            return $return;
        }
    }
    if ($block_status == "block") {
        $return['message'] = $this->lang["user_blocked"];
        return $return;
    }
    $validateEmail = $this->validateEmail($email);
    $validatePassword = $this->validatePassword($password);
    if ($validateEmail['error'] == 1) {
        $this->addAttempt();
        $return['message'] = $this->lang["email_password_invalid"];
        return $return;
    } elseif($validatePassword['error'] == 1) {
        $this->addAttempt();
        $return['message'] = $this->lang["email_password_invalid"];
        return $return;
    } elseif($remember != 0 && $remember != 1) {
        $this->addAttempt();
        $return['message'] = $this->lang["remember_me_invalid"];
        return $return;
    }
    $uid = $this->getUID(strtolower($email));
    if(!$uid) {
        $this->addAttempt();
        $return['message'] = $this->lang["email_password_incorrect"];
        return $return;
    }
    $user = $this->getBaseUser($uid);
    if (!password_verify($password, $user['password'])) {
        $this->addAttempt();
        $return['message'] = $this->lang["email_password_incorrect"];
        return $return;
    }
    if ($user['isactive'] != 1) {
        $this->addAttempt();
        $return['message'] = $this->lang["account_inactive"];
        return $return;
    }
    $sessiondata = $this->addSession($user['uid'], $remember);
    if($sessiondata == false) {
        $return['message'] = $this->lang["system_error"] . " #01";
        return $return;
    }
    $return['error'] = false;
    $return['message'] = $this->lang["logged_in"];
    $return['hash'] = $sessiondata['hash'];
    $return['expire'] = $sessiondata['expiretime'];
    return $return;
}
/***
* Creates a new user, adds them to database
* @param string $email
* @param string $password
* @param string $repeatpassword
* @param array  $params
* @param string $captcha = NULL
* @param bool $sendmail = NULL
* @return array $return
*/
public function register($email, $password, $repeatpassword, $params = Array(), $captcha = NULL, $sendmail = NULL)
{
    $return['error'] = true;
    $block_status = $this->isBlocked();
    if($block_status == "verify")
    {
        if($this->checkCaptcha($captcha) == false)
        {
            $return['message'] = $this->lang["user_verify_failed"];
            return $return;
        }
    }
    if ($block_status == "block") {
        $return['message'] = $this->lang["user_blocked"];
        return $return;
    }
    if ($password !== $repeatpassword) {
        $return['message'] = $this->lang["password_nomatch"];
        return $return;
    }
    // Validate email
    $validateEmail = $this->validateEmail($email);
    if ($validateEmail['error'] == 1) {
        $return['message'] = $validateEmail['message'];
        return $return;
    }
    // Validate password
    $validatePassword = $this->validatePassword($password);
    if ($validatePassword['error'] == 1) {
        $return['message'] = $validatePassword['message'];
        return $return;
    }
    $zxcvbn = new Zxcvbn();
    if($zxcvbn->passwordStrength($password)['score'] < intval($this->config->password_min_score)) {
        $return['message'] = $this->lang['password_weak'];
        return $return;
    }
    if ($this->isEmailTaken($email)) {
        $this->addAttempt();
        $return['message'] = $this->lang["email_taken"];
        return $return;
    }
    $addUser = $this->addUser($email, $password, $params, $sendmail);
    if($addUser['error'] != 0) {
        $return['message'] = $addUser['message'];
        return $return;
    }
    $return['error'] = false;
    $return['message'] = ($sendmail == true ? $this->lang["register_success"] : $this->lang['register_success_emailmessage_suppressed'] );
    return $return;
}
/***
* Activates a user's account
* @param string $key
* @return array $return
*/
public function activate($key)
{
    $return['error'] = true;
    $block_status = $this->isBlocked();
    if ($block_status == "block") {
        $return['message'] = $this->lang["user_blocked"];
        return $return;
    }
    if(strlen($key) !== 20) {
        $this->addAttempt();
        $return['message'] = $this->lang["activationkey_invalid"];
        return $return;
    }
    $getRequest = $this->getRequest($key, "activation");
    if($getRequest['error'] == 1) {
        $return['message'] = $getRequest['message'];
        return $return;
    }
    if($this->getBaseUser($getRequest['uid'])['isactive'] == 1) {
        $this->addAttempt();
        $this->deleteRequest($getRequest['id']);
        $return['message'] = $this->lang["system_error"] . " #02";
        return $return;
    }
    $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET isactive = ? WHERE id = ?");
    $query->execute(array(1, $getRequest['uid']));
    $this->deleteRequest($getRequest['id']);
    $return['error'] = false;
    $return['message'] = $this->lang["account_activated"];
    return $return;
}
/***
* Creates a reset key for an email address and sends email
* @param string $email
* @return array $return
*/
public function requestReset($email, $sendmail = NULL)
{
    $return['error'] = true;
    $block_status = $this->isBlocked();
    if ($block_status == "block") {
        $return['message'] = $this->lang["user_blocked"];
        return $return;
    }
    $validateEmail = $this->validateEmail($email);
    if ($validateEmail['error'] == 1) {
        $return['message'] = $this->lang["email_invalid"];
        return $return;
    }
    $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?");
    $query->execute(array($email));
    if ($query->rowCount() == 0) {
        $this->addAttempt();
        $return['message'] = $this->lang["email_incorrect"];
        return $return;
    }
    $addRequest = $this->addRequest($query->fetch('PDO::FETCH_ASSOC)['id'], $email, "reset", $sendmail);
    if ($addRequest['error'] == 1) {
        $this->addAttempt();
        $return['message'] = $addRequest['message'];
        return $return;
    }
    $return['error'] = false;
    $return['message'] = ($sendmail == true ? $this->lang["reset_requested"] : $this->lang['reset_requested_emailmessage_suppressed']);
    return $return;
}
/***
* Logs out the session, identified by hash
* @param string $hash
* @return boolean
*/
public function logout($hash)
{
    if (strlen($hash) != 40) {
        return false;
    }
    return $this->deleteSession($hash);
}
/***
* Hashes provided password with Bcrypt
* @param string $password
* @param string $password
* @return string
*/
public function getHash($password)
{
    return password_hash($password, PASSWORD_BCRYPT, ['cost' => $this->config->bcrypt_cost]);
}
/***
* Gets UID for a given email address and returns an array
* @param string $email
* @return array $uid
*/

public function getUID($email)
{
    $query = $this->dbh->prepare("SELECT id FROM {$this->config->table_users} WHERE email = ?");
    $query->execute(array($email));
    if($query->rowCount() == 0) {
        return false;
    }
    return $query->fetch('PDO::FETCH_ASSOC)['id'];
}
/***
* Creates a session for a specified user id
* @param int $uid
* @param boolean $remember
* @return array $data
*/
private function addSession($uid, $remember)
{
    $ip = $this->getIp();
    $user = $this->getBaseUser($uid);
    if(!$user) {
        return false;
    }
    $data['hash'] = sha1($this->config->site_key . microtime());
    $agent = $_SERVER['HTTP_USER_AGENT'];
    $this->deleteExistingSessions($uid);
    if($remember == true) {
        $data['expire'] = date("Y-m-d H:i:s", strtotime($this->config->cookie_remember));
        $data['expiretime'] = strtotime($data['expire']);
    } else {
        $data['expire'] = date("Y-m-d H:i:s", strtotime($this->config->cookie_forget));
        $data['expiretime'] = 0;
    }
    $data['cookie_crc'] = sha1($data['hash'] . $this->config->site_key);
    $query = $this->dbh->prepare("INSERT INTO {$this->config->table_sessions} (uid, hash, expiredate, ip, agent, cookie_crc) VALUES (?, ?, ?, ?, ?, ?)");
    if(!$query->execute(array($uid, $data['hash'], $data['expire'], $ip, $agent, $data['cookie_crc']))) {
        return false;
    }
    $data['expire'] = strtotime($data['expire']);
    return $data;
}
/***
* Removes all existing sessions for a given UID
* @param int $uid
* @return boolean
*/
private function deleteExistingSessions($uid)
{
    $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE uid = ?");
    $query->execute(array($uid));
    return $query->rowCount() == 1;
}
/***
* Removes a session based on hash
* @param string $hash
* @return boolean
*/
private function deleteSession($hash)
{
    $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE hash = ?");
    $query->execute(array($hash));
    return $query->rowCount() == 1;
}
/**
* Function to check if a session is valid
* @param string $hash
* @return boolean
*/
public function checkSession($hash)
{
    $ip = $this->getIp();
    $block_status = $this->isBlocked();
    if ($block_status == "block") {
        $return['message'] = $this->lang["user_blocked"];
        return false;
    }
    if (strlen($hash) != 40) {
        return false;
    }
    $query = $this->dbh->prepare("SELECT id, uid, expiredate, ip, agent, cookie_crc FROM {$this->config->table_sessions} WHERE hash = ?");
    $query->execute(array($hash));
    if ($query->rowCount() == 0) {
        return false;
    }
    $row = $query->fetch('PDO::FETCH_ASSOC);
    $sid = $row['id'];
    $uid = $row['uid'];
    $expiredate = strtotime($row['expiredate']);
    $currentdate = strtotime(date("Y-m-d H:i:s"));
    $db_ip = $row['ip'];
    $db_agent = $row['agent'];
    $db_cookie = $row['cookie_crc'];
    if ($currentdate > $expiredate) {
        $this->deleteExistingSessions($uid);
        return false;
    }
    if ($ip != $db_ip) {
        return false;
    }
    if ($db_cookie == sha1($hash . $this->config->site_key)) {
        return true;
    }
    return false;
}
/**
* Retrieves the UID associated with a given session hash
* @param string $hash
* @return int $uid
*/
public function getSessionUID($hash)
{
    $query = $this->dbh->prepare("SELECT uid FROM {$this->config->table_sessions} WHERE hash = ?");
    $query->execute(array($hash));
    if ($query->rowCount() == 0) {
        return false;
    }
    return $query->fetch('PDO::FETCH_ASSOC)['uid'];
}
/**
* Checks if an email is already in use
* @param string $email
* @return boolean
*/
public function isEmailTaken($email)
{
    $query = $this->dbh->prepare("SELECT count(*) FROM {$this->config->table_users} WHERE email = ?");
    $query->execute(array($email));
    if ($query->fetchColumn() == 0) {
        return false;
    }
    return true;
}
/**
* Adds a new user to database
* @param string $email      -- email
* @param string $password   -- password
* @param array $params      -- additional params
* @return int $uid
*/
private function addUser($email, $password, $params = array(), &$sendmail)
{
    $return['error'] = true;
    $query = $this->dbh->prepare("INSERT INTO {$this->config->table_users} VALUES ()");
    if(!$query->execute()) {
        $return['message'] = $this->lang["system_error"] . " #03";
        return $return;
    }
    $uid = $this->dbh->lastInsertId();
    $email = htmlentities(strtolower($email));
    if($sendmail) {
        $addRequest = $this->addRequest($uid, $email, "activation", $sendmail);
        if($addRequest['error'] == 1) {
            $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?");
            $query->execute(array($uid));
            $return['message'] = $addRequest['message'];
            return $return;
        }
        $isactive = 0;
    } else {
        $isactive = 1;
    }
    $password = $this->getHash($password);
    if (is_array($params)&& count($params) > 0) {
        $customParamsQueryArray = Array();
        foreach($params as $paramKey => $paramValue) {
            $customParamsQueryArray[] = array('value' => $paramKey . ' = ?');
        }
        $setParams = ', ' . implode(', ', array_map(function ($entry) {
            return $entry['value'];
        }, $customParamsQueryArray));
    } else { $setParams = ''; }
    $query = $this->dbh->prepare("UPDATE {$this->config->table_users} SET email = ?, password = ?, isactive = ? {$setParams} WHERE id = ?");
    $bindParams = array_values(array_merge(array($email, $password, $isactive), $params, array($uid)));
    if(!$query->execute($bindParams)) {
        $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?");
        $query->execute(array($uid));
        $return['message'] = $this->lang["system_error"] . " #04";
        return $return;
    }
    $return['error'] = false;
    return $return;
}
/**
* Gets basic user data for a given UID and returns an array
* @param int $uid
* @return array $data
*/
private function getBaseUser($uid)
{
    $query = $this->dbh->prepare("SELECT email, password, isactive FROM {$this->config->table_users} WHERE id = ?");
    $query->execute(array($uid));
    if ($query->rowCount() == 0) {
        return false;
    }
    $data = $query->fetch('PDO::FETCH_ASSOC);
    if (!$data) {
        return false;
    }
    $data['uid'] = $uid;
    return $data;
}
/**
* Gets public user data for a given UID and returns an array, password is not returned
* @param int $uid
* @return array $data
*/
public function getUser($uid)
{
    $query = $this->dbh->prepare("SELECT * FROM {$this->config->table_users} WHERE id = ?");
    $query->execute(array($uid));
    if ($query->rowCount() == 0) {
        return false;
    }
    $data = $query->fetch('PDO::FETCH_ASSOC);
    if (!$data) {
        return false;
    }
    $data['uid'] = $uid;
    unset($data['password']);
    return $data;
}   
/**
* Allows a user to delete their account
* @param int $uid
* @param string $password
* @param string $captcha = NULL
* @return array $return
*/
public function deleteUser($uid, $password, $captcha = NULL)
{
    $return['error'] = true;
    $block_status = $this->isBlocked();
    if($block_status == "verify")
    {
        if($this->checkCaptcha($captcha) == false)
        {
            $return['message'] = $this->lang["user_verify_failed"];
            return $return;
        }
    }
    if ($block_status == "block") {
        $return['message'] = $this->lang["user_blocked"];
        return $return;
    }
    $validatePassword = $this->validatePassword($password);
    if($validatePassword['error'] == 1) {
        $this->addAttempt();
        $return['message'] = $validatePassword['message'];
        return $return;
    }
    $user = $this->getBaseUser($uid);
    if(!password_verify($password, $user['password'])) {
        $this->addAttempt();
        $return['message'] = $this->lang["password_incorrect"];
        return $return;
    }
    $query = $this->dbh->prepare("DELETE FROM {$this->config->table_users} WHERE id = ?");
    if(!$query->execute(array($uid))) {
        $return['message'] = $this->lang["system_error"] . " #05";
        return $return;
    }
    $query = $this->dbh->prepare("DELETE FROM {$this->config->table_sessions} WHERE uid = ?");
    if(!$query->execute(array($uid))) {
        $return['message'] = $this->lang["system_error"] . " #06";
        return $return;
    }
    $query = $this->dbh->prepare("DELETE FROM {$this->config->table_requests} WHERE uid = ?");
    if(!$query->execute(array($uid))) {
        $return['message'] = $this->lang["system_error"] . " #07";
        return $return;
    }
    $return['error'] = false;
    $return['message'] = $this->lang["account_deleted"];
    return $return;
}
/**
* Creates an activation entry and sends email to user
* @param int $uid
* @param string $email
* @param string $type
* @param boolean $sendmail = NULL
* @return boolean
*/
private function addRequest($uid, $email, $type, &$sendmail)
{
    $return['error'] = true;
    if($type != "activation" && $type != "reset") {
        $return['message'] = $this->lang["system_error"] . " #08";
        return $return;
    }        
    // if not set manually, check config data
    if($sendmail === NULL)
    {
        $sendmail = true;           
        if($type == "reset" && $this->config->emailmessage_suppress_reset === true ) {
            $sendmail = false;
            $return['error'] = false;
            return $return;
        } 
        if ($type == "activation" && $this->config->emailmessage_suppress_activation === true ) {
            $sendmail = false;
            $return['error'] = false;
            return $return;
        }
    }           
    $query = $this->dbh->prepare("SELECT id, expire FROM {$this->config->table_requests} WHERE uid = ? AND type = ?");
    $query->execute(array($uid, $type));
    if($query->rowCount() > 0) {
        $row = $query->fetch('PDO::FETCH_ASSOC);
        $expiredate = strtotime($row['expire']);
        $currentdate = strtotime(date("Y-m-d H:i:s"));
        if ($currentdate < $expiredate) {
            $return['message'] = $this->lang["reset_exists"];
            return $return;
        }
        $this->deleteRequest($row['id']);
    }
    if($type == "activation" && $this->getBaseUser($uid)['isactive'] == 1) {
        $return['message'] = $this->lang["already_activated"];
        return $return;
    }
    $key = $this->getRandomKey(20);
    $expire = date("Y-m-d H:i:s", strtotime($this->config->request_key_expiration));
    $query = $this->dbh->prepare("INSERT INTO {$this->config->table_requests} (uid, rkey, expire, type) VALUES (?, ?, ?, ?)");
    if(!$query->execute(array($uid, $key, $expire, $type))) {
        $return['message'] = $this->lang["system_error"] . " #09";
        return $return;
    }
    $request_id = $this->dbh->lastInsertId();
    if($sendmail === true)
    {
        // Check configuration for SMTP parameters  
    $mail = new PHPMailer;
            if($this->config->smtp) {
                $mail->isSMTP();
                $mail->Host = $this->config->smtp_host;
                $mail->SMTPAuth = $this->config->smtp_auth;
                if(!is_null($this->config->smtp_auth)) {
                        $mail->Username = $this->config->smtp_username;
                        $mail->Password = $this->config->smtp_password;
                    }
                $mail->Port = $this->config->smtp_port;
                if(!is_null($this->config->smtp_security)) {
                    $mail->SMTPSecure = $this->config->smtp_security;
            }
        }
        $mail->From = $this->config->site_email;
        $mail->FromName = $this->config->site_name;
        $mail->addAddress($email);
        $mail->isHTML(true);
        if($type == "activation") {
                $mail->Subject = sprintf($this->lang['email_activation_subject'], $this->config->site_name);
                $mail->Body = sprintf($this->lang['email_activation_body'], $this->config->site_url, $this->config->site_activation_page, $key);
                $mail->AltBody = sprintf($this->lang['email_activation_altbody'], $this->config->site_url, $this->config->site_activation_page, $key);
            }
        else {
            $mail->Subject = sprintf($this->lang['email_reset_subject'], $this->config->site_name);
            $mail->Body = sprintf($this->lang['email_reset_body'], $this->config->site_url, $this->config->site_password_reset_page, $key);
            $mail->AltBody = sprintf($this->lang['email_reset_altbody'], $this->config->site_url, $this->config->site_password_reset_page, $key);
        }
        if(!$mail->send()) {
            $this->deleteRequest($request_id);
            $return['message'] = $this->lang["system_error"] . " #10";
            return $return;
        }
    }
    $return['error'] = false;
    return $return;
}
/**
* Returns request data if key is valid
* @param string $key
* @param string $type
* @return array $return
*/
public function getRequest($key, $type)
{
    $return['error'] = true;
    $query = $this->dbh->prepare("SELECT id, uid, expire FROM {$this->config->table_requests} WHERE rkey = ? AND type = ?");
    $query->execute(array($key, $type));
    if ($query->rowCount() === 0) {
        $this->addAttempt();
        $return['message'] = $this->lang[$type."key_incorrect"];
        return $return;
    }
    $row = $query->fetch();
    $expiredate = strtotime($row['expire']);
    $currentdate = strtotime(date("Y-m-d H:i:s"));
    if ($currentdate > $expiredate) {
        $this->addAttempt();
        $this->deleteRequest($row['id']);
        $return['message'] = $this->lang[$type."key_expired"];
        return $return;
    }
    $return['error'] = false;
    $return['id'] = $row['id'];
    $return['uid'] = $row['uid'];
    return $return;
}
/**
* Deletes request from database
* @param int $id
* @return boolean
*/
private function deleteRequest($id)
{
    $query = $this->dbh->prepare("DELETE FROM {$this->config->table_requests} WHERE id = ?");
    return $query->execute(array($id));
}
/**
* Verifies that a password is valid and respects security requirements
* @param string $password
* @return array $return
*/

文件还在继续,但达到了字符限制,我也不认为主代码本身是必要的。

正如@Jeff在评论中指出的,您在register.php、中存在命名空间问题

您可以执行以下操作之一,

  • 使用use:

    如果您要使用use,您的register.php将看起来像:

    <?php 
    include("languages/en_GB.php");
    include("Config.class.php");
    include("Auth.class.php");
    use 'PHPAuth'{Config, Auth};
    $dbh = new 'PDO("mysql:host=localhost;dbname=phpauth", "root", "");
    $config = new Config($dbh);
    $auth = new Auth($dbh, $config, $lang);
    $register = $auth->register($_POST['email'], $_POST['password'], $_POST['password']);
    if($register['error']) {
        // Something went wrong, display error message
        echo '<div class="error">' . $register['message'] . '</div>';
    } else {
        // Logged in successfully, set cookie, display success message
    /*   setcookie($config->cookie_name, $login['hash'], $login['expire'], $config->cookie_path, $config->cookie_domain, $config->cookie_secure, $config->cookie_http);*/
        echo '<div class="success">' . $login['message'] . '</div>';
    }
    ?>
    

  • 或者在创建对象时显式声明命名空间(即使用FQN):

    那么你的register.php看起来像:

    <?php 
    include("languages/en_GB.php");
    include("Config.class.php");
    include("Auth.class.php");
    $dbh = new PDO("mysql:host=localhost;dbname=phpauth", "root", "");
    $config = new 'PHPAuth'Config($dbh);
    $auth = new 'PHPAuth'Auth($dbh, $config, $lang);
    $register = $auth->register($_POST['email'], $_POST['password'], $_POST['password']);
    if($register['error']) {
        // Something went wrong, display error message
        echo '<div class="error">' . $register['message'] . '</div>';
    } else {
        // Logged in successfully, set cookie, display success message
    /*   setcookie($config->cookie_name, $login['hash'], $login['expire'], $config->cookie_path, $config->cookie_domain, $config->cookie_secure, $config->cookie_http);*/
        echo '<div class="success">' . $login['message'] . '</div>';
    }
    ?>
    

    希望它能帮助你!

    建议阅读:

    http://php.net/manual/en/language.namespaces.basics.php

    http://php.net/manual/en/language.namespaces.rationale.php

    http://php.net/manual/en/language.namespaces.php

    另一件事:我在第一个例子中使用的use部分只与PHP7兼容。如果您使用的是低于版本7的PHP,那么您可以使用以下use声明:

    use 'PHPAuth'Config;
    use 'PHPAuth'Auth;