Haalt query niet op

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Jerry php

Jerry php

04/11/2011 16:03:23
Quote Anchor link
Ik heb geen flauw idee waarom niet, maar ik heb al een andere code van me die wel goed is proberen te vergelijken, ik merkte niet op..
Natuurlijk vul ik het goede wachtwoord en gebruikersnaam is. ;)
heb al meer gebruikersnamen geprobeert die in die query staan

hij geeft heel de tijd de else aan:

hij doet het niet!!

dit is mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
        
            if($_SERVER['REQUEST_METHOD'] == 'POST')
            {

                $username = $_POST['naam'];
                $wachtwoord = md5($_POST['wachtwoord']);
                
                include 'config.php';
                
                $query = "SELECT *
                          FROM gebruikers
                          WHERE gebruikersnaam='$username'
                          AND wachtwoord='$wachtwoord'"
;
                
                $result = mysql_query($query)
                        or die(mysql_error());
                
                if (mysql_num_rows($result) > 0)
                {

                        echo "Hij doet het!";
                }

                
                else
                {
                    echo "hij doet het niet!!";
                }
                
            }

        
            else
            {
            
                echo "<p>Nog niet aangemeld? <a href=register.php>Meld je dan snel aan!</a></p>

                <form action=login.php method=POST>

                <label for=naam>Gebruikersnaam:</label>
                <input type=text name=naam id=naam style=margin-left:21px;/> <br />
                <label for=wachtwoord>Wachtwoord:</label>
                <input type=password name=wachtwoord id=wachtwoord style=margin-left:50px;/><br />
                <input type=submit name=submit value=Aanmelden style=margin-left:221px;/>
                </form>"
;
            }

            
            ?>
Gewijzigd op 04/11/2011 16:08:01 door Jerry php
 
PHP hulp

PHP hulp

26/11/2020 22:51:00
 
Jelle -

Jelle -

04/11/2011 16:08:48
Quote Anchor link
staan de wachtwoorden wel met md5() erover in de database?
 
Jerry php

Jerry php

04/11/2011 16:10:33
Quote Anchor link
Jup:

$password = md5($_POST['wachtwoord']);

dit kwam uit:
register.php
 
Jens erd

Jens erd

04/11/2011 16:21:03
Quote Anchor link
Zet alle html atributen eens netjes tussen haakjes. Geen idee of het wat uit maakt, maar niet geschoten is altijd mis. Verder mis ik een goede foutenafhandeling (niet kloppende gegevens leveren een vette error op) en mis ik enige vorm van beveiliging (Sql injection). En haakjes mogen buiten de quotes natuurlijk ;-)
 
Jerry php

Jerry php

04/11/2011 16:25:37
Quote Anchor link
Sql injection is niet van toepassing, het is een oefening. html atributen tussen haakjes werkt niet, al geprobeert, heb het bij mijn register.php ook zo gedaaan, en werkt wel. wat bedoel je met foutafhandeling, ik weet wel wat het is, maar waar moet ik dat doen?
 
Obelix Idefix

Obelix Idefix

04/11/2011 16:25:56
Quote Anchor link
En waarom onnodig variabelen aanmaken --> regel 5 en 6 kun je in je query opnemen.
Selecteer de velden die je nodig hebt; gebruik geen *

Ga debuggen: echo je query naar het scherm en zie of er dat staat wat je zou verwachten.
 
Jerry php

Jerry php

04/11/2011 16:32:20
Quote Anchor link
Als ik query echo, krijg ik inderdaad de naam en het wachtwoord die ook in mijn query staat, dus dat klopt. maar dan snap ik niet waarom hij dit dan niet doet:

if (mysql_num_rows($result) > 0)
{
echo "Hij doet het!";
}
 
Jens erd

Jens erd

04/11/2011 16:36:13
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
                $result = mysql_query($query)
                        or die(mysql_error());

Dit bedoel ik, althans Or die(). 2 regels verder zit je goed met een if/else structuur, dat zul je met die mysql error ook moeten doen. iets als dit volstaat;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
             $query
= "SELECT *
                          FROM gebruikers
                          WHERE gebruikersnaam='"
.$username."'
                          AND wachtwoord='"
.$wachtwoord."'";
                
                $result = mysql_query($query);
                
                if (mysql_num_rows($result) > 0 AND mysql_error() == '')
                {

                        echo "Hij doet het!";
                }

                
                else
                {
                    echo "hij doet het niet. Zie deze foutmelding: ".mysql_error();
                }

?>

of iets dergelijks.
 
Obelix Idefix

Obelix Idefix

04/11/2011 16:38:13
Quote Anchor link
Echo mysql_num_rows($result) naar het scherm.
Test je query eens direct in je php-admin.

Daarnaast: eens met Jens erd --> zorg voor foutafhandeling (en houdt rekening met de overige eerdere opmerkingen).
 
Jerry php

Jerry php

04/11/2011 16:39:00
Quote Anchor link
Ja ik heb het toegepast, maar dat verandert nog niet mijn probleem
 
Jelle -

