login  Naam:   Wachtwoord: 
Registreer je!
 Forum

login

Offline webbiexl - 02/05/2005 17:57
Avatar van webbiexlPHP interesse hey ik heb dat ledensysteem van murfy, en dat ben ik ontzettend aan het uitbreiden maar nu heb ik dus last van dat als ik heb ingelogd daarna nog een keer moet inloggen voordat daadwerkelijk ben ingelogd, ik heb aan de code bijna nix veranderd, hetgeen wat ik veranderd heb heeft geen effect hierop want hij heeft t wel goed gedaan, waar kan dit aan liggen????

12 antwoorden

Gesponsorde links
Offline Stijn - 02/05/2005 18:03
Avatar van Stijn PHP expert mag ik eens de code zien....
Offline webbiexl - 02/05/2005 18:08
Avatar van webbiexl PHP interesse tuurlijk
  1. <?php
  2. include('config.php');
  3. if($cfg['cronjobs'] != 1) { // Geen cronjobs ondersteund...
  4. include('cronjobs.php');
  5. }
  6. if(isset($_SESSION['gebruiker'])) {
  7. header("Location: ingelogged.php");
  8. }
  9. ?>
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  11. "http://www.w3.org/TR/html4/loose.dtd">
  12. <html>
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  15. <title>Inloggen</title>
  16. </head>
  17. <body>
  18. <form name="form1" method="post" action="">
  19. <table border="0">
  20. <tr>
  21. <td>Gebruikersnaam:</td>
  22. <td><input name="gebruikersnaam" type="text" id="gebruikersnaam" size="35" <?php if(isset($_GET['gebruikersnaam'])) { ?>value="<?=$_GET['gebruikersnaam']?>"<?php } ?>></td>
  23. </tr>
  24. <tr>
  25. <td>Wachtwoord:</td>
  26. <td><input name="wachtwoord" type="password" id="wachtwoord" size="35"></td>
  27. </tr>
  28. <tr>
  29. <td>Tijd:</td>
  30. <td><select name="tijd" id="tijd">
  31. <option value="3600" selected>Een uur</option>
  32. <option value="86400">Een dag</option>
  33. <option value="604800">Een week</option>
  34. <option value="2678400">Een maand</option>
  35. <option value="32140800">Een jaar</option>
  36. <option value="32140767859200">Altijd</option>
  37. </select>
  38. (cookies vereist) </td>
  39. </tr>
  40. <tr>
  41. <td colspan="2"><input name="poging" id="poging" type="hidden" value="<?php echo $_POST['poging']+1; ?>"><input type="submit" name="Submit" value="Inloggen"></td>
  42. </tr>
  43. </table>
  44. </form>
  45. </body>
  46. </html>
  47. <?php if(isset($_POST['Submit'])) {
  48. if($_POST['poging'] == $cfg['poging']+1) { // Reeds 3 pogingen achter de rug?
  49. header("Location: wachtwoord.php");
  50. }
  51. $checkg = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'"),0);
  52. $checkp = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".md5($_POST['wachtwoord'])."'"),0);
  53. mysql_query("UPDATE leden SET datum2 = NOW() WHERE gebruikersnaam = '" . $_SESSION['gebruiker'] . "'");
  54.  
  55. if($_POST['gebruikersnaam'] == "" || $_POST['wachtwoord'] == "") {
  56. $error[] = 'Vul alle velden in!';
  57. }
  58. if($checkg == 0 && $_POST['gebruikersnaam'] != "") {
  59. $error[] = 'De ingevoerde gebruikersnaam is niet geregistreerd.';
  60. }
  61. if($_POST['wachtwoord'] != "" && $_POST['gebruikersnaam'] != "" && $checkp == 0) {
  62. $error[] = 'Het ingevoerde wachtwoord is niet correct.';
  63. }
  64. if (!mysql_query("UPDATE leden SET datum2 = NOW() WHERE gebruikersnaam = '" . $_SESSION['gebruiker'] . "'")) {
  65. $error[] = 'Tijdstip van laatst online gebruiker kan niet worden bijgewerkt.';
  66. }
  67. $fouten = sizeof($error); // aantal errors tellen
  68. if($fouten != 0) { // Er is minstens 1 error
  69. echo 'Kan niet inloggen omwille van de volgende reden(en):';
  70. echo '<ul>';
  71. for($i = 0; $i < $fouten; $i++) {
  72. echo '<li>'.$error[$i].'</li>';
  73. }
  74. echo '</ul>';
  75. echo 'Poging '.$_POST['poging'].' van '.$cfg['poging'];
  76. } else {
  77. $res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'");
  78. $row = mysql_fetch_assoc($res);
  79. setcookie("gebruikersnaam",$row['gebruikersnaam'],time()+$_POST['tijd'],"/");
  80. setcookie("wachtwoord",$row['wachtwoord'],time()+$_POST['tijd'],"/");
  81. $_SESSION['gebruiker'] = $row['gebruikersnaam'];
  82. $_SESSION['gid'] = $row['id'];
  83.  
  84. }
  85.  
  86. }
  87. ?>
