login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Inlogsysteem foutje..

Offline PeterBuring - 28/04/2005 10:05
Avatar van PeterBuringHTML beginner ik ben bezig met een site waarop een simpel inlogsysteempje komt te staan die gebruik maakt van sessies.. Ik krijg alleen een vreemde fout..

  1. <body bgcolor="lightgrey" link="black" alink="black" vlink="black">
  2.  
  3. <table width="100%" height="100%" border="5" bordercolor="green">
  4. <tr>
  5. <td colspan="2" width="100%" valign="top" bgcolor="white" height="90" align="left"><img src="plaatjes/frog.gif" width="172" height="145" border="0"><img src="plaatjes/vijver.jpg"></td>
  6. </tr>
  7. <tr>
  8. <td valign="top" bgcolor="white" width="20%"><?php include('menu.php'); ?></td>
  9. <td valign="top" bgcolor="white">
  10.  
  11. <table width="100%" height="100%" border="0" bordercolor="green">
  12. <tr>
  13. <td valign="top" bgcolor="white" align="center"><?php include('voorbeeld.php'); ?></td>
  14. <td width="20%" valign="top" background="plaatjes/bg.jpg">
  15. <font color="white">
  16.  
  17. <?php include('rechts.php'); ?>
  18.  
  19. </font>
  20. </td>
  21. </tr>
  22. <tr>
  23. <td height="50" valign="top" align="center" bgcolor="white">
  24. <hr color="green">
  25. <?php
  26. if(isset($_POST['login']))
  27. {
  28. if(trim($_POST['Inlognaam']) <> "" && trim($_POST['Wacht']) <> "")
  29. {
  30. $Inlognaam = $_POST['Inlognaam'];
  31. $Wacht = md5($_POST['Wacht']);
  32. $res = mysql_query("SELECT Gebruiker_ID, Voornaam, Wachtwoord, Level FROM gebruikers where Inlognaam='".$Inlognaam."'") or die(mysql_error());
  33.  
  34. if(mysql_num_rows($res) > 0)
  35. {
  36. $row = mysql_fetch_assoc($res);
  37.  
  38. if(!strcmp($Wacht, $row['Wachtwoord']))
  39. {
  40. $_SESSION['suserid'] = $row['Gebruiker_ID'];
  41. $_SESSION['sachter'] = $row['Voornaam'];
  42. $_SESSION['suser'] = $Inlognaam;
  43. $_SESSION['slevel'] = $row['Level'];
  44. $_SESSION['stime'] = time();
  45. $_SESSION['smaxidle'] = 60 * 60;
  46. }
  47. else
  48. {
  49.  
  50. $_SESSION = array();
  51. }
  52. unset($row);
  53. }
  54.  
  55. }
  56. }
  57.  
  58. if(isset($_POST['uitloggen']))
  59. {
  60.  
  61. }
  62.  
  63. if(!isset($_SESSION['suser']))
  64. {
  65. ?>
  66. <table width="100%" border="0">
  67. <tr>
  68. <td>
  69. <form action="index.php" method="post">
  70. &nbsp&nbsp&nbsp&nbsp&nbsp<font color="#000000" size="2"><strong>Gebruikersnaam:</strong></font>
  71. &nbsp&nbsp&nbsp&nbsp&nbsp<input name="Inlognaam" type="text" size="10" maxlength="15" style="border-color:#000000 ">
  72. &nbsp&nbsp&nbsp&nbsp&nbsp<font size="2"><strong>Wachtwoord:</strong></font>
  73. &nbsp&nbsp&nbsp&nbsp&nbsp<input name="Wacht" type="password" size="10" maxlength="15" style="border-color:#000000 ">
  74. </td>
  75. <td width="20%">
  76. <center><input type="submit" class="dikkeknop" name="login" value="Inloggen"></center>
  77. </td>
  78. </tr>
  79. </table>
  80. <?php
  81. }
  82. else
  83. {
  84. ?>
  85. <table width="100%" border="0">
  86. <tr>
  87. <td>
  88. <form action="index.php" method="post">
  89. Welkom <b><?php echo $_SESSION['sachter']; ?></b>, uw extra menukeuzes:&nbsp&nbsp
  90. <?php
  91. if($_SESSION['slevel'] & 1)
  92. {
  93. echo "link1&nbsplink1&nbsplink1&nbsplink1&nbsplink1";
  94. }
  95. if($_SESSION['slevel'] & 2)
  96. {
  97. echo "link2";
  98. }
  99. ?>
  100. </td>
  101. <td width="20">
  102. <center>
  103. <input type="submit" class="dikkeknop" name="uitloggen" value="Uitloggen">
  104. </center>
  105. </form>
  106. </td>
  107. </tr>
  108. </table>
  109.  
  110. <?php
  111.  
  112. }
  113.  
  114. ?>
  115. </td>
  116. <td>
  117. <center><font size="2" color="lightgrey"> &copy; Peter Buring<br>Lekker Lauw Design
  118. </td>
  119. </tr>
  120. </table>
  121. </td>
  122. </tr>
  123. </table>


