Loginprobleem UserID
http://www.phphulp.nl/php/script/beveiliging/simpel-veilig-login-systeempje/1721/simpelveiligloginsysteempje/1176/
Alleen weten jullie, ik wil graag de gegevens van de user op een VEILLIGe manier ophalen, ik weet een beetje van PHP af, ik doe dit als volgt :
////////////////////////////////////////////////////////////////////////////////////
$query = "SELECT * FROM `gebruikers` WHERE `ID` = '" .$userId['ID'] ."'";
$query = mysql_query($query) or die(mysql_error());
$var = mysql_fetch_assoc($query);
echo "<tr>";
echo "<td>" . $var['gebruikersnaam'] . "</td>";
////////////////////////////////////////////////////////////////////////////////////
alleen zie geen resultaat, weet iemand hoe dit moet ? Wat doe ik verkeerd ?
Alvast super bedankt!
groetjen,
Kevin
Beste Mensen ik was bezig met het systeem van Alleen weten jullie, ik wil graag de gegevens van de user op een VEILLIGe manier ophalen, ik weet een beetje van PHP af, ik doe dit als volgt :
////////////////////////////////////////////////////////////////////////////////////
$query = "SELECT * FROM `gebruikers` WHERE `ID` = '" .$userId['ID'] ."'";
$query = mysql_query($query) or die(mysql_error());
$var = mysql_fetch_assoc($query);
echo "<tr>";
echo "<td>" . $var['gebruikersnaam'] . "</td>";
////////////////////////////////////////////////////////////////////////////////////
alleen zie geen resultaat, weet iemand hoe dit moet ? Wat doe ik verkeerd ?
Alvast super bedankt!
groetjen,
Kevin
Gewijzigd op 03/07/2010 14:55:30 door Kevin van Leeuwen
Kevin van Leeuwen op 03/07/2010 14:55:07:
Beste Mensen ik was bezig met het systeem van http://www.phphulp.nl/php/script/beveiliging/simpel-veilig-login-systeempje/1721/simpelveiligloginsysteempje/1176/
Alleen weten jullie, ik wil graag de gegevens van de user op een VEILLIGe manier ophalen, ik weet een beetje van PHP af, ik doe dit als volgt :
////////////////////////////////////////////////////////////////////////////////////
$query = "SELECT * FROM `gebruikers` WHERE `ID` = '" .$userId['ID'] ."'";
$query = mysql_query($query) or die(mysql_error());
$var = mysql_fetch_assoc($query);
echo "<tr>";
echo "<td>" . $var['gebruikersnaam'] . "</td>";
////////////////////////////////////////////////////////////////////////////////////
alleen zie geen resultaat, weet iemand hoe dit moet ? Wat doe ik verkeerd ?
Alvast super bedankt!
groeten,
Kevin
Alleen weten jullie, ik wil graag de gegevens van de user op een VEILLIGe manier ophalen, ik weet een beetje van PHP af, ik doe dit als volgt :
////////////////////////////////////////////////////////////////////////////////////
$query = "SELECT * FROM `gebruikers` WHERE `ID` = '" .$userId['ID'] ."'";
$query = mysql_query($query) or die(mysql_error());
$var = mysql_fetch_assoc($query);
echo "<tr>";
echo "<td>" . $var['gebruikersnaam'] . "</td>";
////////////////////////////////////////////////////////////////////////////////////
alleen zie geen resultaat, weet iemand hoe dit moet ? Wat doe ik verkeerd ?
Alvast super bedankt!
groeten,
Kevin
hoe bedoel je ?
Wat snap je niet?
oh zo, ja oké, alleen weten jullie dan hoe ik zeg maar de SESSIE ophaal want dat is de veiligste manier zoals ik gelezen heb.
weet jij karl karl toevallig hoe ik dan de userId ophaal uit dat script of de sessie zodat ik de gebruikersnaam kan weergeven ?
Sessie data kan je ophalen door het te halen uit de $_SESSION array.
Geen idee hoe het met dat script werkt.
$query = "(`SELECT FROM `gebruikers` WHERE `ID` = '" .$userId['ID'] ."')";
$query = mysql_query($query) or die(mysql_error());
$var = mysql_fetch_assoc($query);
Die () horen niet om de query. De backticks (`) horen niet in de query.
huh, kun je een voorbeeld geven, misschien dat ik het dan wel snap :S sorry dat ik zo erg ben xd
De backticks ` moeten ook weg.
Zie je verschil?
Jouw query
$query = "(`SELECT FROM `gebruikers` WHERE `ID` = '" .$userId['ID'] ."')";
Mijn query
$query = "SELECT FROM gebruikers WHERE ID = '" .$userId['ID'] ."'";
En als $userId['ID'] een integer is hoeft er daar ook geen quotes (') omheen.
Code (php)
1
2
3
4
2
3
4
$sql = "UPDATE
".$settings['db_sessions_table']." SET gebruikerID='". mysql_real_escape_string($userId['ID'])."', hash='".$hash."', hash_key='".$hash_key."', datum=NOW(), ip= '".$mysql->real_escape_string($_SERVER['REMOTE_ADDR'])."'";
$query = mysql_query($sql);
wat is hier fout aan ? weet iemand dit ?
Gewijzigd op 03/07/2010 18:50:45 door Kevin van Leeuwen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
// Ik weet niet of userId['ID'] een integer is, zo ja, dan hoef je die niet te escapen
$sql = mysql_query("SELECT * FROM gebruikers WHERE ID = '".$userId['ID']."'");
if ($sql) {
$var = mysql_fetch_assoc($query);
echo '<tr>';
echo '<td>'.$var['gebruikersnaam'].'</td>';
} else {
echo 'Er gaat iets fout!';
}
?>
// Ik weet niet of userId['ID'] een integer is, zo ja, dan hoef je die niet te escapen
$sql = mysql_query("SELECT * FROM gebruikers WHERE ID = '".$userId['ID']."'");
if ($sql) {
$var = mysql_fetch_assoc($query);
echo '<tr>';
echo '<td>'.$var['gebruikersnaam'].'</td>';
} else {
echo 'Er gaat iets fout!';
}
?>
:)
Gewijzigd op 03/07/2010 20:07:30 door Roel -
maar nu het volgend :S (sorry :S)
maar :
ik heb deze 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
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
$sql = "UPDATE
".$settings['db_sessions_table']." SET gebruikerID='". $userId['ID']."', hash='".$hash."', hash_key='".$hash_key."', datum=NOW(), ip= '". $_SERVER['REMOTE_ADDR'] .'"';
$query = mysql_query($sql);
// Query uitvoeren
if(!$result = $mysqli->query($sql)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if($mysqli->affected_rows > 0) {
echo 'Je bent ingelogd!';
echo "<a href='logout.php?close=session'>uitloggen</a>";
}
}
} else {
$query = " UPDATE
".$settings['db_login_attempts_table']." SET date_time=NOW(), ip='".$_SERVER['REMOTE_ADDR'] ."', sys_info= '".$_SERVER['HTTP_USER_AGENT']."'";
$query = mysql_query($update);
if(!$result = $mysqli->query($query)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if(!$result = $mysqli->query($sql)) {
trigger_error('Fout in query: '.$mysqli->error);
}else {
}
}
echo 'Het wachtwoord of gebruikersnaam was incorrect';
".$settings['db_sessions_table']." SET gebruikerID='". $userId['ID']."', hash='".$hash."', hash_key='".$hash_key."', datum=NOW(), ip= '". $_SERVER['REMOTE_ADDR'] .'"';
$query = mysql_query($sql);
// Query uitvoeren
if(!$result = $mysqli->query($sql)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if($mysqli->affected_rows > 0) {
echo 'Je bent ingelogd!';
echo "<a href='logout.php?close=session'>uitloggen</a>";
}
}
} else {
$query = " UPDATE
".$settings['db_login_attempts_table']." SET date_time=NOW(), ip='".$_SERVER['REMOTE_ADDR'] ."', sys_info= '".$_SERVER['HTTP_USER_AGENT']."'";
$query = mysql_query($update);
if(!$result = $mysqli->query($query)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if(!$result = $mysqli->query($sql)) {
trigger_error('Fout in query: '.$mysqli->error);
}else {
}
}
echo 'Het wachtwoord of gebruikersnaam was incorrect';
hij zegt dat dit fout is, nu reageert hij niet meer, ik zie dit :
Notice: Undefined variable: update in /home/wodngbkp/domains/shimnet.nl/public_html/controlepaneel/login.php on line 74
Warning: mysqli::query() [mysqli.query]: Empty query in /home/wodngbkp/domains/shimnet.nl/public_html/controlepaneel/login.php on line 76
Notice: Undefined variable: sql in /home/wodngbkp/domains/shimnet.nl/public_html/controlepaneel/login.php on line 76
Notice: Fout in query: in /home/wodngbkp/domains/shimnet.nl/public_html/controlepaneel/login.php on line 77
foutieve login
<b>De totale login code: </b>
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
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
<?php
ob_start();
/**
1
*/
error_reporting(E_ALL);
ini_set('display_errors', '1');
include('config.inc.php');
include("verbinden.php");
/* ----------------------------------------------------------------------------------------------- */
if(!isingelogd()) {
// Anti-flood, na 5 keer verkeerd inloggen wordt je IP adres 24 uur geband
$query = " SELECT
COUNT(id) AS attempts
FROM
".$settings['db_login_attempts_table']."
WHERE
date_time > (NOW() - INTERVAL 24 HOUR)
AND
ip = '".$mysqli->real_escape_string($_SERVER['REMOTE_ADDR'])."'
AND
sys_info = '".$mysqli->real_escape_string($_SERVER['HTTP_USER_AGENT'])."'";
if ($result = $mysqli->query($query)) {
$login_attempt = $result->fetch_assoc();
if($login_attempt['attempts'] > $settings['max_login_pogingen']) { // Controleren of je bent geband
echo 'U bent tijdelijk geband<br>';
} else {
if (mb_strtoupper($_SERVER['REQUEST_METHOD']) != 'POST') {
$formulier = true;
} else {
$formulier = false;
if(ctype_digit($_POST['form']) && time() < strtotime("+1 minute", $_POST['form'])) {
$username = htmlspecialchars($_POST['username']);
$hashedPass = sha1($username.$_POST['pass']);
$query = " SELECT
ID
FROM
".$settings['db_gebruikers_table']."
WHERE
gebruikersnaam = '".$mysqli->real_escape_string($username)."'
AND
wachtwoord = '".$mysqli->real_escape_string($hashedPass)."'";
if ($result = $mysqli->query($query)) {
$userId = $result->fetch_assoc();
if(ctype_digit($userId['ID'])) {
$hash_key = uniqid(mt_rand(), true);
$hash = sha1($userId['ID'] . $_SERVER['HTTP_USER_AGENT'] . $hash_key);
// Cookies maken
setcookie('user_id', $userId['ID'], time() + 60*60*24*365, '/');
setcookie('user_hash', $hash, time() + 60*60*24*365, '/');
// Update query samenstellen, ip en hash updaten
$sql = "UPDATE
".$settings['db_sessions_table']." SET gebruikerID='". $userId['ID']."', hash='".$hash."', hash_key='".$hash_key."', datum=NOW(), ip= '". $_SERVER['REMOTE_ADDR'] .'"';
$query = mysql_query($sql);
// Query uitvoeren
if(!$result = $mysqli->query($sql)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if($mysqli->affected_rows > 0) {
echo 'Je bent ingelogd!';
echo "<a href='logout.php?close=session'>uitloggen</a>";
}
}
} else {
$query = " UPDATE
".$settings['db_login_attempts_table']." SET date_time=NOW(), ip='".$_SERVER['REMOTE_ADDR'] ."', sys_info= '".$_SERVER['HTTP_USER_AGENT']."'";
$query = mysql_query($update);
if(!$result = $mysqli->query($query)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if(!$result = $mysqli->query($sql)) {
trigger_error('Fout in query: '.$mysqli->error);
}else {
}
}
echo 'Het wachtwoord of gebruikersnaam was incorrect';
$formulier = true;
}
}
} else {
echo 'Foutieve login. De sessie is verlopen. Logt u even opnieuw in ? <a href="login.php?DefaultGetWay=login.php?set_taal=nl&ncture=geen">Aanmelden</a>';
}
}
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<p><label>Klantnummer:</label><input type="text" name="username" value="" /></p>
<p><label>Wachtwoord::</label><input type="password" name="pass" value="" /></p>
<br><input type="hidden" name="form" value="'.time().'" />
<p><input type="submit" value="Inloggen" /></p>
</form>
';
}
}
} else {
trigger_error('Fout in query: '.$mysqli->error);
}
} else {
echo 'U bent al ingelogd.';
echo "<a href='logout.php?close=session'>uitloggen</a>";
}
ob_end_flush()
?>
ob_start();
/**
1
*/
error_reporting(E_ALL);
ini_set('display_errors', '1');
include('config.inc.php');
include("verbinden.php");
/* ----------------------------------------------------------------------------------------------- */
if(!isingelogd()) {
// Anti-flood, na 5 keer verkeerd inloggen wordt je IP adres 24 uur geband
$query = " SELECT
COUNT(id) AS attempts
FROM
".$settings['db_login_attempts_table']."
WHERE
date_time > (NOW() - INTERVAL 24 HOUR)
AND
ip = '".$mysqli->real_escape_string($_SERVER['REMOTE_ADDR'])."'
AND
sys_info = '".$mysqli->real_escape_string($_SERVER['HTTP_USER_AGENT'])."'";
if ($result = $mysqli->query($query)) {
$login_attempt = $result->fetch_assoc();
if($login_attempt['attempts'] > $settings['max_login_pogingen']) { // Controleren of je bent geband
echo 'U bent tijdelijk geband<br>';
} else {
if (mb_strtoupper($_SERVER['REQUEST_METHOD']) != 'POST') {
$formulier = true;
} else {
$formulier = false;
if(ctype_digit($_POST['form']) && time() < strtotime("+1 minute", $_POST['form'])) {
$username = htmlspecialchars($_POST['username']);
$hashedPass = sha1($username.$_POST['pass']);
$query = " SELECT
ID
FROM
".$settings['db_gebruikers_table']."
WHERE
gebruikersnaam = '".$mysqli->real_escape_string($username)."'
AND
wachtwoord = '".$mysqli->real_escape_string($hashedPass)."'";
if ($result = $mysqli->query($query)) {
$userId = $result->fetch_assoc();
if(ctype_digit($userId['ID'])) {
$hash_key = uniqid(mt_rand(), true);
$hash = sha1($userId['ID'] . $_SERVER['HTTP_USER_AGENT'] . $hash_key);
// Cookies maken
setcookie('user_id', $userId['ID'], time() + 60*60*24*365, '/');
setcookie('user_hash', $hash, time() + 60*60*24*365, '/');
// Update query samenstellen, ip en hash updaten
$sql = "UPDATE
".$settings['db_sessions_table']." SET gebruikerID='". $userId['ID']."', hash='".$hash."', hash_key='".$hash_key."', datum=NOW(), ip= '". $_SERVER['REMOTE_ADDR'] .'"';
$query = mysql_query($sql);
// Query uitvoeren
if(!$result = $mysqli->query($sql)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if($mysqli->affected_rows > 0) {
echo 'Je bent ingelogd!';
echo "<a href='logout.php?close=session'>uitloggen</a>";
}
}
} else {
$query = " UPDATE
".$settings['db_login_attempts_table']." SET date_time=NOW(), ip='".$_SERVER['REMOTE_ADDR'] ."', sys_info= '".$_SERVER['HTTP_USER_AGENT']."'";
$query = mysql_query($update);
if(!$result = $mysqli->query($query)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if(!$result = $mysqli->query($sql)) {
trigger_error('Fout in query: '.$mysqli->error);
}else {
}
}
echo 'Het wachtwoord of gebruikersnaam was incorrect';
$formulier = true;
}
}
} else {
echo 'Foutieve login. De sessie is verlopen. Logt u even opnieuw in ? <a href="login.php?DefaultGetWay=login.php?set_taal=nl&ncture=geen">Aanmelden</a>';
}
}
if($formulier) {
echo ' <form method="post" action="'.end(explode('/', $_SERVER["REQUEST_URI"])).'">
<p><label>Klantnummer:</label><input type="text" name="username" value="" /></p>
<p><label>Wachtwoord::</label><input type="password" name="pass" value="" /></p>
<br><input type="hidden" name="form" value="'.time().'" />
<p><input type="submit" value="Inloggen" /></p>
</form>
';
}
}
} else {
trigger_error('Fout in query: '.$mysqli->error);
}
} else {
echo 'U bent al ingelogd.';
echo "<a href='logout.php?close=session'>uitloggen</a>";
}
ob_end_flush()
?>
Weet imand wat er fout is ? Please help :) sorry :S
$update is niet ingesteld, dus krijg je een warning.
De rest is hetzelfde verhaal.
$sql = "UPDATE
".$settings['db_sessions_table']." SET gebruikerID='". $userId['ID']."', hash='".$hash."', hash_key='".$hash_key."', datum=NOW(), ip= '". $_SERVER['REMOTE_ADDR'] .'"';
$query = mysql_query($sql);
// Query uitvoeren
if(!$query = mysql_query($sql)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if($mysqli->affected_rows > 0) {
echo 'Je bent ingelogd!';
echo "<a href='logout.php?close=session'>uitloggen</a>";
}
}
} else {
$query = " UPDATE
".$settings['db_login_attempts_table']." SET date_time=NOW(), ip='".$_SERVER['REMOTE_ADDR'] ."', sys_info= '".$_SERVER['HTTP_USER_AGENT']."'";
$query = mysql_query($query);
if(!$result = $mysqli->query($query)) { echo $sql;
trigger_error('Fout in query: '.$mysqli->error);
} else {
if(!$result = $mysqli->query($sql)) {
trigger_error('Fout in query: '.$mysqli->error);
}else {
}
}
gebruik pdo. Als je toch voor veilig gaat. Daarbij is pdo een stuk stricter, dus moet je het wel goed doen.
pdo ?
edit:
*zucht*
http://php.net/manual/en/book.pdo.php
Gewijzigd op 03/07/2010 21:22:26 door wesley Overdijk