inloggen toegstaan.
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
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
<?PHP
error_reporting(E_ALL);
?>
<table border="2" bordercolor="#2D2D2D" cellpadding="0" cellspacing="0" colspan="0" width="70%">
<tr>
<td bgcolor="#2D2D2D">Inloggen</td>
</tr>
<tr>
<td>
<form method="post">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Gebruikersnaam</td>
<td width="50%"><input type="text" name="gebruikersnaam" value="" onclick="gebruikersnaam.value=''" size="20"></td>
</tr>
<tr>
<td width="50%">Wachtwoord</td>
<td width="50%"><input type="password" name="wachtwoord" value="" onclick="wachtwoord.value=''" size="20"></td>
</tr>
<tr>
<td width="50%">Ingelogd blijven</td>
<td width="50%"><select size="1" name="dagen">
<option selected value="1">1 Dag</option>
<option value="2">2 Dagen</option>
<option value="7">7 Dagen</option>
<option value="14">2 Weken</option>
<option value="28">1 Maand</option>
<option value="178">6 Maand</option>
<option value="356">1 Jaar</option>
</select></td>
</tr>
<tr>
<td width="50%"> </td><td width="50%" colspan="2"><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>
</center>
<?
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$query = mysql_query("SELECT COUNT(id)
FROM leden
WHERE gebruikersnaam='".mysql_real_escape_string($_POST["gebruikersnaam"])."' AND wachtwoord='".md5($_POST["wachtwoord"])."'") or die(MySQL_Error());
if(mysql_num_rows($query) == 1)
{
setcookie ("login", mysql_real_escape_string($_POST["gebruikersnaam"]),time()+3600*$_POST["dagen"]);
echo "U bent ingelogt.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php\">";
} else {
echo "Fout.";
}
}
?>
</td>
</tr>
</table>
error_reporting(E_ALL);
?>
<table border="2" bordercolor="#2D2D2D" cellpadding="0" cellspacing="0" colspan="0" width="70%">
<tr>
<td bgcolor="#2D2D2D">Inloggen</td>
</tr>
<tr>
<td>
<form method="post">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Gebruikersnaam</td>
<td width="50%"><input type="text" name="gebruikersnaam" value="" onclick="gebruikersnaam.value=''" size="20"></td>
</tr>
<tr>
<td width="50%">Wachtwoord</td>
<td width="50%"><input type="password" name="wachtwoord" value="" onclick="wachtwoord.value=''" size="20"></td>
</tr>
<tr>
<td width="50%">Ingelogd blijven</td>
<td width="50%"><select size="1" name="dagen">
<option selected value="1">1 Dag</option>
<option value="2">2 Dagen</option>
<option value="7">7 Dagen</option>
<option value="14">2 Weken</option>
<option value="28">1 Maand</option>
<option value="178">6 Maand</option>
<option value="356">1 Jaar</option>
</select></td>
</tr>
<tr>
<td width="50%"> </td><td width="50%" colspan="2"><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>
</center>
<?
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$query = mysql_query("SELECT COUNT(id)
FROM leden
WHERE gebruikersnaam='".mysql_real_escape_string($_POST["gebruikersnaam"])."' AND wachtwoord='".md5($_POST["wachtwoord"])."'") or die(MySQL_Error());
if(mysql_num_rows($query) == 1)
{
setcookie ("login", mysql_real_escape_string($_POST["gebruikersnaam"]),time()+3600*$_POST["dagen"]);
echo "U bent ingelogt.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php\">";
} else {
echo "Fout.";
}
}
?>
</td>
</tr>
</table>
SELECT COUNT(id) FROM ... vind altijd een resultaat. Hij geeft namelijk een rij met inhoud 0 terug als er geen match is.
Waarom die COUNT er staat is me niet geheel duidelijk, als je gewoon SELECT id FROM ... doet, zou het moeten werken.
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Gebruikersnaam</td>
<td width="50%"><input type="text" name="gebruikersnaam" value="" onclick="gebruikersnaam.value=''" size="20"></td>
</tr>
<tr>
<td width="50%">Wachtwoord</td>
<td width="50%"><input type="password" name="wachtwoord" value="" onclick="wachtwoord.value=''" size="20"></td>
</tr>
<tr>
<td width="50%">Ingelogd blijven</td>
<td width="50%"><select size="1" name="dagen">
<option selected value="1">1 Dag</option>
<option value="2">2 Dagen</option>
<option value="7">7 Dagen</option>
<option value="14">2 Weken</option>
<option value="28">1 Maand</option>
<option value="178">6 Maand</option>
<option value="356">1 Jaar</option>
</select></td>
</tr>
<tr>
<td width="50%"> </td><td width="50%" colspan="2"><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>
</center>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$query = mysql_query("SELECT id FROM leden WHERE gebruikersnaam='".mysql_real_escape_string($_POST["gebruikersnaam"])."' AND wachtwoord='".md5($_POST["wachtwoord"])."'") or die(MySQL_Error());
if(mysql_num_rows($query) == 1)
{
setcookie ("login", mysql_real_escape_string($_POST["gebruikersnaam"]),time()+3600*$_POST["dagen"]);
echo "U bent ingelogt.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php\">";
} else {
echo "Fout.";
}
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$query = mysql_query("SELECT id FROM leden WHERE gebruikersnaam='".mysql_real_escape_string($_POST["gebruikersnaam"])."' AND wachtwoord='".md5($_POST["wachtwoord"])."'") or die(MySQL_Error());
if(mysql_num_rows($query) == 1)
{
setcookie ("login", mysql_real_escape_string($_POST["gebruikersnaam"]),time()+3600*$_POST["dagen"]);
echo "U bent ingelogt.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php\">";
} else {
echo "Fout.";
}
}
?>
^^ Dat heb ik nu, maar als ik met de juiste gebruikersnaam en juiste wachtwoord inlog komt er nog steeds fout!
Voer je query eens in phpMyAdmin uit en kijk wat hij terug geeft.
En hoe doe je dat de query uitvoeren in mysql?
Inloggen in phpMyAdmin. Kies een database en klik rechtsboven op 'SQL'. Typ in dat grote tekstvak daar je query en klik op 'Start'. Je krijgt dan te zien wat de query doet en teruggeeft.
$query = mysql_query(
"SELECT id FROM leden WHERE gebruikersnaam='".mysql_real_escape_string(
$_POST[ "gebruikersnaam"]
). "' AND wachtwoord='".md5(
$_POST[ "wachtwoord"]
). "'"
) OR die(
MySQL_Error(
)
)
MySQL retourneerde:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$query = mysql_query("SELECT id FROM leden WHERE gebruikersnaam='".mysql_real_es' at line 1
Dan krijg ik dit te zien!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$query = mysql_query("SELECT id FROM leden WHERE gebruikersnaam='".mysql_real_escape_string($_POST["gebruikersnaam"])."' AND wachtwoord='".md5($_POST["wachtwoord"])."'") or die(MySQL_Error());
$count = mysql_num_rows($query);
if($count == 1)
{
setcookie ("login", mysql_real_escape_string($_POST["gebruikersnaam"]),time()+3600*$_POST["dagen"]);
echo "U bent ingelogt.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php\">";
} else {
echo "Fout.";
}
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$query = mysql_query("SELECT id FROM leden WHERE gebruikersnaam='".mysql_real_escape_string($_POST["gebruikersnaam"])."' AND wachtwoord='".md5($_POST["wachtwoord"])."'") or die(MySQL_Error());
$count = mysql_num_rows($query);
if($count == 1)
{
setcookie ("login", mysql_real_escape_string($_POST["gebruikersnaam"]),time()+3600*$_POST["dagen"]);
echo "U bent ingelogt.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php\">";
} else {
echo "Fout.";
}
}
?>
Btw niet echt veilig dit systeem he. Als ik nu in me cookiemanager de gebruikersnaam aanpas ben ik straks ingelogd met een andere naam.
nu kan ik helemaal niet meer inloggen. Zelfs niet als ik de juiste gebruikersnaam en wachtwoord invoeg!
".mysql_real_escape_string($_POST[ "gebruikersnaam"]). "
en ".md5($_POST[ "wachtwoord"]). "
Aanpassen naar wat ze echt zijn.
Hoe bedoel je aanpassen naar wat ze echt zijn?
phpMyAdmin kan ".mysql_real_escape_string($_POST[ "gebruikersnaam"]). " en ".md5($_POST[ "wachtwoord"]). " niet uitvoeren, je moet dus die twee dingen vervangen door de tekst die ze representeren.
En waar representeren ze dat?