PHP OOP Login/Register Login Failed

0 Kumi Festus · March 23, 2015
I can't detect where I am wrong but I can't log the user in. I get login Failed all the time. I need help
The User Class Below:
User{
     private $_db,
             $_data,
             $_sessionName;
            
     public function __construct($user = null){
         $this->_db = DB::getInstance();
         $this->_sessionName = Config::get('session/session_name');
     }
     public function create($fields = array()){
         if(!$this->_db->insert('users',$fields)){
            throw new Exception('There was a problem creating your account!');
         }
     }
       public function find($user = null){
        if($user){
            $field = (is_numeric($user))? 'id':'username';
            $data = $this->_db->get('users',array($field,'=',$user));
             if($data->count()){
                 $this->_data = $data->first();
                return true;
             }
         }
            return false;        
       }
     public function login($username = null, $password = null){
         $user = $this->find($username);
          if($user){
            if($this->data()->password === Hash::make($password,$this->data()->salt)){
                 Session::put($this->_sessionName,$this->data()->id);
                 return true;
            }  
          }
         return false;
     }
    
     private function data(){
         return $this->_data;
     }
 }
?>

The Session Class
class Session{
     public static function exists($name){
        return (isset($_SESSION[$name])) ? true:false;
     }
     public static function put($name,$value){
        return $_SESSION[$name] = $value;
     }
     public static function get($name, $default=null){
        return (self::exists($name) ? $_SESSION[$name] : $default);
    }
     public static function delete($name){
        if(self::exists($name)){
            unset($_SESSION[$name]);
        }
     }
     public static function flash($name,$string = ''){
         if(self::exists($name)){
             $session = self::get($name);
             self::delete($name);
             return $session;
         }else{
             self::put($name,$string);
         }
        
     }
 }
?>


The initializers

require_once 'functions/sanitize.php';
 session_start();
 
 $GLOBALS['config']= array(
   'mysql'  => array(
      'host'     => '127.0.0.1',
      'username' => 'root',
      'password' => '',
      'db'       => 'codingin_db'
    ),
   'remember' => array(
     'cookie_name' => 'hash',
     'cookie_expiry' => 604800
   ),
   'session' => array(
    'session_name' => 'user',
    'token_name'   => 'token'
    )
 );
 
 //function to run anytime a class is accessed even if the class folder name is changed
 spl_autoload_register(function($class){
    require_once 'classes/'.$class.'.php';
 });
 
 
 ?>

The Input Class


Thanks for your help. I can register a user successfully

Post a Reply

Replies

Oldest  Newest  Rating
0 Kumi Festus · March 23, 2015
The Input class
class Input{
     public static function exists($type = 'post'){
        switch($type){
            case 'post':
            return (!empty($_POST))? true:false;
            break;
            case 'get':
            return (!empty($_GET))? true:false;
            break;
            default:
            return false;
            break;
        }
     }
     public static function get($item){
         if(isset($_POST[$item])){
             return $_POST[$item];
         }else if(isset($_GET[$item])){
             return $_GET[$item];
         }
         return '';
     }
 }

 The Login

<?php 
  if(Input::exists()){
       if(Token::check(Input::get('token'))){
            $validate = new Validate();
            $validation = $validate->check($_POST,array(
            'username' => array('required' => true),
            'password' => array('required' => true)
             ));
             if($validation->passed()){
                $user = new User();
                $login = $user->login(Input::get('username'),Input::get('password'));
                 if($login){
                     echo "Success";
                 }else{
                     echo 'LogIn Failed';
                 }
             }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" autocomplete="off"><br/>
       </div>
       <div class="field">
        <label for="password">Password:</label>
        <input type="password" name="password" id="password" autocomplete="off"><br/>
       </div>
       <input type="hidden" name="token" value="<?php echo Token::generate();?> ">
       <input type="submit" value="Log In">
      </form>



      
      
  • 1

PHP

107,321 followers
About

Server-side, HTML embedded scripting language used to create dynamic Web pages.

Links
Moderators