Simpel Login Script geeft aan altijd user/pass verkeerd!
Quote:
DROP TABLE IF EXISTS `accounts`;
CREATE TABLE `accounts` (
`acct` int(10) unsigned NOT NULL auto_increment COMMENT 'Unique ID',
`login` varchar(32) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Login username',
`password` varchar(32) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Login password',
`encrypted_password` varchar(42) collate utf8_unicode_ci NOT NULL default '',
`gm` varchar(32) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Game permissions',
`banned` int(10) unsigned NOT NULL default '0',
`lastlogin` timestamp NOT NULL default '0000-00-00 00:00:00' COMMENT 'Last login timestamp',
`lastip` varchar(16) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Last remote address',
`email` varchar(64) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Contact e-mail address',
`flags` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Client flags',
`forceLanguage` varchar(5) collate utf8_unicode_ci NOT NULL default 'enUS',
`muted` int(30) NOT NULL default '0',
`banreason` varchar(255) collate utf8_unicode_ci default NULL,
`votes` int(10) NOT NULL default '0',
`enabled` int(10) NOT NULL default '0',
PRIMARY KEY (`acct`),
UNIQUE KEY `a` (`login`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Account Information';
CREATE TABLE `accounts` (
`acct` int(10) unsigned NOT NULL auto_increment COMMENT 'Unique ID',
`login` varchar(32) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Login username',
`password` varchar(32) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Login password',
`encrypted_password` varchar(42) collate utf8_unicode_ci NOT NULL default '',
`gm` varchar(32) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Game permissions',
`banned` int(10) unsigned NOT NULL default '0',
`lastlogin` timestamp NOT NULL default '0000-00-00 00:00:00' COMMENT 'Last login timestamp',
`lastip` varchar(16) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Last remote address',
`email` varchar(64) collate utf8_unicode_ci NOT NULL default '' COMMENT 'Contact e-mail address',
`flags` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Client flags',
`forceLanguage` varchar(5) collate utf8_unicode_ci NOT NULL default 'enUS',
`muted` int(30) NOT NULL default '0',
`banreason` varchar(255) collate utf8_unicode_ci default NULL,
`votes` int(10) NOT NULL default '0',
`enabled` int(10) NOT NULL default '0',
PRIMARY KEY (`acct`),
UNIQUE KEY `a` (`login`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Account Information';
voorbeeld acc:
Quote:
INSERT INTO accounts VALUES ('1', 'test', 'test', '', 'az', '0', '2010-12-04 13:39:23', '127.0.0.1', '', '24', 'enUS', '0', null, '0', '1');
Ik heb dit script zelf een beetje verandert van een ander script zo heb ik username verandert naar login omdat dit bij mijn oude db structure hoorde. Maar wat ik ook invul hij blijft zeggen dat de username en password verkeerd zijn.
Ik weet zeker dat ik een geldig account naam en password invoer en ik weet ook zeker dat ik in de conn.php file de juiste gevens heb ingevoerd voor mijn MySQL database. Hij geeft voor de rest geen MySQL errors of andere errors.
main 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
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
session_start();
include 'conn.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$login_user = $Mysqli->real_escape_string($_POST['username']);
$login_pass = $Mysqli->real_escape_string(sha1($_POST['password']));
$user_ip = $_SERVER['REMOTE_ADDR'];
srand ((double) microtime( )*1000000);
$session_id = rand(1000,1000000);
$q1 = "
SELECT
acct,
login,
banned
FROM
accounts
WHERE
login = '".$login_user."'
AND
password = '".$login_pass."'
";
if(!$r1 = $Mysqli->query($q1))
{
echo 'Er is een fout opgetreden!. '. $Mysqli->error;
}
elseif($Mysqli->affected_rows == 1)
{
while ($row = $r1->fetch_assoc ())
{
$_SESSION["login"] = $row['login'];
$_SESSION['user_id'] = $row['id'];
$_SESSION['user_ip'] = $user_ip;
$_SESSION['session_id'] = $session_id;
if ($row['banned'] == 1)
{
echo 'Youre banned you cannot login!';
}
else
{
//Inloggen gelukt!!
header("location: " . 'index.php?msg=succes');
}
$q2 = "
INSERT INTO
sessions
(
user_id,
session_id,
user_ip
)
VALUES
(
'".$row['id']."',
'".$session_id."',
'".$user_ip."'
)
";
}
if (!$Mysqli->query ($q2) )
{
echo 'Something went wrong!'. $Mysqli->error;
}
}
else
{
echo 'Username or Password is invalid! Please try again.';
}
}
else
{
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<h2>Login</h2>
<?php
if(isset($_GET['error']))
{
if($_GET['error'] == 'sess')
{
echo 'This session is invalid! Please try again.<p>';
}
}
?>
<form method='post'>
<table>
<tr>
<td>Username:</td>
<td><input type='text' name='username'></td>
</tr>
<tr>
<td>Password:</td>
<td><input type='password' name='password'></td>
</tr>
<tr>
<td><input type='submit' name='submit' value='Login'></td>
</tr>
</table>
</form>
</body>
</html>
<?php
}
?>
session_start();
include 'conn.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$login_user = $Mysqli->real_escape_string($_POST['username']);
$login_pass = $Mysqli->real_escape_string(sha1($_POST['password']));
$user_ip = $_SERVER['REMOTE_ADDR'];
srand ((double) microtime( )*1000000);
$session_id = rand(1000,1000000);
$q1 = "
SELECT
acct,
login,
banned
FROM
accounts
WHERE
login = '".$login_user."'
AND
password = '".$login_pass."'
";
if(!$r1 = $Mysqli->query($q1))
{
echo 'Er is een fout opgetreden!. '. $Mysqli->error;
}
elseif($Mysqli->affected_rows == 1)
{
while ($row = $r1->fetch_assoc ())
{
$_SESSION["login"] = $row['login'];
$_SESSION['user_id'] = $row['id'];
$_SESSION['user_ip'] = $user_ip;
$_SESSION['session_id'] = $session_id;
if ($row['banned'] == 1)
{
echo 'Youre banned you cannot login!';
}
else
{
//Inloggen gelukt!!
header("location: " . 'index.php?msg=succes');
}
$q2 = "
INSERT INTO
sessions
(
user_id,
session_id,
user_ip
)
VALUES
(
'".$row['id']."',
'".$session_id."',
'".$user_ip."'
)
";
}
if (!$Mysqli->query ($q2) )
{
echo 'Something went wrong!'. $Mysqli->error;
}
}
else
{
echo 'Username or Password is invalid! Please try again.';
}
}
else
{
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<h2>Login</h2>
<?php
if(isset($_GET['error']))
{
if($_GET['error'] == 'sess')
{
echo 'This session is invalid! Please try again.<p>';
}
}
?>
<form method='post'>
<table>
<tr>
<td>Username:</td>
<td><input type='text' name='username'></td>
</tr>
<tr>
<td>Password:</td>
<td><input type='password' name='password'></td>
</tr>
<tr>
<td><input type='submit' name='submit' value='Login'></td>
</tr>
</table>
</form>
</body>
</html>
<?php
}
?>
Gewijzigd op 06/12/2010 21:04:13 door Chris Broekz
- code tags
- haal die enters weg
leest gemakkelijker => kunnen we beter helpen
Gewijzigd op 06/12/2010 21:05:05 door Jasper DS
PHP jasper op 06/12/2010 21:03:46:
relevante code?
dus je geeft de juiste gegevens in maar het systeem zegt dat je de verkeerde invult?
Dat zijn dus geen 134 regels...
Het lijkt me dat je ook aan moet geven welke query het betreft.
Gewijzigd op 06/12/2010 21:09:13 door Yea Rupie
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
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
elseif($Mysqli->affected_rows == 1)
{
while ($row = $r1->fetch_assoc ())
{
$_SESSION["login"] = $row['login'];
$_SESSION['user_id'] = $row['id'];
$_SESSION['user_ip'] = $user_ip;
$_SESSION['session_id'] = $session_id;
if ($row['banned'] == 1)
{
echo 'Youre banned you cannot login!';
}
else
{
//Inloggen gelukt!!
header("location: " . 'index.php?msg=succes');
}
$q2 = "
INSERT INTO
sessions
(
user_id,
session_id,
user_ip
)
VALUES
(
'".$row['id']."',
'".$session_id."',
'".$user_ip."'
)
";
}
if (!$Mysqli->query ($q2) )
{
echo 'Something went wrong!'. $Mysqli->error;
}
Hij vergelijkt de sha1 van je ingevoerde wachtwoord, met het wachtwoord in de database.
Je moet in je database niet een veld toevoegen met als wachtwoord test, maar de sha1 van test: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
VB account zou dan moeten zijn:
Code (php)
1
INSERT INTO accounts VALUES ('1', 'test', 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3', '', 'az', '0', '2010-12-04 13:39:23', '127.0.0.1', '', '24', 'enUS', '0', null, '0', '1');
Gewijzigd op 06/12/2010 21:12:30 door Pieter van Linschoten
->
pieter heeft het juist.
Gewijzigd op 06/12/2010 21:12:47 door Jasper DS
Pieter van Linschoten op 06/12/2010 21:10:48:
Hij vergelijkt de sha1 van je ingevoerde wachtwoord, met het wachtwoord in de database.
Je moet in je database niet een veld toevoegen met als wachtwoord test, maar de sha1 van test: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
VB account zou dan moeten zijn:
Hij vergelijkt de sha1 van je ingevoerde wachtwoord, met het wachtwoord in de database.
Je moet in je database niet een veld toevoegen met als wachtwoord test, maar de sha1 van test: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
VB account zou dan moeten zijn:
voor je je wachtwoord naar de db scrijft er sha1() over gooien
Want dat zou betekenen dat ik inplaats van password naar encryped_password moet gaan.
vervangen door
Veilig is het echter allerminst. Beter is om ook bij de registratie procedure gebruik te maken van sha1.
Code (php)
1
INSERT INTO accounts VALUES ('15', 'sadddss', 'test5', 'b60732e6801c794c37d16eed37565e9cd3f86c86', '0', '0', '0000-00-00 00:00:00', '127.0.0.1', '[email protected]', '24', 'enUS', '0', null, '0', '0');
$login_pass = $Mysqli->real_escape_string(sha1($_POST['password']));
maar je passwoord staat niet met sha1() in de db.
Dus moet je zorgen als mensen registreren dat hun wachtwoord met sha1() in de db terecht komt.
dus
insert into blablabla values('sha1($wachtwoord)') ...
Code (php)
1
2
3
2
3
$hash = sha1(sprintf("%s:%s", strtoupper($login), strtoupper($pass)));
$acc_query = "INSERT INTO `accounts` (`login`, `password`, `encrypted_password`, `lastip`, `email`, `flags`, `gm`, `banned`) VALUES ('$login', '$pass', '$hash', '$ip', '$email', '$expansion', '0', '0');";
$acc_query = @mysql_query($acc_query);
$acc_query = "INSERT INTO `accounts` (`login`, `password`, `encrypted_password`, `lastip`, `email`, `flags`, `gm`, `banned`) VALUES ('$login', '$pass', '$hash', '$ip', '$email', '$expansion', '0', '0');";
$acc_query = @mysql_query($acc_query);
dit betekent dat ik al sha1 gebruik alleen is dat niet bij de collum 'passwords' maar bij encrypted_password. Dit zou betekenen als ik passwords vervang door Encrypted_passwords dat als iemand dan zijn password invoert dat hij dan succesvol inlogged?
kan je ook doen maar waarom?
Als ik mijn veiligheid wil behouden.
PHP jasper op 06/12/2010 21:20:01:
kan je ook doen maar waarom?
kan je het evengoed zonder doen. Zorg gewoon dat je 1 kolom met het paswoord hebt en gooi daar die sha1() over.
Dus je hebt mooie veilige passwords, maar mocht het iemand lukken om in je database te komen (sql-injection ofzo) dan liggen de passwords gewoon op straat. Beetje onlogisch en niet echt veilig.
- SanThe - op 06/12/2010 21:24:10:
Dus je hebt mooie veilige passwords, maar mocht het iemand lukken om in je database te komen (sql-injection ofzo) dan liggen de passwords gewoon op straat. Beetje onlogisch en niet echt veilig.
dat bedoelde ik ook, jij zegt het gewoon beter :)