Ik heb een login script geschreven m.b.v. sessies. Nu wil ik zorgen dat mensen kunnen aanvinken dat ze ingelogd blijven. Dus als ze ingelogd zijn en twee weken later weer naar de zelfde site gaan niet opnieuw hoeven in te loggen totdat ze handmatig uitloggen. Ik weet niet zo goed hoe ik dit kan doen met sessies. ik lees wel overal dat dit met cookies kan, maar weet niet op ik die nu ook moet gebruiken of dat ik het met een sessie kan doen. Ik heb natuurlijk al het een en ander geprobeerd, door b.v. de sessielengte verlengen maar zodra het venster wordt gesloten is en de pagina opnieuw wordt geopend wordt is de sessie niet meer geldig.
Als ik dit met cookies moet doen (nog nooit mee gewerkt), hoe ik kan ik dit het veiligst doen zonder af te moeten stappen van het huidige inlog systeem.
Ik gebruik een class om de mysql query's uit te voeren.
Het login form heeft een hidden input met de naam "login" an de value "1".
login script (form even weggelaten, spreekt voor zich)
Op elke pagina wordt op de volgende manier gecontroleerd of iemand is ingelogd.
Als ik dit met cookies moet doen (nog nooit mee gewerkt), hoe ik kan ik dit het veiligst doen zonder af te moeten stappen van het huidige inlog systeem.
Ik gebruik een class om de mysql query's uit te voeren.
Het login form heeft een hidden input met de naam "login" an de value "1".
login script (form even weggelaten, spreekt voor zich)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| if(isset($_POST['login'])){ $login_naam = $_POST['login_uname']; $login_ww = $_POST['login_pass']; if($db->num_rows('SELECT * FROM ' .$TABLE_naam. ' WHERE login_web = "' .$login_naam. '" AND pass_web = "' .$login_ww. '"') > 0) { $login_data = $db->get_array( ); if($login_data[0]['actief'] != 0){ $vn = $login_data[0]['voornaam']; $tv = $login_data[0]['tussenvoegsel']; $an = $login_data[0]['achternaam']; $sessieVar->login = $_POST['login']; $sessieVar->volNaam_2 = $vn ." ". $tv ." ". $an; $sessieVar->uId = $login_data[0]['id']; session_register("sessieVar"); echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=weergeven.php?SessionID=" .session_id(). "\">"; }else{ echo "Met deze login gegevens kan niet meer ingelogd worden<BR> omdat de gebruiker niet meer actief is.\n"; } }else{ echo "De gebruikersnaam of het wachtwoord klopt niet.\n"; } } |
Op elke pagina wordt op de volgende manier gecontroleerd of iemand is ingelogd.
PHP:
1
2
3
4
5
6
7
8
9
| session_start(); if($sessieVar->login == 1 && session_id() == $_REQUEST['SessionID']) { ...... } else { header("Location: login.php"); } |