Lid |
|
Jawel hoor, ik heb weer een vraag.
Deze keer maak ik gebruik van een inlogscript, geschreven door Dennisvb.
Ik heb het wat uitgebreid door ook de mogelijkheid toe te voegen je e-mailadres in te voeren. Dat heb ik gedaan door een kolom toe te voegen genaamd 'mail'.
Helaas lukt het mij maar niet om dit e-mailadres weer te geven op mijn site, en ik heb weten te concluderen dat dit komt door een fout in het bestand 'session.php'.
Originele code session.php
<?php
session_start(); // start een sessie of zet een sessie voort
// als de gebruiker is ingelogd
if(isset($_SESSION['suser'])) {
// het volgende timeout deel is optioneel - dit mag worden weggelaten
// * timeout gedeelte *
$now = time();
// als er meer tijd is verstreken dan smaxidle
// sinds het aanmaken van de sessie
if($now - $_SESSION['stime'] > $_SESSION['smaxidle']) {
// breek de sessie af, de gebruiker dient opnieuw in te loggen
$_SESSION = array();
session_destroy();
} else {
// ververs anders de sessietijd. Dit zorgt er voor
// dat de gebruiker ingelogd blijft zolang deze actief is.
$_SESSION['stime'] = $now;
}
// * einde timeout gedeelte *
// v1.2 extra functionaliteit, onthouden login
} elseif(isset($_COOKIE['login_cookie'])) {
// bekijk de waarden van de cookie en als deze kloppen met de database - start alsnog een sessie
// aanname - er is een verbinding met de database
list($id, $wacht) = split(";", $_COOKIE['login_cookie']);
$res = mysql_query("SELECT id, pass, level, last_ip FROM users WHERE id='".$id."'") or die(mysql_error());
if(mysql_num_rows($res) > 0) {
$row = mysql_fetch_assoc($res);
if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) {
// init session
$_SESSION['suser'] = $naam;
$_SESSION['slevel'] = $row['level'];
$_SESSION['stime'] = time();
$_SESSION['smaxidle'] = 60 * 60;
// update cookie
// gebruik hierbij wederom het id en het versleutelde wachtwoord
setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
} else {
// password of ip komt niet overeen - unset het cookie en beeindig de sessie
setcookie("login_cookie", "", time(), "/");
$_SESSION = array();
session_destroy();
}
// geef resultaten vrij
unset($row);
mysql_free_result($res);
} else {
// gebruiker onbekend, cookie vervalst ?
$_SESSION = array();
session_destroy();
}
// ververs de pagina
header("Location: ".$_SERVER['REQUEST_URI']);
}
?>
<?php // als de gebruiker is ingelogd if(isset($_SESSION['suser'])) { // het volgende timeout deel is optioneel - dit mag worden weggelaten // * timeout gedeelte * // als er meer tijd is verstreken dan smaxidle // sinds het aanmaken van de sessie if($now - $_SESSION['stime'] > $_SESSION['smaxidle']) { // breek de sessie af, de gebruiker dient opnieuw in te loggen } else { // ververs anders de sessietijd. Dit zorgt er voor // dat de gebruiker ingelogd blijft zolang deze actief is. $_SESSION['stime'] = $now; } // * einde timeout gedeelte * // v1.2 extra functionaliteit, onthouden login } elseif(isset($_COOKIE['login_cookie'])) { // bekijk de waarden van de cookie en als deze kloppen met de database - start alsnog een sessie // aanname - er is een verbinding met de database list($id, $wacht) = split(";", $_COOKIE['login_cookie']); if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) { // init session $_SESSION['suser'] = $naam; $_SESSION['slevel'] = $row['level']; $_SESSION['stime'] = time(); $_SESSION['smaxidle'] = 60 * 60; // update cookie // gebruik hierbij wederom het id en het versleutelde wachtwoord setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/"); } else { // password of ip komt niet overeen - unset het cookie en beeindig de sessie } // geef resultaten vrij } else { // gebruiker onbekend, cookie vervalst ? } // ververs de pagina header("Location: ".$_SERVER['REQUEST_URI']); } ?>
Mijn aangepaste (vooral ook mee gerommelde) code
<?php
session_start();
if(isset($_SESSION['suser'])) {
$now = time();
if($now - $_SESSION['stime'] > $_SESSION['smaxidle']) {
$_SESSION = array();
session_destroy();
} else {
$_SESSION['stime'] = $now;
}
} elseif(isset($_COOKIE['login_cookie'])) {
list($id, $wacht) = split(";", $_COOKIE['login_cookie']);
if( isset($_SESSION['mail'])) {
$res = mysql_query("SELECT id, pass, mail, level, last_ip FROM users WHERE id='".$id."'") or die(mysql_error());
} else {
$res = mysql_query("SELECT id, pass, level, last_ip FROM users WHERE id='".$id."'") or die(mysql_error());
}
if(mysql_num_rows($res) > 0) {
$row = mysql_fetch_assoc($res);
if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) {
if( isset($_SESSION['mail'])) {
$_SESSION['suser'] = $naam;
$_SESSION['mail'] = $mail;
$_SESSION['slevel'] = $row['level'];
$_SESSION['stime'] = time();
$_SESSION['smaxidle'] = 60 * 60;
} else {
$_SESSION['suser'] = $naam;
$_SESSION['slevel'] = $row['level'];
$_SESSION['stime'] = time();
$_SESSION['smaxidle'] = 60 * 60;
}
setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
} else {
setcookie("login_cookie", "", time(), "/");
$_SESSION = array();
session_destroy();
}
unset($row);
mysql_free_result($res);
} else {
$_SESSION = array();
session_destroy();
}
header("Location: ".$_SERVER['REQUEST_URI']);
}
?>
<?php if(isset($_SESSION['suser'])) { if($now - $_SESSION['stime'] > $_SESSION['smaxidle']) { } else { $_SESSION['stime'] = $now; } } elseif(isset($_COOKIE['login_cookie'])) { list($id, $wacht) = split(";", $_COOKIE['login_cookie']); if( isset($_SESSION['mail'])) { } else { } if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) { if( isset($_SESSION['mail'])) { $_SESSION['suser'] = $naam; $_SESSION['mail'] = $mail; $_SESSION['slevel'] = $row['level']; $_SESSION['stime'] = time(); $_SESSION['smaxidle'] = 60 * 60; } else { $_SESSION['suser'] = $naam; $_SESSION['slevel'] = $row['level']; $_SESSION['stime'] = time(); $_SESSION['smaxidle'] = 60 * 60; } setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/"); } else { } } else { } header("Location: ".$_SERVER['REQUEST_URI']); } ?>
|