Haalt query 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)
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
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>";
}
?>
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
staan de wachtwoorden wel met md5() erover in de database?
$password = md5($_POST['wachtwoord']);
dit kwam uit:
register.php
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 ;-)
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?
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.
if (mysql_num_rows($result) > 0)
{
echo "Hij doet het!";
}
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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();
}
?>
$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.
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).
Ja ik heb het toegepast, maar dat verandert nog niet mijn probleem
Jerry php op 04/11/2011 16:10:33:
Jup:
$password = md5($_POST['wachtwoord']);
dit kwam uit:
register.php
$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 -
Toevoeging op 04/11/2011 16:43:15:
smurf, ja in mijn tabel staan de md5 code's ;)
En wat als je $wachtwoord en $username eens echo'd en deze vergelijkt in de database?
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
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)
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
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>';
}
?>
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
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 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.
Test je query eens direct in je php-admin.
Al geprobeerd?
Nergens een spatie oid extra?
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
Maak je gebruik van hoofdletters in je gebruikersnaam / wachtwoord?
Ja bij sommigen in de gebruikersnaam, maar die typ ik precies over.
En als je $_POST var dumpt? Komt dan de juiste informatie eruit?