- session_start: documentation ( source)
<?php
class Authenticator {
protected $isloggedin;
protected $session;
public function __construct(Session $session) {
$this->session = $session;
// $isl = $session->get('isloggedin');
if ( ! empty($session->get('isloggedin')) && $session->get('isloggedin') == true) {
$this->isloggedin = true;
}
$uid = $session->get('userid');
if ( ! empty($uid) && (int) $uid == $uid ) {
$this->userid = (int) $uid;
}
}
public function authenticate($username, $password) {
if ($this->isloggedin)
return true;
if ( empty($username))
return false;
if ( empty($password))
return false;
// ...
return false;
}
public function logout() {
$this->isloggedin = false;
$this->userid = 0;
$this->session->del('isloggedin');
$this->session->del('userid');
}
public function isloggedin() {
return $this->isloggedin;
}
}
interface Session {
public function set($key, $val=true);
public function del($key, $val=false);
public function get($key);
}
class BasicSession implements Session {
protected $session = array();
private function _construct(array $s) {
if ( ! session_start() ) {
throw new Exception('Could not initiate web session');
}
$this->session = $_SESSION;
}
public function set($key, $val=true) {
$this->session[$key] = $val;
}
public function del($key, $val=false) {
if (isset($this->session[$key])) {
$this->session[$key] = $val;
unset($this->session[$key]);
}
}
public function get($key) {
if (isset($this->session[$key])) {
return $this->session[$key];
}
return false;
}
}
try {
$sess = new BasicSession();
$auth = new Authenticator($sess);
} catch (Exception $e) {
die('System go KA-BOOM! ' . $e->getMessage());
}