I have this code that was working initially, but does not work after I restarted my computer.
The error I am getting is:
Warning: Illegal offset type in isset or empty in D:\xampp\htdocs\cookieboylive\classes\Session.php on line 4
There's 3 files on my site - Index, Login, Register. Index page checks if users is logged in, but I don't think it has anything to do with the problem.
Here's the current code:
The main register/login.php page
require_once 'core/init.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) { Redirect::to('index.php'); } else { echo '<p>Sorry, login failed.</p>'; } } else { foreach($validation->errors() as $error) { echo $error, '<br>'; } } } } if(Input::exists()) { if(Token::check(Input::get('token'))) { $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()) { $user = new User(); $salt = Hash::salt(32); try { $user->create(array( 'username' => Input::get('username'), 'password' => Hash::make(Input::get('password'), $salt), 'salt' => $salt, 'name' => Input::get('name'), 'joined' => date('Y-m-d H:i:s'), 'group' => 1 )); Session::flash('home', 'Register SUCCESS'); Redirect::to('index.php'); } catch(Exception $e) { die($e->getMessage()); } } else { foreach($validation->errors() as $error) { echo $error, '<br>'; } } } } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="styles/register_login_styles.css"> <link rel="stylesheet" type="text/css" href="styles/animate-custom.css"> </head> <body> <div class="container"> <div id="container_demo" > <a class="hiddenanchor" id="toregister"></a> <a class="hiddenanchor" id="tologin"></a> <div id="wrapper"> <div id="login" class="animate form"> <form action="" method="post"> <div class="field"> <h1>Log in</h1> <p> <label for="username" class="uname" data-icon="u" >Username </label> <input id="username" name="username" required="required" type="text" placeholder="Username" autocomplete="off"> </p> <p> <label for="password" class="youpasswd" data-icon="p">Password </label> <input id="password" name="password" required="required" type="password" placeholder="Password"> </p> <p class="keeplogin"> <input type="checkbox" name="loginkeeping" id="loginkeeping" value="loginkeeping"> <label for="loginkeeping">Keep me logged in</label> </p> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <p class="login button"> <input type="submit" value="Login"> </p> <p class="change_link"> Not a member yet ? <a href="#toregister" class="to_register">Join us</a> </p> </form> </div> </div> <div id="register" class="animate form"> <form action="" method="post"> <h1> Sign up </h1> <p> <label for="username" class="uname" data-icon="u">Username</label> <input id="username" value="<?php echo escape(Input::get('username')); ?>" name="username" required="required" type="text" placeholder="Username" autocomplete="off"> </p> <p> <label for="password" class="youpasswd" data-icon="p">Your password </label> <input id="password" name="password" required="required" type="password" placeholder="Password"> </p> <p> <label for="password_again" class="youpasswd" data-icon="p">Please confirm your password </label> <input id="password_again" name="password_again" required="required" type="password" placeholder="Password again"> </p> <p> <label for="name" class="youmail" data-icon="n" >Name</label> <input id="name" name="name" value="<?php echo escape(Input::get('name')); ?>" required="required" type="text" placeholder="Name" autocomplete="off"> </p> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <p class="signin button"> <input type="submit" value="Sign up"> </p> <p class="change_link"> Already a member ? <a href="#tologin" class="to_register"> Go and log in </a> </p> </form> </div> </div> </div> </div> </body> </html>
Session.php
<?php 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) { return $_SESSION[$name]; } 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); } } }
User.php
<?php class User { private $_db, $_data, $_sessionName, $_isLoggedIn; public function __construct($user = null) { $this->_db = DB::getInstance(); $this->_sessionName = Config::get('session/session_name'); if(!$user) { if(Session::exists($this->_sessionName)) { $user = Session::get($this->_sessionName); if($this->find($user)) { $this->_isLoggedIn = true; } else { // Pr0cess logout } } else { $this->find($user); } } } public function create($fields = array()) { if(!$this->_db->insert('users', $fields)) { throw new Exception('There was a problem creating an 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; } public function data() { return $this->_data; } public function isLoggedIn() { return $this->_isLoggedIn; } }