2016-12-05 194 views
-1

我开始学习PHP OOP并尝试创建登录系统。得到了以下错误:PHP致命错误:未找到类'Token'

Fatal error: Class 'Token' not found in ..login/register.php on line 61.

请参见下面的列表:

register.php

<?php 
require_once 'core/init.php'; 

if(Input::exists()){ 
    $validate = new Validate(); 
    $validation = $validate->check($_POST, array(
     'username' =>array(
      'required' => true, 
      'min' => 2, 
      'max' => 20, 
      'unique' => 'users' 
      ), 
     'password' =>array(
      'required' => true, 
      'min' => 6 
      ), 
     'password_again' =>array(
      'required' => true, 
      'matches' => 'password' 
      ), 
     'name' =>array(
      'required' => true, 
      'min' => 2, 
      'max' => 50 
      ) 
     )); 
    if($validation->passed()){ 
    echo 'Passed'; 

    }else { 

    foreach($validation->errors() as $error){ 
     echo $error, '<br>'; 

    } 

} 
} 
?> 
<form action="" method="post"> 

<div class="field"> 
<label for="username">Username</label> 
<input type ="text" name="username" id="username" value="<?php echo Input::get('username'); ?>" autocomplete="off"> 

</div> 
<div class="field"> 
<label for="password">Choose a password</label> 
<input type ="password" name="password" id="password"> 
</div> 

<div class="field"> 
<label for="password_again">Enter your password again</label> 
<input type ="password" name="password_again" id="password_again"> 
</div> 

<div class="field"> 
<label for="name">Your Name</label> 
<input type ="text" name="name" value="<?php echo Input::get('name'); ?>" id="name"> 
</div> 
<input type = "hidden" name="token" value ="<?php echo Token::generate(); ?>"> 

<input type = "submit" value ="Register"> 

</form> 

的init.php

<?php 

session_start(); 

$GLOBALS['config'] = array(

'mysql' => array (
    'host' => '127.0.0.1', 
    'username' => 'root', 
    'password' => 'customessay', 
    'db'=>'db' 
    ), 
'remember' => array (
    'coockie_name' => 'hash', 
    'coockie_expiry' => 604800 
    ), 
'session' => array (
    'session_name' => 'user', 
    'token_name' => 'token' 
    ) 
    ); 
spl_autoload_register(function($class){ 
    require_once 'classes/'. $class . '.php'; 
}); 

    require_once 'functions/sanitize.php'; 
    ?> 

Token.php

<? php 
class Token { 

    public static function generate(){ 
     return Session::put(Config::get('session/token_name'), md5(uniqid())); 
    } 

    public static function check($token) { 
     $tokenName = Config::get('session/token_name'); 
     if (Session:exists($tokenName) && $token === Session::get($tokenName)){ 
      Session::delete($tokenName); 
      return true; 
     } 
      return false; 
    } 
} 

请指教。

+0

您是否在任何地方加载该课程?我看不到它被包括在内... –

+0

in init.php spl_autoload_register(function($ class){ require_once'classes /'。$ class。'.php'; }); – user1333393

+0

我明白了,但您正在加载的$ class参数在哪里,设置为“令牌”? –

回答

0

在呼叫类令牌之前,您需要注册自动加载功能。 因此请检查并更改自动加载功能。

spl_autoload_register(function($class){ 
    require_once BASE_PATH . '/classes/'. $class . '.php'; 
}); 

BASE_PATH必须是包含项目字符串路径根的常量。 和目录“classes /”必须在根目录下。

您注册的函数每次调用未加载的类时都会调用。

相关问题