[PHP]Inlog-Cookie systeem logt niet uit?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Twan V
  • Registratie: Oktober 2001
  • Laatst online: 16-09 15:39

Twan V

...en er stralend uitzien

Topicstarter
Als phprutser ben ik een pagina voor mezelf gaan maken met daarop een cookie-loginsysteem (tja, je probeert eens wat nieuws). Ik heb gebruikers (op dit moment nog maar 1) in een database staan en op moment wordt ingelogt wordt de gebruikersnaam en password (die de gebruiker intypt) in een cookie gezet. Daarna wordt de gebruiker en het password in de database opgezocht.

Tot zover werkt het prima, ik kan inloggen en als ik ingelogd ben, kan ik alle taken uitvoeren, zoals een gebruiker toevoegen met gebruikertoevoegen.php. Dan log ik uit. Ik kom terecht op de inlogpagina, waar de gegevens staan die je ziet als je uitgelogd bent. Ook nog goed. Als ik dan handmatig naar gebruikertoevoegen ga, dan blijkt dat ik niet uitgelogd ben, want deze pagina verschijnt gewoon.

Voor de duidelijkheid de code:
index.php (login, relevante delen)
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
<?

  if (IsSet($login)) setcookie("login", $login, time() + 31536000,"",".reflex.nl.ext.ext");
  if (IsSet($wachtwoord)) setcookie("wachtwoord", $wachtwoord, time() + 31536000,"",".reflex.nl.ext.ext");

  include("../data/config.inc.php");

  mysql_connect($host,$user,$pass);
  mysql_select_db($database);

  $wachtwoord = md5($wachtwoord);


 $result = mysql_query("SELECT password FROM users WHERE username='$login'");
 $line = mysql_fetch_array($result);
 $password = $line["password"];

?>

<<knip>>


<? if ($password != $wachtwoord) {
?>
            <form method=post><a name="inloggen">
              <table align=center cellspacing=0 cellpadding=0>
                <tr>
                  <td class=txt>Loginnaam: </td><td> <input type=text name="login" class=input></td>
                </tr>
                <tr>
                  <td class=txt>Wachtwoord: </td><td> <input type=password name="wachtwoord" class=input></td>
                </tr>
                <tr>
                  <td colspan=2 align=center><input type=submit name="submit" value="Inloggen"></td>
                </tr>
              </table>
            </form>
<?
    }
    elseif ($password == $wachtwoord) {
        ingelogd(); //(deze functie geeft de links weer naar de pagina's waar je alleen bij kunt als je ingelogd bent)
    }
?>
<<knip>>


Gebruikerbeheer.php (relevante delen)
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
<?
  include("../../data/config.inc.php");

  mysql_connect($host,$user,$pass);
  mysql_select_db($database);

  $wachtwoord = md5($wachtwoord);


 $result = mysql_query("SELECT password FROM users WHERE username='$login'");
 $line = mysql_fetch_array($result);
 $password = $line["password"];

 if ((!IsSet($password)) || ($password != $wachtwoord)) {
?>
<html>
 <head>
  <META HTTP-EQUIV="refresh" CONTENT="0; url=../">
 </head>
</html>
<? }

