包含时找不到的类正在工作

时间:2016-03-27 10:56:27

标签: php class oop

我有这些文件:

/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....错误消息。

导入正在运行,但没有创建对象。 Config.class.phpAuth.class.php都属于PHPAuth。我没有使用短标签。如果您需要更多信息,请询问。

编辑:

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
*/

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

1 个答案:

答案 0 :(得分:2)

正如@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兼容。如果您使用的PHP低于版本7,那么您可以使用此use声明

    use \PHPAuth\Config;
    use \PHPAuth\Auth;