Offline prorsoft - 02/05/2005 18:13 (laatste wijziging 02/05/2005 18:14)
Avatar van prorsoft PHP gevorderde maak dat als je ingelogd bent datie dan de pagina refreshed!

PS. session_start() en setcookie() werken niet meer nadat je al html code geoutput hebt en/of geëchod hebt!
Offline webbiexl - 02/05/2005 18:20 (laatste wijziging 02/05/2005 19:22)
Avatar van webbiexl PHP interesse dus html na de php neerzetten? refreshen heeft tog geen zin want hij gaat direct naar ingelogged.php als je ingelogged bent

[edit] krijg t niet voor elkaar [/edit]
Offline Stijn - 02/05/2005 20:25
Avatar van Stijn PHP expert Heb je script wat aangepast en normaal zou ie nu moeten werken
heb commentaar toegevoegd waar ik verandert heb 
Hopelijk lukt het nu hé 

  1. <?php
  2. ob_start();//code uitvoeren voordat de headers aangeroepen worden
  3. session_start();//sessie starten doen we meestal in het begin ;)
  4. include('config.php');
  5. if($cfg['cronjobs'] != 1) { // Geen cronjobs ondersteund...
  6. include('cronjobs.php');
  7. }
  8. if(isset($_COOKIE['gebruikersnaam']) AND isset($_COOKIE['wachtwoord']))
  9. //als de gebruiker zich ingelogd heeft dan worden er cookies gemaakt.
  10. //hier gebruikte je sessions
  11. //wanneer de gebruiker zijn browser afsluit dan kan hij zich weer inloggen, wat vervelend is soms
  12. //dus kijken of de cookies bestaan, ja of nee :)
  13. {
  14. header("Location: ingelogged.php");
  15. }
  16. ?>
  17. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  18. "http://www.w3.org/TR/html4/loose.dtd">
  19. <html>
  20. <head>
  21. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  22. <title>Inloggen</title>
  23. </head>
  24. <body>
  25. <form name="form1" method="post" action="<?php $_SERVER['PHP_SELF'];//verwerkingspagina opgeven ?>">
  26. <table border="0">
  27. <tr>
  28. <td>Gebruikersnaam:</td>
  29. <td><input name="gebruikersnaam" type="text" id="gebruikersnaam" size="35" <?php if(isset($_GET['gebruikersnaam'])) { ?>value="<?=$_GET['gebruikersnaam']?>"<?php } ?>></td>
  30. </tr>
  31. <tr>
  32. <td>Wachtwoord:</td>
  33. <td><input name="wachtwoord" type="password" id="wachtwoord" size="35"></td>
  34. </tr>
  35. <tr>
  36. <td>Tijd:</td>
  37. <td><select name="tijd" id="tijd">
  38. <option value="3600" selected>Een uur</option>
  39. <option value="86400">Een dag</option>
  40. <option value="604800">Een week</option>
  41. <option value="2678400">Een maand</option>
  42. <option value="32140800">Een jaar</option>
  43. <option value="32140767859200">Altijd</option>
  44. </select>
  45. (cookies vereist) </td>
  46. </tr>
  47. <tr>
  48. <td colspan="2"><input name="poging" id="poging" type="hidden" value="<?php echo $_POST['poging']+1; ?>"><input type="submit" name="Submit" value="Inloggen"></td>
  49. </tr>
  50. </table>
  51. </form>
  52. </body>
  53. </html>
  54. <?php if(isset($_POST['Submit'])) {
  55. if($_POST['poging'] == $cfg['poging']+1) { // Reeds 3 pogingen achter de rug?
  56. header("Location: wachtwoord.php");
  57. }
  58. $checkg = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'"),0);
  59. $checkp = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".md5($_POST['wachtwoord'])."'"),0);
  60. $update_time = mysql_query("UPDATE leden SET datum2 = NOW() WHERE gebruikersnaam = '" . $_POST['gebruiker'] . "'");//$_SESSION[]???? De $_SESSION[gebruiker] is leeg...
  61. //tijd updaten, we kunnen die variable een paar regels verder gebruiken
  62.  
  63. if($_POST['gebruikersnaam'] == "" || $_POST['wachtwoord'] == "") {
  64. $error[] = 'Vul alle velden in!';
  65. }
  66. if($checkg == 0 && $_POST['gebruikersnaam'] != "") {
  67. $error[] = 'De ingevoerde gebruikersnaam is niet geregistreerd.';
  68. }
  69. if($_POST['wachtwoord'] != "" && $_POST['gebruikersnaam'] != "" && $checkp == 0) {
  70. $error[] = 'Het ingevoerde wachtwoord is niet correct.';
  71. }
  72. if (!$update_time) //hier kunnen we die $update_time gebruiken ^^
  73. {
  74. $error[] = 'Tijdstip van laatst online gebruiker kan niet worden bijgewerkt.';
  75. }
  76. $fouten = sizeof($error); // aantal errors tellen
  77. if($fouten != 0) { // Er is minstens 1 error
  78. echo 'Kan niet inloggen omwille van de volgende reden(en):';
  79. echo '<ul>';
  80. for($i = 0; $i < $fouten; $i++) {
  81. echo '<li>'.$error[$i].'</li>';
  82. }
  83. echo '</ul>';
  84. echo 'Poging '.$_POST['poging'].' van '.$cfg['poging'];
  85. } else {
  86. $res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'");
  87. $row = mysql_fetch_assoc($res);
  88. setcookie("gebruikersnaam",$row['gebruikersnaam'],time()+$_POST['tijd'],"/");
  89. setcookie("wachtwoord",$row['wachtwoord'],time()+$_POST['tijd'],"/");
  90. $_SESSION['gebruiker'] = $row['gebruikersnaam'];
  91. $_SESSION['gid'] = $row['id'];
  92.  
  93. }
  94.  
  95. }
  96. ob_end_flush();//einde headers tegenhouden, ga met die banaan! :)
  97. ?>


