[PHP/MySQL] Inloggen werkt niet.

Pagina: 1
Acties:
  • 173 views

Acties:
  • 0 Henk 'm!

  • PatrickLeijser
  • Registratie: Augustus 2009
  • Laatst online: 25-06 10:03
Ik heb al eens een inlogsysteem gemaakt alleen dan met gewone mysql querys ipv prepare statements.

Het inloggen werkt niet en hij blijft haken bij de laatste controle, controleren of het wachtwoord klopt. De gebruiksnaam controleren of die bestaat werkt prima. Maar nu het wachtwoord nog.

Hieronder volgt de code.
PHP:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
include("config.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inloggen</title>
</head>

<body>
<?php
if(isset($_POST['inloggen']))
{
    $gebruiksnaam = $_POST['gebruiksnaam'];
    $wachtwoord = $_POST['wachtwoord'];
    $wachtwoord2 = md5($wachtwoord);
    
    
    if(strlen($gebruiksnaam) == 0)
    {
        $mess = array("Je hebt geen gebruiksnaam ingevuld.");
    }
    elseif(strlen($wachtwoord) == 0)
    {
        $mess = array("Je hebt geen wachtwoord ingevuld.");
    }
    else
    {
        $sql = "SELECT gebruiksnaam FROM gebruiker WHERE gebruiksnaam=?";
        if($stmt = $mysqli->prepare($sql))
        {
            $stmt->bind_param('s', $gebruiksnaam);
            if(!$stmt->execute())
            {
                $mess = 'Error 1';
            }
            else
            {
                $stmt->store_result();
                $stmt->bind_result($gebruiksnaam);
                if($stmt->num_rows != 1)
                {
                    $mess = array("Fout");
                }
                else
                {
                    $stmt->close();
// Hier begint de 2de check, waar het fout gaat dus
                    $sql = "SELECT gebruiksnaam FROM gebruiker WHERE wachtwoord=?";
                    if($stmt = $mysqli->prepare($sql))
                    {
                        $stmt->bind_param('s', $wachtwoord2);
                        if(!$stmt->execute())
                        {
                            $mess = 'Error 2';
                        }
                        else
                        {
                            $stmt->store_result();
                            $stmt->bind_result($wachtwoord2);
                            if($stmt->num_rows != 1) 
                            {
                                $mess = array("Fout2");
                            }
                            else
                            {
                                $mess = array("Goed");
                            }
                        }
                    }
                }
            }
        }
    }
}

if(isset($mess))
{
    foreach ($mess as $string) 
    { 
        echo '<strong>' . $string . '</strong><br /><br />'; 
    }
}
?>
<form method="post">
    Gebruiksnaam<br />
    <input type="text" name="gebruiksnaam" /><br /><br />
    Wachtwoord<br />
    <input type="password" name="wachtwoord" /><br /><br />
    <input type="submit" name="inloggen" value="Login" />
</form>
</body>
</html>


Ik heb al vanalles geprobeerd maar niets heeft gewerkt.

Hij geeft trouwens "Fout 2" aan :)
En een voorbeeldje is hier.
Alvast bedankt voor het helpen

Acties:
  • 0 Henk 'm!

  • Exception
  • Registratie: Augustus 2006
  • Laatst online: 17-09 11:10
Ten eerste wordt er gebruikt gemaakt van een klasse ($stmt). Deze heb je niet geladen. Heb je dit zelf geschreven of zo gekopieerd?

Excuus, niet gezien dat je mysqli_ gebruikt

Hoe zit dat met
code:
1
WHERE wachtwoord=?
?

[ Voor 29% gewijzigd door Exception op 19-08-2009 16:48 ]


Acties:
  • 0 Henk 'm!

  • PatrickLeijser
  • Registratie: Augustus 2009
  • Laatst online: 25-06 10:03
Zelf geschreven :P

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:31

Creepy

Tactical Espionage Splatterer

"vanalles"... prima. Maar wat dan allemaal precies? Aangezien je zelf fout2 print lijkt het me een kleine moeite om uit te zoeken waarom dat gebeurd (aka: je krijgt of meer dan 1 resultaten terug. Dus debuggen maar).

Je bent nu al vaker op de quickstart gewezen en nog steeds geef je veel te weinig informatie. Als je echt al vanalles hebt geprobreerd dan kan je ook aangeven wat dat allemaal is geweest en waarom dat niet heeft gewerkt. Qua code is het gewoon een kwestie van debuggen en ik kan me dan ook niet voorstellen dat je dat al daadwerkelijk hebt gedaan. Lees NMe in "[PHP] Meerdere waarde in een variable ze..." nog eens een keertje door ;)

[ Voor 5% gewijzigd door Creepy op 19-08-2009 16:50 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.