login  Naam:   Wachtwoord: 
Registreer je!
 Forum

script wordt niet juist doorlopen???

Offline Gezienus - 26/11/2011 18:21 (laatste wijziging 26/11/2011 18:22)
Avatar van GezienusLid Ik gebruik een login script welke ik hier van de site heb geplukt.
Heb de volgende code
  1. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  2.  
  3. $qLogin = mysql_query("SELECT * FROM gebruikers WHERE
  4. email = '".mysql_real_escape_string($_POST['email'])."' AND
  5. ww = '".sha1($_POST['ww'])."'");
  6. while ($row = mysql_fetch_array($qLogin)) {
  7. $id = $row['id'];
  8. $admin = $row['admin'];
  9. // Met deze query selecteren we het gebruikers-id van de gebruikersnaam en controleren we of
  10. // de account geactiveerd is in 1 keer. Als je deze niet snapt, lees hem dan 20 keer :)
  11. // Je kan natuurlijk ook een tutorial over dit soort queries lezen, alhoewel
  12. // ze poepsimpel zijn IMO.
  13. // Deze query mag overigens geen resultaten opleveren om te mogen inloggen. Als deze
  14. // wél een resultaat oplevert is de account nog niet geactiveerd (en bestaat de
  15. // activatiedata dus nog).
  16. $qActivatie = mysql_query("SELECT COUNT(id) FROM gebruikers, gebruikers_activaties WHERE
  17. gebruikers.email = '".mysql_real_escape_string($_POST['email'])."' AND
  18. gebruikers.id = gebruikers_activaties.gebruikers_id");
  19.  
  20. if(mysql_result($qActivatie,0) != 0) {
  21. echo 'De account is nog niet geactiveerd.';
  22. } elseif(mysql_num_rows($qLogin) == 0) {
  23. echo 'De e-mailadres/wachtwoord combinatie is niet correct.';
  24. } else {
  25. // Alles ok, inloggen dus.
  26. // Nu is 1 ding belangerijk:
  27. // ZORG DAT ER EEN session_start() GEPLAATST IS, HETZIJ IN JE INDEX.PHP WAAR
  28. // DEZE PAGINA IN GEPLAATS WORDT, HETZIJ BOVENAAN DEZE PAGINA (ALS ER GEEN
  29. // INCLUDESYSTEEM IS)!!!
  30. if ($admin == 1){
  31. $_SESSION['ingelogd_admin_toegang'] = true;
  32. $_SESSION['ingelogd_toegang'] = true;
  33. // Mocht je nog andere data willen in je sessie,
  34. // zoals een level, dien je dit hier te plaatsen.
  35. } else {
  36. $_SESSION['ingelogd_toegang'] = true;
  37. }}}
  38. echo '<meta http-equiv="refresh" content="0;URL=" />';
  39. }
  40. ?>

Als ik nu alleen een e-mail adres ingeef krijg ik geen melding terug
Wie weet waar dit fout gaat

3 antwoorden

Gesponsorde links
Offline WouterJ - 26/11/2011 19:13
Avatar van WouterJ HTML gevorderde Je moet eerst kijken of de waarde wel ingevuld is. Dat doe je nergens in je script:
  1. <?php
  2. if( $_SERVER['REQUEST_METHOD'] == 'POST' )
  3. { # Formulier is verzonden
  4. $error = array(); // Maak alvast een error var aan
  5.  
  6. if( !isset($_POST['email-adres']) )
  7. { # Email-adres is niet ingevuld (oftewel niet geset, dus !isSet)
  8. $error[] = 'Emailadres is niet ingevuld';
  9. }
  10. if( !isset($_POST['naam']) )
  11. { # Naam is niet ingevuld
  12. $error[] = 'Naam is niet ingevuld';
  13. }
  14.  
  15. if( count($error) == 0 )
  16. { # Geen errors
  17. // Handel het formulier verder af
  18. }
  19. ?>
  20. <!-- HTML troep --->
  21. <?php
  22. if( count($error) > 0 )
  23. : # we hebben errors
  24. ?>
  25. <div id="error"> <!-- maak een error div aan -->
  26. <ul> <!-- Met daarin een lijst -->
  27. <?php foreach( $error as $e ) : ?>
  28. <li><?php echo $e; ?></li> <!-- Toon elke error -->
  29. <?php endforeach; ?>
  30. </ul>
  31. </div>
  32. <?php endif; ?>
  33. ?>
  34. <form action method="post">
  35. <input type="text" name="naam"><br />
  36. <input type="email" name="email-adres"><br />
  37. <input type="submit" value="Verzend">
  38. </form>
Offline Gezienus - 28/11/2011 10:15 (laatste wijziging 30/11/2011 12:37)
Avatar van Gezienus Lid Deze controle zit volgens mij gebakken in de code.
  1. $qLogin = mysql_query("SELECT * FROM gebruikers WHERE
  2. email = '".mysql_real_escape_string($_POST['email'])."' AND
  3. ww = '".sha1($_POST['ww'])."'");


in combinatie met
  1. } elseif(mysql_num_rows($qLogin) == 0) {
  2. echo 'De e-mailadres/wachtwoord combinatie is niet correct.';

Of zie ik hier nog iets over het hoofd


Ik denk dat de oorzaak van het probleem boven water is. Op de pagina staan 2 formulieren die elkaar nu in de weg zitten.
Oorzaak waarschijnlijk bekend, nu de oplossing nog !!  
Offline cyberninjah - 30/11/2011 13:22
Avatar van cyberninjah Lid
  1. if(mysql_result($qActivatie,0) != 0) {
  2. echo 'De account is nog niet geactiveerd.';
  3. } elseif(mysql_num_rows($qLogin) == 0) {
  4. echo 'De e-mailadres/wachtwoord combinatie is niet correct.';


De eerste if zou betekenen dat wanneer je account active is hij die melding geeft != niet gelijk aan. als de gebruiker actief is zal hij 1 terug geven dus in de if komen.

2e elseif

Wanneer dit 0 is dan laat hij de melding e-mailadres zien. dat is wat jij terug krijgt.

Aangezien jij aangeeft alleen een email addres in te voeren is het resultaat dus 0
waardoor je in de if terecht komt.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.216s