else {
//laat de pagina zien
<<knip>>


...en de uitlogpagina:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
  if (IsSet($login)) setcookie("login", "", time() - 31536000,"",".reflex.nl.ext.ext");
  if (IsSet($wachtwoord)) setcookie("wachtwoord", "", time() - 31536000,"",".reflex.nl.ext.ext");
?>
<html>
 <head>
  <META HTTP-EQUIV="refresh" CONTENT="0; url=../">
 </head>
 <body onLoad="alert ('Je bent uitgelogd.')">
 </body>
</html>


Bij de setcookie-functie is de map-variabele leeg omdat ik werk met een mappenstructuur waarin dit (voor zover ik geprobeerd heb) niet mogelijk is. Ook heb ik geprobeerd het domein weg te laten, of het puntje aan het begin weg te laten en dit mocht ook niet helpen. (Op een gegeven moment kon ik niet eens meer inloggen). Ik heb de search gebruikt, maar de topics die daaruit rolden konden mijn vraag ook niet beantwoorden. Iemand?

offtopic:
Superglobals zijn op mijn server nog niet beschikbaar, binnenkort ga ik mijn server upgraden van een p1 100 naar een AMD K6(?) 550 en dan wordt alles in een keer geupgrade.

Blaat het niet dan schaadt het niet...
Reflex Discoshow - Het beste wat je bruiloft kan overkomen


Acties:
  • 0 Henk 'm!

  • jinxedworld
  • Registratie: April 2003
  • Laatst online: 10-06 11:28
Kan je niet beter de gegevens die je in een cookie knalt na het inloggen onderbrengen in een Sessie-variabele? Kan je met een simpele functie zo weer leeggooien.

Ideetje misschien?

Greetz,

Jinxedworld

Acties:
  • 0 Henk 'm!

  • Twan V
  • Registratie: Oktober 2001
  • Laatst online: 16-09 15:39

Twan V

...en er stralend uitzien

Topicstarter
Daar zit wat in, en dat is inderdaad zeker het overwegen waard, maar een cookie zou toch ook zo leeg te gooien moeten zijn?

Blaat het niet dan schaadt het niet...
Reflex Discoshow - Het beste wat je bruiloft kan overkomen


Acties:
  • 0 Henk 'm!

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

zou kunnen dat er foutje zit met expiren ofzo.. als ik zelf koekjes gebruik doe ik er bij opgeven ervan geen tijd bij, moet ie normaal ook weg zijn als browser venster sluit (ook wel handig bij dit soort toepassingen), functie die je gebruikt om te verwijderen is goed.
daarnaast, maar dat is iets heel anders, zou ik bij die redirects die je doet gewoon gebruik maken van een header("Location: bla"); werkt vaak wat lekkerderder, enne, is isset() trouwens niet zonder hoofdletters?
zoals nr2 al zegt zijn sessions trouwens ook geen heel slecht idee..

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


Acties:
  • 0 Henk 'm!

  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

je kan het cookie ook gewoon helemaal leeggooien, hetzelfde als een sessie leeggooien. Zodra je namelijk naar een cookie schrijf overschrijft hij de oude gegevens, als je dan geen data naar je cookie schrijft krijg je een leeg cookie. Bij de paswoord controle zijn deze dan niet gelijk aan elkaar.

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl


Acties:
  • 0 Henk 'm!

Verwijderd

BetuweKees schreef op 13 May 2003 @ 23:43:
zou kunnen dat er foutje zit met expiren ofzo.. als ik zelf koekjes gebruik doe ik er bij opgeven ervan geen tijd bij, moet ie normaal ook weg zijn als browser venster sluit (ook wel handig bij dit soort toepassingen), functie die je gebruikt om te verwijderen is goed.
daarnaast, maar dat is iets heel anders, zou ik bij die redirects die je doet gewoon gebruik maken van een header("Location: bla"); werkt vaak wat lekkerderder, enne, is isset() trouwens niet zonder hoofdletters?
zoals nr2 al zegt zijn sessions trouwens ook geen heel slecht idee..
functions zijn case-insensitive, dus zowel met als zonder (of door elkaar) kun je gebruiken :)

Acties:
  • 0 Henk 'm!

  • Twan V
  • Registratie: Oktober 2001
  • Laatst online: 16-09 15:39

Twan V

...en er stralend uitzien

Topicstarter
Ik heb inmiddels de oplossing gevonden.

De uitlogpagina ziet er nu als volgt uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
  setcookie("login", "", time() + 100,"",".reflex.nl.eu.org");
  setcookie("wachtwoord", "", time() + 100,"",".reflex.nl.eu.org");

  header("Location: ../"); 
?>
<html>
 <head>
  <title>Twannografie - Uitloggen</title>
 </head>
 <body onLoad="alert ('Je bent uitgelogd.')">
 </body>
</html>


Hierbij wordt alle html na de redirectheader niet uitgevoerd, en deze ga ik daarom ook nog weg halen.

Allen bedankt voor de oplossingen!

Blaat het niet dan schaadt het niet...
Reflex Discoshow - Het beste wat je bruiloft kan overkomen

Pagina: 1