login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Vreemd script

Offline Frederic - 14/05/2005 15:34
Avatar van FredericPHP ver gevorderde Dit is een erg vreemd probleem. Mijn browser accepteert cookies, maar de cookies worden maar niet ingesteld! Ik zou echt niet weten waar het aan kan liggen. Als ik de pagina uitvoer krijg ik alles perfect te zien (zie commentaren in code). Ziet iemand waarom er geen cookie komt?
  1. <?php
  2. if(isset($_SESSION['gebruiker'])) {
  3. header("Location: ingelogged.php");
  4. }
  5. ?>
  6. <form name="form1" method="post" action="">
  7. <table border="0">
  8. <tr>
  9. <td>Gebruikersnaam:</td>
  10. <td><input name="gebruikersnaam" type="text" id="gebruikersnaam" size="35" <?php if(isset($_GET['gebruikersnaam'])) { ?>value="<?php echo $_GET['gebruikersnaam']; ?>"<?php } ?> /></td>
  11. </tr>
  12. <tr>
  13. <td>Wachtwoord:</td>
  14. <td><input name="wachtwoord" type="password" id="wachtwoord" size="35" /></td>
  15. </tr>
  16. <tr>
  17. <td>Tijd:</td>
  18. <td><input type="hidden" value="32140767859200" name="tijd" id="tijd"/>
  19. (cookies vereist) </td>
  20. </tr>
  21. <tr>
  22. <td colspan="2"><input type="submit" name="Submit" value="Inloggen" /></td>
  23. </tr>
  24. </table>
  25. </form>
  26. <?php
  27. if(isset($_POST['Submit'])) {
  28. echo $_POST['gebruikersnaam']."<br />"; //CONTROLE, DEZE GEEFT ALLES WEER ZOALS GEPOST
  29. echo $_POST['wachtwoord']."<br />"; //CONTROLE, DEZE GEEFT ALLES WEER ZOALS GEPOST
  30. echo $_POST['tijd']; //CONTROLE, DEZE GEEFT ook ALLES WEER ZOALS GEPOST
  31. $res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'");
  32. $row = mysql_fetch_assoc($res);
  33. echo $row['wachtwoord'].$row['gebruikersnaam']; //CONTROLE, DEZE ECHO'T ALLES ZOALS HET MOET
  34. setcookie("gebruikersnaam",$row['wachtwoord'],time()+$_POST['tijd']);
  35. setcookie("wachtwoord",$row['wachtwoord'],time()+$_POST['tijd']);
  36. $_SESSION['gebruiker'] = $row['gebruikersnaam'];
  37. $_SESSION['gid'] = $row['id'];
  38. //header("Location: index.php"); //WEGGEHAALD OM DE ECHO'S TE KUNNEN LEZEN
  39. } ?>

14 antwoorden

Gesponsorde links
Offline BigBug - 14/05/2005 15:36
Avatar van BigBug PHP expert Ik meen dat er altijd een opgegeven tijd bijstaat (tenminste, tot zover ik weet) van +3600 o.i.d.
Offline jopie - 14/05/2005 15:38
Avatar van jopie Onbekend door die controles zou je nu errors moeten krijgen (headers already sent), maar als je die weglaat kan het eigenlijk alleen maar aan de tijd liggen (de geposte tijd dus)
Offline Frederic - 14/05/2005 15:59
Avatar van Frederic PHP ver gevorderde ik gebruik ob_start bovenaan de hoofdpagina (deze wordt geinclude)

@BB: hoe bedoel je?
Offline Legolas - 14/05/2005 16:08
Avatar van Legolas Onbekend Ik denk dat dat setcookie een té grote tijd mee krijg. Mss dat hij het daarom niet doet.
Offline Frederic - 14/05/2005 16:25
Avatar van Frederic PHP ver gevorderde Nee, ook daar ligt het niet aan!
Het is wel zo dat ik op de pagina waar ik dit include dit nog heb staan: ligt het daar mss aan?
  1. <?php
  2. // als de gebruiker is ingelogd
  3. if(!isset($_SESSION['gebruiker']) && isset($_COOKIE['gebruikersnaam']) && isset($_COOKIE['wachtwoord'])) {
  4. // Gegevens uit koekje halen
  5. $zoek = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."' AND wachtwoord='".$_COOKIE['wachtwoord']."'");
  6. if(mysql_num_rows($zoek) > 0) {
  7. while($geg = mysql_fetch_assoc($zoek)) {
  8. $_SESSION['gebruiker'] = $geg['gebruikersnaam'];
  9. $_SESSION['gid'] = $geg['id'];
  10. header("Location: ".$_SERVER['REQUEST_URI']);
  11. }
  12. } else {
  13. $_SESSION = array();
  14.  
  15. // cookies deleten
  16. if(isset($_COOKIE['gebruikersnaam'])) {
  17. setcookie("gebruikersnaam", "", time(), "/");
  18. }
  19. if(isset($_COOKIE['wachtwoord'])) {
  20. setcookie("wachtwoord", "", time(), "/");
  21. }
  22. }
  23. }
  24. ?>
