Ben met sessies aan het experimenteren en heb de volgende code om user validatie te doen en te 'onthouden' dat iemand is ingelogd.
So far, so good. Username wordt gevalideerd en $LoggedIn wordt gezet.
op het moment dat ik echter de sessie wil beindigen door in logout.php het volgende te doen:
dan wordt de sessie dus niet beeindigd
Wat mis ik
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
| <? function Check_Validation($ID) { /* Check to see if the requested Directory requires validation */ /* Returns 0 for no validation and 1 for Validation */ $Validation_Query="SELECT * FROM Directory WHERE ID=$ID"; $Validation_Result=mysql_query($Validation_Query) or die("Query Failed - Validation Query: $Validation_Query"); $Validation_Total=mysql_num_rows($Validation_Result); if ( $Validation_Total == 0 ) { die("Invalid Directory ID"); } else { $Validation_Line=mysql_fetch_row($Validation_Result); $Validation=$Validation_Line[3]; } return $Validation; } function Validate() { global $PHP_AUTH_USER, $PHP_AUTH_PW, $LoggedIn; // Check to see if $PHP_AUTH_USER already contains info if (!isset($PHP_AUTH_USER)) { // If empty, send header causing dialog box to appear header('WWW-Authenticate: Basic realm="My Private Stuff"'); header('HTTP/1.0 401 Unauthorized'); exit; } else if (isset($PHP_AUTH_USER)) { // If non-empty, check the database for matches // Formulate the query $sql = "SELECT * FROM Users WHERE UserName='$PHP_AUTH_USER' and Password='$PHP_AUTH_PW'"; // Execute the query and put results in $result $result = mysql_query($sql); // Get number of rows in $result. 0 if invalid, 1 if valid. $num = mysql_numrows($result); if ($num != "0") { session_start(); if (!$PHPSESSID) { $LoggedIn=1; session_register('LoggedIn'); } else if ( !$LoggedIn ) { $LoggedIn=1; session_register('LoggedIn'); } } else { header('WWW-Authenticate: Basic realm="My Private Stuff"'); header('HTTP/1.0 401 Unauthorized'); echo 'Authorization Required.'; exit; } } } /* Main */ $Database=mysql_connect(); mysql_select_db("Files"); /* Verify if asked for ID */ if (empty($Dir)){ die ("ERROR: Directory ID Not given"); } $Dir_ID=$Dir; $NeedUser=Check_Validation($Dir_ID); if ( $NeedUser && !isset($Update) ) { Validate(); print("LoggedIn: $LoggedIn<BR>"); print("SessID : $PHPSESSID<BR>"); print("<A href=\"logout.php\">End Session</A>"); } mysql_close(); ?> |
So far, so good. Username wordt gevalideerd en $LoggedIn wordt gezet.
op het moment dat ik echter de sessie wil beindigen door in logout.php het volgende te doen:
PHP:
1
2
3
4
5
6
7
| <? session_start(); print("Pre-Loggedin: $LoggedIn<BR>"); session_unset(); session_destroy(); print("You've been successfully logged out, please wait"); ?> |
dan wordt de sessie dus niet beeindigd
Wat mis ik