Jelle -

04/11/2011 16:40:23
Quote Anchor link
Jerry php op 04/11/2011 16:10:33:
Jup:

$password = md5($_POST['wachtwoord']);

dit kwam uit:
register.php


Wat ik bedoelde is in je tabel, dat je niet zit te zoeken met 0as7ef9asf3afklajl3890 terwijl er gewoon 'test' als wachtwoord in je database staat ;)
Gewijzigd op 04/11/2011 16:40:43 door Jelle -
 
Jerry php

Jerry php

04/11/2011 16:41:00
Quote Anchor link
bizar, als ik mijn gebruikersnaam en wachtwoord intyp, krijg ik 0 als ik die mysql_num_rows($result) echo, maar dat zou niet kunnen, want het zit echt in de database

Toevoeging op 04/11/2011 16:43:15:

smurf, ja in mijn tabel staan de md5 code's ;)
 
Jelle -

Jelle -

04/11/2011 16:44:27
Quote Anchor link
En wat als je $wachtwoord en $username eens echo'd en deze vergelijkt in de database?
 
Jordi Kroon
Redacteur

Jordi Kroon

04/11/2011 16:45:16
Quote Anchor link
@Jerry .

Zou je ook aan deze dingen kunnen denken?

- geen * in een query maar gewoon selecteren wat je wilt
- Mysql injection is mogelijk. Dit kan je veranderen door mysql_real_escape_string() toe te voegen.

De variabelen uit de quotes te halen
salt en pepper toe te voegen .
Moorden is verboden dus OR DIE gebruiken we niet. Bouw fouthandeling op

Je mist '' in je html

<form action=login.php method=POST>

wordt dan
<form action='login.php' method='post'>

Zo ook bij de rest van je html
 
Maikel  B

Maikel B

04/11/2011 17:01:43
Quote Anchor link
Ik heb hem een klein beetje verbeterd voor je.
Ik hoop dat je ziet wat je fout doet.

De * bij je query moet je zelf weghalen en alleen de velden neerzetten die je op wilt halen.
De foutafhandeling van je query mag je ook zelf doen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        include 'config.php';

        $query = "SELECT *
        FROM gebruikers
        WHERE gebruikersnaam='"
. $_POST['naam'] ."'
        AND wachtwoord='"
. md5($_POST['wachtwoord']) ."'";

        $result = mysql_query($query)
        or die(mysql_error());

        if (mysql_num_rows($result) > 0) {
            echo 'Hij doet het!';
        }
else {
            echo 'hij doet het niet!!';
        }

    }
else {

        echo '<p>Nog niet aangemeld? <a href="register.php">Meld je dan snel aan!</a></p>';

        echo '<form action="login.php" method="POST">';

        echo '<label for="naam">Gebruikersnaam:</label>';
        echo '<input type="text" name="naam" id="naam" style="margin-left: 21px;" /><br />';
        echo '<label for="wachtwoord">Wachtwoord:</label>';
        echo '<input type="password" name="wachtwoord" id="wachtwoord" style="margin-left: 50px;" /><br />';
        echo '<input type="submit" name="submit" value="Aanmelden" style="margin-left: 221px;" />';
        echo '</form>';
    }

?>
Gewijzigd op 04/11/2011 17:02:21 door Maikel B
 
Jerry php

Jerry php

04/11/2011 20:55:58
Quote Anchor link
Ik snap er echt niets van, ik heb jouw code even gecopieerd maikel, maar echt waar ik krijg nog steeds dezelfde melding.. hij doet het niet!!

Wat doe ik fout...

Toevoeging op 04/11/2011 21:03:26:

ik ben echt steeds aan het controleren of alles wel klopt, de table enzo. Maar het klopt echt allemaal..
 
Obelix Idefix

Obelix Idefix

04/11/2011 22:22:40
Quote Anchor link
Obelix en Idefix op 04/11/2011 16:38:13:
Echo mysql_num_rows($result) naar het scherm.
Test je query eens direct in je php-admin.


Al geprobeerd?

Nergens een spatie oid extra?
 
Jerry php

Jerry php

04/11/2011 22:35:05
Quote Anchor link
Ja ik heb die mysql_num_rows($result) al geprobeert, het gekke is als ik dan bij het inlog scherm de gebruikersnaam en wachtwoord intyp, dan krijg ik als resultaat 0 te zien, dus die bestaat niet op een of andere manier.. dat snap ik niet. Ik heb ook andere gebruikersnamen+wachtwoorden geprobeert, allemaal hetzelfde resultaat
 
Niels K

Niels K

04/11/2011 22:39:48
Quote Anchor link
Maak je gebruik van hoofdletters in je gebruikersnaam / wachtwoord?
 
Jerry php

Jerry php

04/11/2011 22:45:33
Quote Anchor link
Ja bij sommigen in de gebruikersnaam, maar die typ ik precies over.
 
Niels K

Niels K

04/11/2011 22:46:38
Quote Anchor link
En als je $_POST var dumpt? Komt dan de juiste informatie eruit?
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.