Php Illegal Offset Type in Isset or Empty

Php Illegal Offset Type in Isset or Empty

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);
        }
    }
}
David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.