Yep! Hvis jeg f.eks. trykker F5 i IE, så bliver den ved med at være logget ind. Hvis jeg f.eks. kopier stien og sætter den ind i en ny IE, så viser den login billedet igen. Dvs. at if ($_COOKIE['gemt_kodeord']){bliver aldrig indlæst som eksisterende.
hmm... grunden til at jeg skriver: time() + (60 * 60 * 24 * $_POST['$antal_dage']); er f.eks. Hvis det i dag er den 17/01-2006, så skal den skrive d. 19/01-2006 i cookien. Er det forkert at gøre det på den måde?
echo $_COOKIE['gemt_kodeord'] . " indhold af cookie<br>"; if ($_COOKIE['gemt_kodeord']){ lavcookie(); }
?> <html> <body> <h1>Hemmelige opskrifter online</h1> <?php $rigtigt_kodeord = md5("kodeord"); // Det kodeord der giver adgang til siden er = "kodeord"
if($gemt_kodeord == $rigtigt_kodeord){ echo "<h1>Her er den hemmelige opskrift på verdens bedste kager.</h1>"; } else { ?> indtast det hemmelige kodeord <form method=post action=<?php echo $_SERVER["PHP_SELF"]; ?> > <input type=password name=indtastet_kodeord> <input type=submit value="Vis mig opskriften"> </form>
Problemer lå ikke i antal_dage, men mere en kombi af variabler der overskrev hinanden! :-) Hvis du smider et svar ole, så får du alligevel points for hjælpe forsøgene! Her er det endelige script:
<?php
// Funktion der opretter cookien! function lavcookie(){ global $gemt_kodeord; setcookie("gemt_kodeord", "$gemt_kodeord", time()+60); }
// Indhenter det kodeord brugere har indtastet i password feltet $indtastet_kodeord = $_POST['indtastet_kodeord'];
// Hvis det står noget i password feltet skal koden MD5'es og smides i en cookie if ($indtastet_kodeord){ $gemt_kodeord = md5($indtastet_kodeord); $Cookie_Check = "RunOff"; // Variabel der tjekker om "if ($_COOKIE['gemt_kodeord'])" må køre. Dette må den kun hvis cookien eksistere ved side indlæsning! lavcookie(); }
// Hvis siden lige er blevet indlæst vil $Cookie_Check være = "" og derfor vil $_cookie tjekke om cookien er oprettet! if (!$Cookie_Check == "RunOff") { if ($_COOKIE['gemt_kodeord']){ $gemt_kodeord = $_COOKIE['gemt_kodeord']; lavcookie(); } } ?> <html> <body> <h1>Hemmelige opskrifter online</h1> <?php
$rigtigt_kodeord = md5("kodeord"); // Det kodeord der giver adgang til siden er = "kodeord"
// Tjekekr om det indtastede eller cookie indhentede password er korrekt! if($gemt_kodeord == $rigtigt_kodeord){ echo "<h1>Her er den hemmelige opskrift på verdens bedste kager.</h1>"; } else { ?> indtast det hemmelige kodeord <form method=post action="<?php echo $_SERVER["PHP_SELF"]; ?>" > <input type=password name=indtastet_kodeord> <input type=submit value="Vis mig opskriften"> </form>
I eksemplet (17/01-2006 19:02:12) var problemet i hvert fald, at der i din POST ikke eksisterede en variabel, der hed $_POST['antal_dage'] ... og så _skal_ kagens levetid jo blive 0 sekunder ;o)
Ja, det har du ret I. Jeg vil også godt give dig æren for at sende mig på rette vej. Endelige løsning var dog at sikre, div. variabler ikke overskrev hinanden! :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.