Inlog systeem
Ik heb gebruik gemaakt van een tutorial nml: veilig login systeem.
Voor zover krijg ik het werkend alleen blijft de sessie niet goed in stand.
Ik ga naar een beveiligde pagina waar ik de check.php heb geincluded en echo alle session values maar niks staat er meer in.
Ik heb ook in de login.php een paar echo's gemaakt om te kijken of na de post de sessie values er nog instaan en dat werkt.
Alvast bedankt!
login.php
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
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
<?php
session_start();
require("db_inc.php");
// functie voor random key
function make_rand($length) {
$chars = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1234567890";
$rand = '';
for ($i = 1; $i <= $length; $i++) {
$num = rand(0, strlen($chars));
$rand .= substr($chars, $num, 1);
}
return $rand;
}
//debuggen WERKT!
echo $_SESSION['user_id'];
echo $_SESSION['session_id'];
echo $_SESSION['user_ip'];
echo $_SERVER['REMOTE_ADDR'];
// kijk of formulier is verzonden
if ($_SERVER['REQUEST_METHOD'] == "POST") { // indien verzonden
$query= mysql_query("SELECT * FROM tblUsers WHERE username = '" . addslashes($_POST['username']) . "'");
if (mysql_num_rows($query) > 0) { // als er een gebruiker is gevonden
$user = mysql_fetch_object($query);
if ($user->password == $_POST['password_encrypted']) { // als het wachtwoord klopt
$_SESSION['user_id'] = $user->username;
$_SESSION['session_id'] = make_rand(50); // maak een random string voor sessie session_id mbv van functie
//zet de sessie id in de db zodat we hem later kunnen controleren
mysql_query("UPDATE tblUsers SET session_id = '" . $_SESSION['session_id'] . "' WHERE username = '" . $_SESSION['user_id'] . "'");
$_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
echo 'Inloggen is gelukt!';
echo '<br><a href="../index.php">Ga verder..</a>';
} else { // ongeldig wachtwoord
echo 'Ongeldig wachtwoord/gebruikersnaam!';
}
} else { // ongeldige gebruikersnaam
echo 'Ongeldig wachtwoord/gebruikersnaam!!';
}
} /* else { hier zou je het formulier kunnen zetten } */
?>
session_start();
require("db_inc.php");
// functie voor random key
function make_rand($length) {
$chars = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1234567890";
$rand = '';
for ($i = 1; $i <= $length; $i++) {
$num = rand(0, strlen($chars));
$rand .= substr($chars, $num, 1);
}
return $rand;
}
//debuggen WERKT!
echo $_SESSION['user_id'];
echo $_SESSION['session_id'];
echo $_SESSION['user_ip'];
echo $_SERVER['REMOTE_ADDR'];
// kijk of formulier is verzonden
if ($_SERVER['REQUEST_METHOD'] == "POST") { // indien verzonden
$query= mysql_query("SELECT * FROM tblUsers WHERE username = '" . addslashes($_POST['username']) . "'");
if (mysql_num_rows($query) > 0) { // als er een gebruiker is gevonden
$user = mysql_fetch_object($query);
if ($user->password == $_POST['password_encrypted']) { // als het wachtwoord klopt
$_SESSION['user_id'] = $user->username;
$_SESSION['session_id'] = make_rand(50); // maak een random string voor sessie session_id mbv van functie
//zet de sessie id in de db zodat we hem later kunnen controleren
mysql_query("UPDATE tblUsers SET session_id = '" . $_SESSION['session_id'] . "' WHERE username = '" . $_SESSION['user_id'] . "'");
$_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
echo 'Inloggen is gelukt!';
echo '<br><a href="../index.php">Ga verder..</a>';
} else { // ongeldig wachtwoord
echo 'Ongeldig wachtwoord/gebruikersnaam!';
}
} else { // ongeldige gebruikersnaam
echo 'Ongeldig wachtwoord/gebruikersnaam!!';
}
} /* else { hier zou je het formulier kunnen zetten } */
?>
check.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if (isset($_SESSION['user_id'], $_SESSION['user_ip'], $_SESSION['session_id']) && $_SESSION['user_ip'] == $_SERVER['REMOTE_ADDR']) {
// sessies bestaan en ip klopt, dus gaan we verder met controleren van sessie session_id
$session_id = mysql_fetch_object(mysql_query("SELECT session_id FROM users WHERE user_id = '" . $_SESSION['user_id'] . "'"));
if ($_SESSION['session_id'] == $session_id->session_id) {
/*
alles klopt, dus we zijn hier klaar
eventueel zou je hier mooi iets kunnen zetten wat bijhoud wie waar is geweest
*/
} else { // session_id klopt niet
header('location: login/aanmelden.php'); // stuur door naar login pagina
}
} else { // sessies bestaan niet, of ip is onjuist
//Debug:
echo 'sessie klopt niet';
echo $_SESSION['user_id'];
echo $_SESSION['session_id'];
echo $_SESSION['user_ip'];
//header('location: login/aanmelden.php'); // stuur door naar login pagina (alweer :-) )
}
?>
if (isset($_SESSION['user_id'], $_SESSION['user_ip'], $_SESSION['session_id']) && $_SESSION['user_ip'] == $_SERVER['REMOTE_ADDR']) {
// sessies bestaan en ip klopt, dus gaan we verder met controleren van sessie session_id
$session_id = mysql_fetch_object(mysql_query("SELECT session_id FROM users WHERE user_id = '" . $_SESSION['user_id'] . "'"));
if ($_SESSION['session_id'] == $session_id->session_id) {
/*
alles klopt, dus we zijn hier klaar
eventueel zou je hier mooi iets kunnen zetten wat bijhoud wie waar is geweest
*/
} else { // session_id klopt niet
header('location: login/aanmelden.php'); // stuur door naar login pagina
}
} else { // sessies bestaan niet, of ip is onjuist
//Debug:
echo 'sessie klopt niet';
echo $_SESSION['user_id'];
echo $_SESSION['session_id'];
echo $_SESSION['user_ip'];
//header('location: login/aanmelden.php'); // stuur door naar login pagina (alweer :-) )
}
?>
aanmelden.php
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
<script type="text/javascript" src="sha1.js"></script>
<script type="text/javascript">
function _submit() {
document.getElementById('password_encrypted').value = hex_sha1(document.getElementById('password').value);
document.getElementById('password').value = '';
}
</script>
<form action="login.php" method="post" onsubmit="return _submit();">
Gebruikersnaam:<input type="text" name="username" />
Wachtwoord:<input type="password" id="password" />
<input type="hidden" id="password_encrypted" name="password_encrypted" value="" />
<input type="submit" value="Login" />
</form>
<script type="text/javascript">
function _submit() {
document.getElementById('password_encrypted').value = hex_sha1(document.getElementById('password').value);
document.getElementById('password').value = '';
}
</script>
<form action="login.php" method="post" onsubmit="return _submit();">
Gebruikersnaam:<input type="text" name="username" />
Wachtwoord:<input type="password" id="password" />
<input type="hidden" id="password_encrypted" name="password_encrypted" value="" />
<input type="submit" value="Login" />
</form>
Er zijn nog geen reacties op dit bericht.