Versio

mysql_num_rows geeft geen nummer

Overzicht Reageren

Jan terhuijzen

jan terhuijzen

06/02/2012 14:57:45
Quote Anchor link
Hallo ik heb nu dit script voor een inlog systeem
de rijen worden geteld die de naam en het wachtwoord bevatten dat is ingevuld als het aantal 1 is is alles Ok en wordt er verder gecontroleerd op email bevestigd etc.
als ik op regel 14 dit doe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($aantal == '1')

werkt het niet
Maar als ik kijk of $aantal uberhoubt een waarde heeft werkt het wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($aantal !== '')

De waarde van $aantal is het getal dat van mysql_num_rows komt
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?PHP
mysql_connect('', '', '');
mysql_select_db('') or die ('fout');

if(isset($_POST['login']))
{

    if(!empty($_POST['loginnaam']))
    {

        if(!empty($_POST['wachtwoord']))
        {

            $sql = "SELECT id,naam,wachtwoord,emailbevestigd,blokkade,rang FROM leden WHERE naam='".mysql_real_escape_string($_POST['loginnaam'])."' wachtwoord='".mysql_real_escape_string($_POST['wachtwoord'])."'";
            $query = mysql_query($sql);
            $aantal = mysql_num_rows($query);
            if($aantal !== '')
            {

                $row = mysql_fetch_assoc($query);
                if($row['emailbevestigd'] !== 'nee')
                {

                    if($row['blokkade'] !== 'blokkade')
                    {

                        if($row['rang'] == 'admin')
                        {

                        $_SESSION['rang'] = 'admin';
                        }

                        if($row['rang'] == 'moderator')
                        {

                        $_SESSION['rang'] = 'moderator';
                        }

                        // Alles is gecontroleerd
                
                        $_SESSION['loguit'] = mt_rand(0, 999999);
                        $_SESSION['naam'] = $row['naam'];
                        $_SESSION['id'] = $row['id'];
                        if(isset($_POST['checklogin']))
                        {

                        $_SESSION['checklogin'] = 'true';
                        }

                        header('location: me.php');
                    }
else {
                    echo 'Je account is geblokkeerd';
                    }
                }
else {
                echo 'Je emailaderes is niet bevestigd';
                }
            }
else {
            echo 'Onjuist wachtwoord of gebruikersnaam';
            }
        }
else {
        echo 'Vul een gebruikersnaam en wachtwoord in om in te loggen';
        }
    }
else {
    echo 'Vul een gebruikersnaam en wachtwoord in om in te loggen';
    }
}

?>


<html>
    <head>
    </head>
    <body>
    <form method="post" action="">
    <input type="text" name="loginnaam">
    <input type="password" name="wachtwoord">
    <input type="checkbox" name="checklogin" value="checklogin">
    <input type="submit" name="login" value="Log in">
    </form>
    </body>
</html>
Gewijzigd op 06/02/2012 15:03:39 door Jan terhuijzen
 
PHP hulp

PHP hulp

25/05/2012 07:06:34
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
TJVB tvb

TJVB tvb

06/02/2012 15:06:17
Quote Anchor link
Je controleert je query niet. Ik gok dat je een false terug krijgt.
Bouw dus wat foutafhandeling in zodat je het kunt controleren
Gewijzigd op 06/02/2012 15:06:45 door TJVB tvb
 
Ger van Steenderen

Ger van Steenderen

06/02/2012 15:08:42
Quote Anchor link
Echo $aantal eens. Dat zou ook wel eens 2 of meer kunnen zijn.
 
Hertog Jan

Hertog Jan

06/02/2012 15:17:54
Quote Anchor link
je query klopt niet..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE naam='".mysql_real_escape_string($_POST['loginnaam'])."' wachtwoord='".mysql_real_escape_string($_POST['wachtwoord'])."'


Moet nog AND tussen de kolomen, dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE naam='".mysql_real_escape_string($_POST['loginnaam'])."' AND wachtwoord='".mysql_real_escape_string($_POST['wachtwoord'])."'


en getallen (integers) hoeven niet tussen ', dus if($aantal == '1') mag/moet if($aantal == 1) zijn.
 
- SanThe -

- SanThe -

06/02/2012 15:20:07
Quote Anchor link
TJVB tvb op 06/02/2012 15:06:17:
Je controleert je query niet. Ik gok dat je een false terug krijgt.
Bouw dus wat foutafhandeling in zodat je het kunt controleren


Klopt. Er zit een fout in de query. Er mist AND.
 
Jan terhuijzen

jan terhuijzen

06/02/2012 15:53:56
Quote Anchor link
Het werkt nu, het lag waarscijnlijk aan een foute query
 
TJVB tvb

TJVB tvb

06/02/2012 15:58:00
Quote Anchor link
@Santhe, ik had geen zin om te scrollen :)

@Jan, heb je nu ook foutafhandeling toegevoegd?
 



Overzicht Reageren