Groeten stijn:cool:
Offline webbiexl - 02/05/2005 22:09
Avatar van webbiexl PHP interesse sorry maar ik moet nog steeds 2x inloggen maar iig thnx
Offline Gerard - 03/05/2005 09:45
Avatar van Gerard Ouwe rakker De reden waarom je 2x moet inloggen is omdat je eerst controleerd ofdat een cookie geset is, daarna ga je handelen aan de hand van die info.

Pas veel later in je website ga je controleren of iemand gaat inloggen en of dat goed is.

Als je dan toch gaat werken met ob_start(); dan probeer dit eens:

  1. <?php
  2. ob_start();//code uitvoeren voordat de headers aangeroepen worden
  3. session_start();//sessie starten doen we meestal in het begin ;)
  4. include('config.php');
  5. if($cfg['cronjobs'] != 1) { // Geen cronjobs ondersteund...
  6. include('cronjobs.php');
  7. }
  8. if(isset($_COOKIE['gebruikersnaam']) AND isset($_COOKIE['wachtwoord']))
  9. //als de gebruiker zich ingelogd heeft dan worden er cookies gemaakt.
  10. //hier gebruikte je sessions
  11. //wanneer de gebruiker zijn browser afsluit dan kan hij zich weer inloggen, wat vervelend is soms
  12. //dus kijken of de cookies bestaan, ja of nee :)
  13. {
  14. header("Location: ingelogged.php");
  15. }
  16. ?>
  17. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  18. "http://www.w3.org/TR/html4/loose.dtd">
  19. <html>
  20. <head>
  21. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  22. <title>Inloggen</title>
  23. </head>
  24. <body>
  25. <form name="form1" method="post" action="<?php $_SERVER['PHP_SELF'];//verwerkingspagina opgeven ?>">
  26. <table border="0">
  27. <tr>
  28. <td>Gebruikersnaam:</td>
  29. <td><input name="gebruikersnaam" type="text" id="gebruikersnaam" size="35" <?php if(isset($_GET['gebruikersnaam'])) { ?>value="<?=$_GET['gebruikersnaam']?>"<?php } ?>></td>
  30. </tr>
  31. <tr>
  32. <td>Wachtwoord:</td>
  33. <td><input name="wachtwoord" type="password" id="wachtwoord" size="35"></td>
  34. </tr>
  35. <tr>
  36. <td>Tijd:</td>
  37. <td><select name="tijd" id="tijd">
  38. <option value="3600" selected>Een uur</option>
  39. <option value="86400">Een dag</option>
  40. <option value="604800">Een week</option>
  41. <option value="2678400">Een maand</option>
  42. <option value="32140800">Een jaar</option>
  43. <option value="32140767859200">Altijd</option>
  44. </select>
  45. (cookies vereist) </td>
  46. </tr>
  47. <tr>
  48. <td colspan="2"><input name="poging" id="poging" type="hidden" value="<?php echo $_POST['poging']+1; ?>"><input type="submit" name="Submit" value="Inloggen"></td>
  49. </tr>
  50. </table>
  51. </form>
  52. </body>
  53. </html>
  54. <?php if(isset($_POST['Submit'])) {
  55. if($_POST['poging'] == $cfg['poging']+1) { // Reeds 3 pogingen achter de rug?
  56. header("Location: wachtwoord.php");
  57. }
  58. $checkg = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'"),0);
  59. $checkp = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".md5($_POST['wachtwoord'])."'"),0);
  60. $update_time = mysql_query("UPDATE leden SET datum2 = NOW() WHERE gebruikersnaam = '" . $_POST['gebruiker'] . "'");//$_SESSION[]???? De $_SESSION[gebruiker] is leeg...
  61. //tijd updaten, we kunnen die variable een paar regels verder gebruiken
  62.  
  63. if($_POST['gebruikersnaam'] == "" || $_POST['wachtwoord'] == "") {
  64. $error[] = 'Vul alle velden in!';
  65. }
  66. if($checkg == 0 && $_POST['gebruikersnaam'] != "") {
  67. $error[] = 'De ingevoerde gebruikersnaam is niet geregistreerd.';
  68. }
  69. if($_POST['wachtwoord'] != "" && $_POST['gebruikersnaam'] != "" && $checkp == 0) {
  70. $error[] = 'Het ingevoerde wachtwoord is niet correct.';
  71. }
  72. if (!$update_time) //hier kunnen we die $update_time gebruiken ^^
  73. {
  74. $error[] = 'Tijdstip van laatst online gebruiker kan niet worden bijgewerkt.';
  75. }
  76. $fouten = sizeof($error); // aantal errors tellen
  77. if($fouten != 0) { // Er is minstens 1 error
  78. echo 'Kan niet inloggen omwille van de volgende reden(en):';
  79. echo '<ul>';
  80. for($i = 0; $i < $fouten; $i++) {
  81. echo '<li>'.$error[$i].'</li>';
  82. }
  83. echo '</ul>';
  84. echo 'Poging '.$_POST['poging'].' van '.$cfg['poging'];
  85. } else {
  86. $res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'");
  87. $row = mysql_fetch_assoc($res);
  88. setcookie("gebruikersnaam",$row['gebruikersnaam'],time()+$_POST['tijd'],"/");
  89. setcookie("wachtwoord",$row['wachtwoord'],time()+$_POST['tijd'],"/");
  90. $_SESSION['gebruiker'] = $row['gebruikersnaam'];
  91. $_SESSION['gid'] = $row['id'];
  92. header("Location: ingelogged.php");
  93.  
  94. }
  95.  
  96. }
  97. ob_end_flush();//einde headers tegenhouden, ga met die banaan! :)
  98. ?>
