Probleem met sessies
Het probleem is dat de logout niet doet wat hij zou moeten doen
ik heb hier een paar delen uit mijn script het deel waar hij inloggen,kijkt of sessie passwoord overeen komt met het ip,waar die knop van uitloggen zit en natuurlijk de uitlog pagina :)
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
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
<?php
//inloggen.php
$user = mysql_real_escape_string(trim($_POST[user]));
$pass = md5(trim($_POST[pass]));
$sql = 'SELECT * FROM user WHERE user= "'.$user.'"';
$query = mysql_query($sql) or die (mysql_error());
if (mysql_num_rows($query) == 1){
$inf = mysql_fetch_row($query);
if ($inf[2] == $pass){
session_unset();
$_SESSION[id] = $inf[0];
$_SESSION[check] = md5($inf[2].''.$_SERVER[REMOTE_ADDR]);
echo 'You have succesfully logged in.';
}
//eind deel van inloggen
//check van ip en pass dus $_SESSION[check] dit word uitgevoerd aan het begin van elke pagina
if (isset($_SESSION[id]) && isset($_SESSION[check])){
$sql = 'SELECT id, user, pass, rank FROM user WHERE id="'.$_SESSION[id].'"';
$query = mysql_query($sql) or die (mysql_error());
if (mysql_num_rows($query) == 1){
$inf = mysql_fetch_row($query);
$checken = md5($inf[2].''.$_SERVER[REMOTE_ADDR]);
if ($checken == $_SESSION[check]){
$user = $inf[1];
$rank = $inf[3];
}
}
}
//eind
//knop van uitloggen/inloggen
if (isset($user)&& !empty($user)){
echo '<a href="logout.php">Logout</a>';
}
else {
echo '<a href="inloggen.php">Login</a>';
}
//eind
//uitlog pagina logout.php
session_unset();
echo 'You have succefully logged out! <a href="member.php">Go Back</a>';
//einde
?>
//inloggen.php
$user = mysql_real_escape_string(trim($_POST[user]));
$pass = md5(trim($_POST[pass]));
$sql = 'SELECT * FROM user WHERE user= "'.$user.'"';
$query = mysql_query($sql) or die (mysql_error());
if (mysql_num_rows($query) == 1){
$inf = mysql_fetch_row($query);
if ($inf[2] == $pass){
session_unset();
$_SESSION[id] = $inf[0];
$_SESSION[check] = md5($inf[2].''.$_SERVER[REMOTE_ADDR]);
echo 'You have succesfully logged in.';
}
//eind deel van inloggen
//check van ip en pass dus $_SESSION[check] dit word uitgevoerd aan het begin van elke pagina
if (isset($_SESSION[id]) && isset($_SESSION[check])){
$sql = 'SELECT id, user, pass, rank FROM user WHERE id="'.$_SESSION[id].'"';
$query = mysql_query($sql) or die (mysql_error());
if (mysql_num_rows($query) == 1){
$inf = mysql_fetch_row($query);
$checken = md5($inf[2].''.$_SERVER[REMOTE_ADDR]);
if ($checken == $_SESSION[check]){
$user = $inf[1];
$rank = $inf[3];
}
}
}
//eind
//knop van uitloggen/inloggen
if (isset($user)&& !empty($user)){
echo '<a href="logout.php">Logout</a>';
}
else {
echo '<a href="inloggen.php">Login</a>';
}
//eind
//uitlog pagina logout.php
session_unset();
echo 'You have succefully logged out! <a href="member.php">Go Back</a>';
//einde
?>
Ik heb echt geen idee wat ik fout doet dus ik hoop dat jullie mij kunnen helpen alvast bedankt :) Dit is btw m'n eerste post om hulp volgensmij:$ dus jullie moeten het zeggen als ik iets fout doe :)
Gewijzigd op 01/01/1970 01:00:00 door Martiveen -
doe ipv session_unset(); een session_destroy();
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\member\logout.php on line 2
bumb
De melding is 'Trying to destroy uninitialized session ...'. Zou het kunnen dat je geen 'session_start()' bovenaan in 'logout.php' hebt staan?
Nu doe je iets als sloop die auto zonder dat die weet welke auto. En gelukkig is php zo aardig een foutmelding te geven en niks te doen. (als ik pissig was en kreeg zo'n opdracht zou ik gewoon alles slopen ;))
Wat een domme fout... Kees bedankt :) Ik ben in logout.php een bestand vergeten te includen waar session_start() instaat thank you ^^
plus dat je session_distroy koud in pagina knalt, hij wordt dus altijd uitgevoerd, wel of geen sessie gestart, wel of niet ingelogd...
bart van der veen schreef op 06.07.2007 00:18:
plus dat je session_distroy koud in pagina knalt, hij wordt dus altijd uitgevoerd, wel of geen sessie gestart, wel of niet ingelogd...
Dat zal ik wel nog even veranderen