Ik heb een vreemd probleem, tenminste dat vind ik zelf. Ik heb een simpel login systeem gemaakt, waarbij je ervoor kunt kiezen om je gegevens te onthouden. Als je dat doet dan worden je userid en encrypted wachtwoord opgeslagen in een cookie. Roep je dan opnieuw de pagina login.php aan en deze ziet dat er al een cookie is, moet hij je doorsturen naar eigenaren.php.
Om bovenstaande te verduidelijken een een schema:
--> Gebruiker opened login.php, voert gegevens in en vinkt "Gegevens onthouden" aan
--> Login.php controleert de gegevens:
--------> correct: stel cookie in, stel sessie gegevens in, stuur door naar eigenaren.php
--------> incorrect: stuur terug naar login.php met foutmelding
We gaan er nu vanuit dat het goed is gegaan en gebruiker is ingelogged, de cookie en sessie gegevens zijn ingesteld.
--> Gebruiker opend login.php, gegevens staan in cookie en login.php controleert deze.
--------> correct: stuur door naar eigenaren.php (en update e.v. sessie / cookie gegevens)
--------> incorrect: stuur terug naar login.php (dit kan alleen als een gebruiker in de tussen tijd verwijderd zou zijn en dus de gegevens in het cookie niet meer geldig zijn)
Zo zou het moeten gaan en FF doet dat ook, echter zodra ik, nadat ik via IE heb ingelogged en dan in de browser balk weer een aanroep doe naar login.php, toont hij gewoon het aanmeld formulier i.p.v. mij door te sturen naar eigenaren.php. Druk ik dan op F5, stuurt hij me wel door naar eigenaren.php.
Ik gebruik de volgende code:
Ik heb de validatie code gestript, die lijkt me niet zo van belang, aangezien dat allemaal correct werkt.
Iemand van jullie een idee wat ik hier fout doe?
Om bovenstaande te verduidelijken een een schema:
--> Gebruiker opened login.php, voert gegevens in en vinkt "Gegevens onthouden" aan
--> Login.php controleert de gegevens:
--------> correct: stel cookie in, stel sessie gegevens in, stuur door naar eigenaren.php
--------> incorrect: stuur terug naar login.php met foutmelding
We gaan er nu vanuit dat het goed is gegaan en gebruiker is ingelogged, de cookie en sessie gegevens zijn ingesteld.
--> Gebruiker opend login.php, gegevens staan in cookie en login.php controleert deze.
--------> correct: stuur door naar eigenaren.php (en update e.v. sessie / cookie gegevens)
--------> incorrect: stuur terug naar login.php (dit kan alleen als een gebruiker in de tussen tijd verwijderd zou zijn en dus de gegevens in het cookie niet meer geldig zijn)
Zo zou het moeten gaan en FF doet dat ook, echter zodra ik, nadat ik via IE heb ingelogged en dan in de browser balk weer een aanroep doe naar login.php, toont hij gewoon het aanmeld formulier i.p.v. mij door te sturen naar eigenaren.php. Druk ik dan op F5, stuurt hij me wel door naar eigenaren.php.
Ik gebruik de volgende code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
| if((!isset($_COOKIE['bbnpassword'])) || (!isset($_COOKIE['bbnuid']))) { // Geen cookie dus aanmelding afhandelen, is formulier aangeroepen? if(!empty($_POST["submit"])) { // Het is aangeroepen, gegevens valideren // ... if(!$gebruiker_bestaat) { // Combinatie van loginnaam & wachtwoord is niet correct // Geef melding ... } else { // Combinatie van login & wachtwoord is correct, opslaan in sessie session_start(); // Extra controle gegevens in sessie opslaan // ... // Is aangevinkt dat gegevens onthouden moeten worden? if($_POST["chckOnthouden"] == "on") { // Aangevinkt, dus stellen we een cookie in setcookie('bbncreated', time(), time()+31536000); setcookie('bbnpassword', $password, time()+31536000); // Userid opvragen en opslaan // ... setcookie('bbnuid', $result['id'], time()+31536000); } // Doorsturen naar eigenarenservice header("Location: eigenaren.php"); } } else { // inlog is niet aangeroepen, formulier tonen // ... } } else { // Cookie bestaat, controleren of deze verlopen is if($_COOKIE["bbncreated"] > time()) { // Cookie is verlopen, terug naar de inlog pagina en cookies verwijderen setcookie('bbncreated', '', time()-31536000); setcookie('bbnpassword', '', time()-31536000); setcookie('bbnuid', '', time()-31536000); header("Location: login.php"); } else { // Cookie is nog niet verlopen, dus inloggen met die gegevens // validatie ... if(!$gebruiker_bestaat) { // De gegevens in het cookie zijn niet meer correct, dus cookie verwijderen // Er dient opnieuw ingelogged te worden setcookie('bbncreated', '', time()-31536000); setcookie('bbnpassword', '', time()-31536000); setcookie('bbnuid', '', time()-31536000); header("Location: login.php"); } else { // Combinatie van login & wachtwoord is correct, opslaan in sessie session_start(); // Extra controle gegevens in sessie opslaan // ... // Vernieuwe cookie tijd, voor volgende test op verloop setcookie('bbncreated', time(), time()+31536000); // Doorsturen naar eigenarenservice header("Location: eigenaren.php"); } } } |
Ik heb de validatie code gestript, die lijkt me niet zo van belang, aangezien dat allemaal correct werkt.
Iemand van jullie een idee wat ik hier fout doe?
[ Voor 6% gewijzigd door Crazybyte op 13-07-2006 16:21 ]