HEX
Server: Apache/2.4.25 (Debian)
System: Linux server17 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
User: web37 (1062)
PHP: 7.4.30
Disabled: show_source, highlight_file, apache_child_terminate, apache_get_modules, apache_note, apache_setenv, virtual, dl, disk_total_space, posix_getpwnam, posix_getpwuid, posix_mkfifo, posix_mknod, posix_setpgid, posix_setsid, posix_setuid, posix_uname, proc_nice, openlog, syslog, pfsockopen
Upload Files
File: /var/www/web37/htdocs/fickanzeiger/core/Session.php
<?php
/**
 * Arfooo
 * 
 * @package    Arfooo
 * @copyright  Copyright (c) Arfooo Annuaire (fr) and Arfooo Directory (en)
 *             by Guillaume Hocine (c) 2007 - 2010
 *             http://www.arfooo.com/ (fr) and http://www.arfooo.net/ (en)
 * @author     Guillaume Hocine & Adrian Galewski
 * @license    http://creativecommons.org/licenses/by/2.0/fr/ Creative Commons
 */


/**
 * Class to handle PHP Session feature
 */
class Session extends Object
{
    private static $instance = null;

    /**
     * Returns an instance of Session object
     * @return Session
     */
    public static function getInstance()
    {
        if (self::$instance === null) {
            self::$instance = new self();
        }

        return self::$instance;
    }

    /**
     * Generates the standard Session object
     */
    private function __construct()
    {
        session_start();
        if ($this->get("role") == "administrator"
            || $this->loginUser($this->get("email"), $this->get("password"), "email", $this->get("role"))) {
            /* verified */
        } else {
            $request = Request::getInstance();

            if ($request->getCookie("rememberMe")
                && $this->loginUser($request->getCookie("email"), $request->getCookie("password"))) {
            /* verified */
            } else {
                $this->set("role", "guest");
            }
        }
    }

    /**
     * Login user and store user informations in session
     * @param  string $login User login
     * @param  string $pass User password
     * @param  string $mode authorization method email/login
     * @param  string $role webmaster/administrator/admin
     * @return boolean
     */
    function loginUser($login, $password, $mode = "email", $role = "webmaster")
    {
        if (empty($login)) {
            return false;
        }

        $users = new UserModel();

        $c = new Criteria();

        if ($mode == "login") {
            $c->add("login", $login);
        } else {
            $c->add("email", $login);
        }

        $c->add("password", $password);
        $c->add("role", $role);
        $c->add("active", "1");
        $row = $users->find($c);

        if (!empty($row)) {
            foreach ($row as $key => $value) {
                $this->set($key, $value);
            }

            if (empty($row['login'])) {
                $this->set("login", $row['email']);
            }

            return true;
        }

        return false;
    }

    /**
     * Delete session variable
     * @param string $key Name of key which should be deleted
     */
    public function del($key)
    {
        unset($_SESSION[$key]);
    }

    /**
     * Set session variable
     * @param string $key Name of variable
     * @param string $value Value
     */
    public function set($key, $value)
    {
        $_SESSION[$key] = $value;
    }

    /**
     * Get session variable
     * @param string $key Name of variable
     */
    public function get($key)
    {
        return isset($_SESSION[$key]) ? $_SESSION[$key] : false;
    }

    /**
     * Destroy session, unset all variables
     */
    public function destroy()
    {
        $_SESSION = array();

        if (isset($_COOKIE[session_name()])) {
            Response::getInstance()->setCookie(session_name(), '', time() - 42000, '/');
        }

        session_destroy();
    }

    /**
     * Return array with session variables
     */
    public function toArray()
    {
        return $_SESSION;
    }
}