Mysql injectie werkt niet
Ik heb in mijn login.php bestand de mysql injectie code gezet. Maar krijg de volgende foutmeldingen:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'vhostswww'@'192.168.1.1' (using password: NO) in /www/zzl.org/f/a/n/fansky/htdocs/login.php on line 10
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /www/zzl.org/f/a/n/fansky/htdocs/login.php on line 10
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'vhostswww'@'192.168.1.1' (using password: NO) in /www/zzl.org/f/a/n/fansky/htdocs/login.php on line 11
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /www/zzl.org/f/a/n/fansky/htdocs/login.php on line 11
Zou iemand mij hier misschien mee kunnen helpen?
Alvast bedankt! Graag alleen hulp over de mysql injectie code, waarom dat niet werkt en zo :$.
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
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
if ($username&&password)
{
$connect=mysql_connect("localhost", "root", "") or die("Could not connect.");
mysql_select_db("name database") or die("Couldn't find db");
$query = mysql_query("SELECT * FROM users WHERE username='$username'");
$numrows = mysql_num_rows($query);
if ($numrows!=0)
{
while ($row = mysql_fetch_assoc($query))
{
$dbusername = $row['username'];
$dbpassword = $row['password'];
}
// check to see if they match
if ($username==$dbusername&&sha1(md5($password)==$dbpassword))
{
header("location:homee.php");
$_SESSION ['username']=$username;
exit;
}
else
echo("Incorrect password!");
include("index.php");
exit;
}
else
echo("that user doesn't exist");
include("index.php");
exit;
}
else
echo("Please enter username and password ");
include("index.php");
exit;
?>
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
if ($username&&password)
{
$connect=mysql_connect("localhost", "root", "") or die("Could not connect.");
mysql_select_db("name database") or die("Couldn't find db");
$query = mysql_query("SELECT * FROM users WHERE username='$username'");
$numrows = mysql_num_rows($query);
if ($numrows!=0)
{
while ($row = mysql_fetch_assoc($query))
{
$dbusername = $row['username'];
$dbpassword = $row['password'];
}
// check to see if they match
if ($username==$dbusername&&sha1(md5($password)==$dbpassword))
{
header("location:homee.php");
$_SESSION ['username']=$username;
exit;
}
else
echo("Incorrect password!");
include("index.php");
exit;
}
else
echo("that user doesn't exist");
include("index.php");
exit;
}
else
echo("Please enter username and password ");
include("index.php");
exit;
?>
Databasenamen kunnen geen spatie bevatten:
"name database"
Gewijzigd op 09/06/2011 12:25:28 door - Ariën -
- Aar - op 09/06/2011 12:22:29:
Plaats je connectie eens gewoon bovenaan, en klopt die inlog wel?
Alles werkt gewoon, behalve die mysql injectie code!
Als je nou gewoon eens doet wat ik zeg :-)
Er staat dat je geen wachtwoord hebt gebruikt in die error. Wat betekent dat je niet geconnect bent aan de database. Dus wat Aar zegt. Bovenaan meteen de connectie leggen met je database zodat je niet van zulke foutmeldingen krijgt.
- Aar - op 09/06/2011 12:25:53:
Als je nou gewoon eens doet wat ik zeg :-)
Ik heb de connectie bovenaan gezet, krijg geen error meer. Maar kan nog wel inlogen met die '1' = '1' code. Dus het werkt nog niet echt.
Edit: Na dit werkt de code wel, krijg alleen de foutmelding: User doesn't exist. Dat moet natuurlijk de melding zijn dat het wachtwoord niet juist is.
op regel 13 moet je zowieso nog even een $ voor password zetten.
Gebruik liever zo een constructie:
Code (php)
1
$query = mysql_query("SELECT * FROM users WHERE username='".mysql_real_escape_string($_POST['username']."'");
Even nog een opmerking:
Zorg voor goede foutafhandeling op je $query. Het is eigenlijk in mijn ogen logischer om deze $result te noemen.
- Aar - op 09/06/2011 12:22:29:
en klopt die inlog wel?
Ik ben er net achtergekomen dat de inlog niet helemaal klopt, ga er nu naar kijken.