Onderstaand script heb ik van internet vandaan en heb geprobeerd er wat aan toe te voegen maar krijg het niet voor elkaar.
Waar gaat het om?
Het is een login systeem gebaseerd op OOP, het inloggen werkt prima, maar ik heb aan de database (MySQL) een extra kolom toegevoegd (locatie), dit wordt ingevuld bij registratie en aan de hand daarvan wordt de gebruiker naar een bepaalde pagina gestuurd, alleen lukt dit niet.
Hierbij het script, hopelijk kan iemand mij helpen:
Login.php:
<?php
error_reporting(E_ALL & ~E_NOTICE);
session_start();
if(isset($_POST['login']))
{
include('/classes/class.login.php');
$login = new Login();
if($login->isLoggedIn())
header('location: afhankelijk locatie van gebruiker in database');
else
$login->showErrors();
}
$token = $_SESSION['token'] = md5(uniqid(mt_rand(),true));
?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table>
<tr><td>Username:</td><td><input type="text" name="username" /></td></tr>
<tr><td>Password:</td><td><input type="password" name="password" /></td></tr>
</table>
<input type="hidden" name="token" value="<?php echo $token;?>" />
<input type="submit" name="login" value="Inloggen" />
</form>
De class.login.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("localhost", "root", "") or die(mysql_error());
mysql_select_db("loginsysteem") 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>";
}
}
?>
Alvast bedankt
1.622 views