inlog en uitlog sessie
ik moet een inlogsysteem schrijven voor een gedeelte van mijn site. Nu is het zo ingedeeld dat er een index.php is, die alle pagina's in zich laad die de user bezoekt, in de variabele $inhoud.
inloggen gebeurd in de file login.php, uitloggen via logout.php. de layout staat in de layout.php. Dat is dus de structuur.
om te controlleren of iemand ingelogd is, laat de layout de sessie variabelen zien die er op dat moment zijn.
Het probleem is dat als ik inlog als user, hij pas na refreshen de sessie gegevens laad zien op het scherm. vervolgens wilt hij de de user niet uitloggen, ook al geef ik aan dat hij dat moet doen.
dit is de index.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
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
<?php session_start();
$session_id = session_id();
include("mysql.php");
include("util.php");
$menu = "<form method='post' action='../portfolio/logout.php'>
<input type='submit' />Logout
</form><br/>
<a href='main.php'>main</a>";
$inhoud = "Je hebt nog geen inhoud";
if(!isset($_GET['page'])) {
$page = "login.php";
session_register("level");
session_register("email");
session_register("achternaam");
session_register("voornaam");
session_register("username");
} else {
$page = make_safe($_GET['page']) . ".php";
}
if(file_exists($page)) {
include($page);
} else {
header("location: ../portfolio/index.php?page=error&type=404");
die();
}
include("layout.php");
?>
$session_id = session_id();
include("mysql.php");
include("util.php");
$menu = "<form method='post' action='../portfolio/logout.php'>
<input type='submit' />Logout
</form><br/>
<a href='main.php'>main</a>";
$inhoud = "Je hebt nog geen inhoud";
if(!isset($_GET['page'])) {
$page = "login.php";
session_register("level");
session_register("email");
session_register("achternaam");
session_register("voornaam");
session_register("username");
} else {
$page = make_safe($_GET['page']) . ".php";
}
if(file_exists($page)) {
include($page);
} else {
header("location: ../portfolio/index.php?page=error&type=404");
die();
}
include("layout.php");
?>
en de 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
43
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
<?php
$hulp = $_SERVER["PHP_SELF"];
if (!empty($_POST)) {
// dus er is een inlogpoging gedaan
$query = "SELECT * from gebruiker WHERE username='" . $_POST["ID"] ."' AND hash = PASSWORD('" . $_POST["PASS"]. "')";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
echo ("login correct");
$row = mysql_fetch_array($result, MYSQL_NUM);
$username = $row[0];
$voornaam = $row[1];
$achternaam = $row[2];
$email = $row[3];
$level = $row[5];
}
else {
die(); header("location: ../portfolio/index.php");
}
}
$inhoud = ("
<div id='text1'>
<h2> Login please...</h2>
<form method='post' action=$hulp>
ID: <input type='text' name='ID' />
Password: <input type='password' name='PASS' />
<input type='submit' />
</form>
</div>");
?>
$hulp = $_SERVER["PHP_SELF"];
if (!empty($_POST)) {
// dus er is een inlogpoging gedaan
$query = "SELECT * from gebruiker WHERE username='" . $_POST["ID"] ."' AND hash = PASSWORD('" . $_POST["PASS"]. "')";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
echo ("login correct");
$row = mysql_fetch_array($result, MYSQL_NUM);
$username = $row[0];
$voornaam = $row[1];
$achternaam = $row[2];
$email = $row[3];
$level = $row[5];
}
else {
die(); header("location: ../portfolio/index.php");
}
}
$inhoud = ("
<div id='text1'>
<h2> Login please...</h2>
<form method='post' action=$hulp>
ID: <input type='text' name='ID' />
Password: <input type='password' name='PASS' />
<input type='submit' />
</form>
</div>");
?>
en de logout:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
session_unset($session_id);
header("location: ../portfolio/index.php");
if(isset($_SESSION['username'])) {
unset($_SESSION['username']);
unset($_SESSION['voornaam']);
unset($_SESSION['achternaam']);
unset($_SESSION['level']);
unset($_SESSION['email']);
unset($_POST["ID"]);
unset($_POST["PASS"]);
}
?>
session_unset($session_id);
header("location: ../portfolio/index.php");
if(isset($_SESSION['username'])) {
unset($_SESSION['username']);
unset($_SESSION['voornaam']);
unset($_SESSION['achternaam']);
unset($_SESSION['level']);
unset($_SESSION['email']);
unset($_POST["ID"]);
unset($_POST["PASS"]);
}
?>
ik hoop dat het niet teveel is om in één keer te vragen, maar het is lastig te begrijpen waarom de uitlog code niet werkt...en opnieuw inloggen onder een andere user werkt ook niet; de sessie variabelen bovenin blijven constant de eerste user aangeven.
Er zijn nog geen reacties op dit bericht.