PHP ver gevorderde |
|
Ik heb mijn eigen loginsysteem gemaakt op basis van dat van Murfy. Nu, alles goed en wel, je blijft netjes ingelogd, maar na bvb 10min van inactiviteit op de site krijg ik iedere keer volgende error:
Citaat: A session had already been started - ignoring session_start()
Dit is nadat je correct ben ingelogd (de check gebeurt erboven nog maar daar zit de fout niet denk ik):
<?php session_start();
setcookie("gebruikersnaam","".$gebruikers_rij['gebruikersnaam']."",time()+32140760);
setcookie("wachtwoord","".$gebruikers_rij['wachtwoord']."",time()+32140760);
$_SESSION['gebruikersnaam'] = $gebruikers_rij['gebruikersnaam'];
$_SESSION['gebruikersid'] = $gebruikers_rij['id']; ?>
setcookie("gebruikersnaam","".$gebruikers_rij['gebruikersnaam']."",time()+32140760); setcookie("wachtwoord","".$gebruikers_rij['wachtwoord']."",time()+32140760); $_SESSION['gebruikersnaam'] = $gebruikers_rij['gebruikersnaam']; $_SESSION['gebruikersid'] = $gebruikers_rij['id']; ?>
Nu, dat werkt allemaal, ik log in en ik blijf onthouden. Na enkele minuten van inactiviteit krijg ik dus bovenstaande error op regel 8 van onderstaand script:
<?php session_start(); // start een sessie of zet een sessie voort
// als de gebruiker is ingelogd
if(!isset($_SESSION['gebruikersnaam']) && isset($_COOKIE['gebruikersnaam']) && isset($_COOKIE['wachtwoord'])) {
// Gegevens uit koekje halen
$zoek = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."' AND wachtwoord='".$_COOKIE['wachtwoord']."'");
if(mysql_num_rows($zoek) > 0) {
while($gebruikers_rij = mysql_fetch_assoc($zoek)) {
session_start();
$_SESSION['gebruikersnaam'] = $gebruikers_rij['gebruikersnaam'];
$_SESSION['gebruikersid'] = $gebruikers_rij['id'];
header("Location: ".$_SERVER['REQUEST_URI']);
}
} else {
session_start();
$_SESSION = array();
session_destroy();
// cookies deleten
if(isset($_COOKIE['gebruikersnaam'])) {
setcookie("gebruikersnaam", "", time(), "/");
}
if(isset($_COOKIE['wachtwoord'])) {
setcookie("gebruikersnaam", "", time(), "/");
}
} ?>
<?php session_start(); // start een sessie of zet een sessie voort // als de gebruiker is ingelogd if(!isset($_SESSION['gebruikersnaam']) && isset($_COOKIE['gebruikersnaam']) && isset($_COOKIE['wachtwoord'])) { // Gegevens uit koekje halen $zoek = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."' AND wachtwoord='".$_COOKIE['wachtwoord']."'"); $_SESSION['gebruikersnaam'] = $gebruikers_rij['gebruikersnaam']; $_SESSION['gebruikersid'] = $gebruikers_rij['id']; header("Location: ".$_SERVER['REQUEST_URI']); } } else { // cookies deleten if(isset($_COOKIE['gebruikersnaam'])) { } if(isset($_COOKIE['wachtwoord'])) { } } ?>
Ik heb voor het gemak even de MD5 eruit gehaald, maar dat zal wss geen invloed hebben.
Nota: Na de fout (A session had already been started - ignoring session_start()) ben ik wel nog altijd ingelogd, dus het werkt eigenlijk zonder problemen, maar kan iemand me zeggen hoe dit op te lossen?
|