shopshop
Legacy Member
Ik zit met een probleem, offline werkt alles normaal enkel online op one.com werkt de sessie niet. Ik kan dus gewoon op de pagina komen zonder autorisatie.
De verbinding met database is wel correct want de login pagina wekt wel.
De classe
Sessie
Maar het probleem lijkt mij niet in de code te liggen doordat het offline wel werk. De database word op de pagina zelf nog wel eens geladen maar dat lijkt mij ook geen probleem te zijn.
Ik snap niet waar de fout zit.
De verbinding met database is wel correct want de login pagina wekt wel.
De classe
PHP:
<?php
class Login
{
private $_id;
private $_username;
private $_password;
private $_passmd5;
private $_errors;
private $_access;
private $_login;
private $_token;
public function __construct()
{
$this->_errors = array();
$this->_login = isset($_POST['login'])? 1 : 0;
$this->_access = 0;
$this->_token = $_POST['token'];
$this->_id = 0;
$this->_username = ($this->_login)? $this->filter($_POST['username']) : $_SESSION['username'];
$this->_password = ($this->_login)? $this->filter($_POST['password']) : '';
$this->_passmd5 = ($this->_login)? md5($this->_password) : $_SESSION['password'];
}
public function isLoggedIn()
{
($this->_login)? $this->verifyPost() : $this->verifySession();
return $this->_access;
}
public function filter($var)
{
return preg_replace('/[^a-zA-Z0-9]/','',$var);
}
public function verifyPost()
{
try
{
if(!$this->isTokenValid())
throw new Exception('Invalid Form Submission');
if(!$this->isDataValid())
throw new Exception('Invalid Form Data');
if(!$this->verifyDatabase())
throw new Exception('Invalid Username/Password');
$this->_access = 1;
$this->registerSession();
}
catch(Exception $e)
{
$this->_errors[] = $e->getMessage();
}
}
public function verifySession()
{
if($this->sessionExist() && $this->verifyDatabase())
$this->_access = 1;
}
public function verifyDatabase()
{
//Database Connection Data
mysql_connect('§§§§', '§§§§§', '§§§§') or die(mysql_error());
mysql_select_db("§§§§§") or die(mysql_error());
$data = mysql_query("SELECT ID FROM gebruikers WHERE username = '{$this->_username}' AND password = '{$this->_passmd5}'");
if(mysql_num_rows($data))
{
list($this->_id) = @array_values(mysql_fetch_assoc($data));
return true;
}
else
{ return false; }
}
public function isDataValid()
{
return (preg_match('/^[a-zA-Z0-9]{5,12}$/',$this->_username) && preg_match('/^[a-zA-Z0-9]{5,12}$/',$this->_password))? 1 : 0;
}
public function isTokenValid()
{
return (!isset($_SESSION['token']) || $this->_token != $_SESSION['token'])? 0 : 1;
}
public function registerSession()
{
$_SESSION['ID'] = $this->_id;
$_SESSION['username'] = $this->_username;
$_SESSION['password'] = $this->_passmd5;
}
public function sessionExist()
{
return (isset($_SESSION['username']) && isset($_SESSION['password']))? 1 : 0;
}
public function showErrors()
{
echo "<h3>Errors</h3>";
foreach($this->_errors as $key=>$value)
echo $value."<br>";
}
}
?>
Sessie
PHP:
<?php session_start(); include('inc/classes.php'); $login = new Login(); if($login->isLoggedIn()) echo "Members Area"; else header('Location: index.php');?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="robots" content="noindex,nofollow">
<title>PC<title>
<link href="css/stylecss.css" rel="stylesheet" type="text/css" />
</head>
Maar het probleem lijkt mij niet in de code te liggen doordat het offline wel werk. De database word op de pagina zelf nog wel eens geladen maar dat lijkt mij ook geen probleem te zijn.
Ik snap niet waar de fout zit.
Heb je error reporting op staan? Wie weet is de versie van PHP niet compatible , ik doe maar een lukrake gok!