[php] Wachtwoordverificatie wil niet lukken

Pagina: 1
Acties:
  • 113 views sinds 30-01-2008
  • Reageer

  • AlBundy
  • Registratie: Februari 2000
  • Laatst online: 24-05-2025
Ik ben bezig met een newsscript, en daar kun je dmv van een username en password nieuws posten.
Daarin staat dus een stukje waarin hij je password checkt, maar ik type steeds het goede wachtwoord, en toch krijg ik de melding dat ik een verkeerd wachtwoord heb getypt. Hier het stukje code van de wachtwoordverificatie:
PHP:
1
2
3
4
5
6
7
8
<?
        $userqry = "select user_id from users where username = '$username' and password = '$password'";
        $userresult = mysql_query($userqry);
        $userrow = mysql_fetch_array($userresult);
        if (!$userrow) {
            echo "Ongeldig wachtwoord ingevuld! Ga terug en corrigeer het probleem.";
        }
?>

Ik kan er geen fout uithalen...

Er is geen user_id 0 dus dat kan ook niet de reden zijn dat !$userrow waar is.

***** Excellent cron job. Will run again.


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 17-09 14:37
Probeer het password (+ benodigde rest) uit de database te halen WHERE username=$username

vergelijk passwords dan met elkaar?

  • AlBundy
  • Registratie: Februari 2000
  • Laatst online: 24-05-2025
Dat deed ik eerst, en dat werkte ook niet.
Ik weet zeker dat ik het goede password, want ik heb op een gegeven moment gewoon gekoppiepeest vanuit phpmyadmin.

***** Excellent cron job. Will run again.


  • AlBundy
  • Registratie: Februari 2000
  • Laatst online: 24-05-2025
Volgens mij ben ik er al achter :D

Mijn passwordveld is een varchar(16). Betekent dat dan dat wat hij uit dat veld haalt 16 tekens lang is en dat ik dus eerst de spaties er uit moet halen?

***** Excellent cron job. Will run again.


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

Op dinsdag 16 oktober 2001 23:47 schreef AlBundy het volgende:
Volgens mij ben ik er al achter :D

Mijn passwordveld is een varchar(16). Betekent dat dan dat wat hij uit dat veld haalt 16 tekens lang is en dat ik dus eerst de spaties er uit moet halen?
dat lijkt me niet..
probeer eens te kijken met mysql_num_rows hoeveel rows je terugkrijgt..

als het er 1 is, dan klopt het password

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • AlBundy
  • Registratie: Februari 2000
  • Laatst online: 24-05-2025
Ik krijg geen regels terug, anders ging hij dat if-statement wel voorbij.
En het password is zeker weten goed :)

***** Excellent cron job. Will run again.


  • Le Mol
  • Registratie: April 2000
  • Niet online
Maak er nu gewoon eens van:
PHP:
1
2
3
4
5
6
7
8
<?
$userqry = "select user_id from users where username = '$username' and password = '$password'";
$userresult = mysql_query($userqry);
$userrow = mysql_num_rows($userresult);
    if ($userrow != 1) {
            echo "Ongeldig wachtwoord ingevuld! Ga terug en corrigeer het probleem.";            
                }
?>

Zoals net ook al voorgesteld werd, dat werkt gewoon.
Wat jij doet is kijken of een array 'waar' is, en dat werkt blijkbaar niet zo erg best :)

En dat idee van die spaties, nah nee da's gelukkig niet zo, je krijgt gewoon een array van strings terug (met fetch_array) met de lengte van de inhoud van de cell en _niet_ met de lengte van de maximale lengte van de inhoud van de cell :) (sorry voor de vreselijke zinsconstructie ;) )

Logic brings you from a to b, your imagination can bring you anywhere


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

print je query eens voordat deze wordt uitgevoerd, en controleer deze dan nog eens.

eventueel kun je die query direct in je mysql-prompt (of phpMyAdmin) invullen om te controleren.. :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

PHP:
1
2
3
<?
if (!$userrow[userid])
?>

Zou moeten werken, maar ik zou de passwords met elkaar vergelijken.

  • AlBundy
  • Registratie: Februari 2000
  • Laatst online: 24-05-2025
Op woensdag 17 oktober 2001 00:05 schreef thomaske het volgende:
print je query eens voordat deze wordt uitgevoerd, en controleer deze dan nog eens.

eventueel kun je die query direct in je mysql-prompt (of phpMyAdmin) invullen om te controleren.. :)
Dit had ik vantevoren ook al gedaan en dat werkte wel.

Ik zal ff de source dmv documentatie uitleggen:

1. Check of de gebruikersnaam bestaat door een query te doen op de ingevulde username. Als deze niet bestaat, laat dan een melding zien. (Bijbehorende query: "select username from users where username = '$username'")

2. Doe de query opnieuw, dit keer met check op username AND password. Als je niks terugkrijgt, geef dan een melding dat het wachtwoord fout is. (bijbehorende query: "select user_id from users where username = '$username' and password = '$password'")

3. Post het nieuws.

***** Excellent cron job. Will run again.


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Is password geen reserved word?

  • AlBundy
  • Registratie: Februari 2000
  • Laatst online: 24-05-2025
|:(

Ik heb een include waar mijn mysql username/password instaan, en daar werd al $password in gebruikt :(
Nu dus gewoon die waarde veranderd in $mysqlpassword en het werkt :D

***** Excellent cron job. Will run again.

Pagina: 1