Offline Legolas - 14/05/2005 16:40
Avatar van Legolas Onbekend daar moet: time()-3600 of -die tijd
Offline toenie - 14/05/2005 16:44 (laatste wijziging 14/05/2005 16:44)
Avatar van toenie HTML interesse Heb je

wel onderaanstaan? 
Offline Frederic - 14/05/2005 17:50
Avatar van Frederic PHP ver gevorderde @Legolas: werkt niet...
@toenie: ja hoor
Offline Legolas - 14/05/2005 18:02 (laatste wijziging 14/05/2005 18:07)
Avatar van Legolas Onbekend ALS dit principe o.i.d. het niet doet:
  1. <?
  2. Setcookie("wachtwoord",$_POST['wachtwoord'], Time()+$_POST['tijdingelogd']);
  3. ?>

Dan ligt het toch echt aan PHP ofzow. Want bij mij is alles hiermee perfect. PHP Fout?:o:o:o
edit: @celestialcelebi 
Offline CelestialCelebi - 14/05/2005 18:05
Avatar van CelestialCelebi PHP gevorderde Nee, bij dat script ligt de fout bij jou. Wachtwoorden zetten we namelijk NOOIT of te nimmer in een cookie. Da's hetzelfde als de sleutel van je huis onder een deurmat met "KIJK HIERONDER" erop leggen.
Offline Fenrir - 14/05/2005 18:06 (laatste wijziging 14/05/2005 18:07)
Avatar van Fenrir PHP expert Je kunt het toch ook alleen met sessions doen?
Dat is gemakkelijker.

Waar wordt je cookie geset?
Er staat geen setcookie().

Ga na welke if's er gedaan worden, door echo('if(!isset($_SESSION[\'gebruiker...') te zetten bij de juiste if's.

Geen ww in cookie, zeker geen echte, als je het dan wilt, gebruik md5().
Offline Frederic - 14/05/2005 18:23 (laatste wijziging 14/05/2005 18:29)
Avatar van Frederic PHP ver gevorderde Jah tuurlijk gebruik ik md5! Maar voor de code te testen (omdat het niet werkt) het ik deze zoveel mogelijk gestript, dus ook de md5 eruit...
//EDIT: als ik dit heb, mét MD5, is mijn script van wel veilig? 

  1. <?php
  2. if(isset($_POST['Submit']) && (preg_match("/^[-_0-9a-z]{2,}$/i", $_POST['gebruikersnaam']))) {
  3.  
  4. $res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' && wachtwoord='".$_POST['wachtwoord']."'");
  5. if ($row = mysql_fetch_assoc($res)){
  6. setcookie("gebruikersnaam","".$row['gebruikersnaam']."",time()+32140760);
  7. setcookie("wachtwoord","".$row['wachtwoord']."",time()+32140760);
  8. $_SESSION['gebruiker'] = $row['gebruikersnaam'];
  9. $_SESSION['gid'] = $row['id'];
  10. header("Location: index.php?Pagina=berichten");
  11. }
  12. else{
  13. echo "Fout bij het inloggen, controleer je gegevens!";
  14. }
  15. } ?>
Offline Gerard - 15/05/2005 02:21
Avatar van Gerard Ouwe rakker && in je query? waar is het woordje AND heen
Offline Bouli - 15/05/2005 04:59 (laatste wijziging 15/05/2005 05:00)
Avatar van Bouli HTML interesse
Citaat:
&& in je query? waar is het woordje AND heen


Scheelt een letter typen he 

Ik vind het ook overzichtelijker staan, t.o.v "AND", net als "||" tegen "OR"...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.25s