ik kan nu gewoon inloggen wanneer ik een goede gebruikersnaam invul met het bijhorende wachtwoord. Wanneer ik echter een goede username invul met een foutief wachtwoord krijg ik de volgende fout:
Citaat:
Warning: Cannot send session cookie - headers already sent by (output started at c:phpdev5wwwpublicsiteindex.php:3) in c:phpdev5wwwpublicsiteindex.php on line 67

Warning: Cannot send session cache limiter - headers already sent (output started at c:phpdev5wwwpublicsiteindex.php:3) in c:phpdev5wwwpublicsiteindex.php on line 67


Wanneer ik echter een foute gebruikersnaam en een willekeurig wachtwoord invul gebeurt er niks en lijkt de pagina te refreshen..

Waar kan dit aan liggen??

extra:
session.php
  1. <?php
  2. session_start(); if(isset($_SESSION['suser']))
  3. {
  4. $now = time();
  5. if($now - $_SESSION['stime'] > $_SESSION['smaxidle'])
  6. {
  7. $_SESSION = array();
  8. }
  9. else
  10. {
  11.  
  12. $_SESSION['stime'] = $now;
  13. } }
  14. ?>


6 antwoorden

Gesponsorde links
Offline xSc - 28/04/2005 10:10 (laatste wijziging 28/04/2005 10:19)
Avatar van xSc Onbekend session_start();

moet bovenaan staan. D.w.z. boven hetgeen naar de browser wordt verzonden.

Ooit aan array's gedacht?

  1. <?php
  2.  
  3.  
  4. $_SESSION['aMijnArray'] = array();
  5.  
  6. $_SESSION['aMijnArray']['naam'] = 'Henri';
  7. $_SESSION['aMijnArray']['ingelogd'] = 1;
  8.  
  9. // etc.
  10.  
  11. ?>

Offline PeterBuring - 28/04/2005 10:24
Avatar van PeterBuring HTML beginner hm... ik wist dat het aan het session_start() moest liggen maar kwam er niet uit.. ik heb nu alle session_start()'s weggehaald uit de pagina en het werkt nu best redelijk. Ik kan inloggen.. ik kan verkeerde wachtwoorden of usernames invullen zonder fouten alleen wanneer ik uitlog krijg ik een logische fout namelijk:
Citaat:
Warning: Trying to destroy uninitialized session in c:phpdev5wwwpublicsiteindex.php on line 85


hier misschien een simpele oplossing voor..
ow enne.. ik heb in if(isset($_POST['uitloggen'])) nu de code staan die eerst bij else stond.. deze:
  1. $_SESSION = array();
Offline xSc - 28/04/2005 10:28 (laatste wijziging 28/04/2005 10:31)
Avatar van xSc Onbekend Je moet wel session_start() gebruiken als je sessies gebruikt.

Uitleg foutmelding:

Je wil een sessie weggooien, die niet bestaat. 

Dus: volg m'n raad op: je gebruikt 1 keer per pagina session_start(). Je roept session_start() aan voor de output, die naar je browser verzonden wordt.

Verder:

$_SESSION is al een array. Maar wat ik bedoel is dit:

Als je een aantal variabelen hebt, die eigenlijk bij elkaar horen, dan kun je een array gebruiken. Je declareert een array binnen een array:

$_SESSION['aArrayNaam'] = array();

Elementen voeg je dus toe aan $_SESSION['aArrayNaam'], bijv.

$_SESSION['aArrayNaam']['ingelogd'] = 1;

Dit is een associatieve array. Nummeriek gebruik is uiteraard ook toegestaan:

$_SESSION['aArrayNaam'][0] = 1;
Offline PeterBuring - 28/04/2005 10:46
Avatar van PeterBuring HTML beginner okdan..
heel erg bedankt.. alles werkt nu optimaal dankzij je uitleg.
Ik word nog wel een php pro ;)
nogmaals bedankt.. ik kan weer verder
Offline Gerard - 28/04/2005 10:49
Avatar van Gerard Ouwe rakker
  1. <?php
  2. $Wacht = md5($_POST['Wacht']);
  3. $res = mysql_query("SELECT Gebruiker_ID, Voornaam, Wachtwoord, Level FROM gebruikers where Inlognaam='".$Inlognaam."'") or die(mysql_error());
  4. ?>


Je MD5 encrypt het wachtwooord wat ingevoerd is in het formulier. Je krijgt dan dus een string die altijd 32 tekens lang is....

  1. <?php
  2. if(!strcmp($Wacht, $row['Wachtwoord']))
  3. ?>


Wanneer dus beide wachtwoorden even LANG zijn dan is het goed.... Omdat je werkt met een MD5 encryptie zijn ze allebei altijd even lang?

Waarom doe je in het begin niet gelijk dit?

  1. <?php
  2. $res = mysql_query("SELECT Gebruiker_ID, Voornaam, Wachtwoord, Level FROM gebruikers where Inlognaam='".$Inlognaam."' AND Wachtwoord = '".$Wacht."'") or die(mysql_error());
  3. ?>
Offline PeterBuring - 28/04/2005 11:19
Avatar van PeterBuring HTML beginner hm.. dat zou me idd weer een if else lusje schelen..
eens ff kijken.. **gaat weer aan de slag**
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.282s