Offline webbiexl - 03/05/2005 10:37
Avatar van webbiexl PHP interesse ik zie niet wat jij veranderd hebt, maar nu doet ie helemaal niets meer, alsof de pagina niet meer op de server staat
Offline Gerard - 03/05/2005 10:38
Avatar van Gerard Ouwe rakker lijn 92, zelf veranderen waar hij anders heen moet.
Offline webbiexl - 03/05/2005 10:44
Avatar van webbiexl PHP interesse die stond ook al op lijn 14
Offline Thomas - 03/05/2005 10:56 (laatste wijziging 03/05/2005 10:56)
Avatar van Thomas Moderator Ik zou ook geen wijs worden uit deze code... Sommige dingen zijn gewoon echt niet logisch (als je kijkt naar het eerste codefragment).

- waarom worden er twee queries uitgevoerd (eerst om te kijken of het lid bestaat, en dan om te kijken of dat lid bestaat, en het wachtwoord overeenkomt ?)
- en daarna vraag je NOG een keer de gegevens op, om je sessie/cookie te vullen... Dit kan dus met één query
- je start je sessie nadat je pagina is afgelopen
- als iemand "hackpogingen" onderneemt, zal dit echt niet gebeuren doordat de "hacker" telkens het formuliertje braaf opnieuw gaat invullen, dus die controle met $_POST['poging'] is nogal onzinnig

Schrijf anders dit script eens zelf, en vraag je van tevoren af wat je wilt bereiken met die pagina. Als je dat doet ben je al verder gekomen dan de auteur.
Offline webbiexl - 03/05/2005 12:12
Avatar van webbiexl PHP interesse khebbut gefixed (en deels opnieuw geschreven)...
iedereen bedankt voor het helpen oplossen en voor de morele steun (eps. fangorn (die sindskort aan zijn avatar te zien dood zaad heeft ))^^^^^^
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2026 Sitemasters.be - Regels - Laadtijd: 0.231s