Ik ben een systeem aan het maken waarmee ik kan bepalen of een pagina voor een surfer wel of niet toegankelijk is.
Er zijn drie groepen: guest, user en admin.
De beveiliging van een pagina gebeurt door bovenaan de pagina dit te zetten:
De functie CheckPagePerm() ziet er als volgt uit:
Ik heb de andere functies ook laten staan, maar daar moet je maar ff omheen kijken.
Het probleem is dat ik de volgende error krijg:
Maar ik zou niet weten waarom SESSION_UserID niet bestaat?!? Ik controleer notabene nog of hij er is en zo niet dan doe ik een session_start();
Iemand een idee?
Er zijn drie groepen: guest, user en admin.
De beveiliging van een pagina gebeurt door bovenaan de pagina dit te zetten:
PHP:
1
| <?if (!session_is_registered("SESSION_UserID")) { session_start();}include("inc/functions.php");CheckPagePerm("guest");?> |
De functie CheckPagePerm() ziet er als volgt uit:
PHP:
1
| <?# All rights reserved - Michael Kaandorp 2002function QueryDo($inQuery = 0) { include("inc/config.php"); mysql_connect($CFG_DbHost, $CFG_DbUser, $CFG_DbPass) or die("Unable to connect!"); mysql_select_db($CFG_DbName) or die("Unable to select database: $CFG_DbName!"); $result = mysql_query($inQuery) or die("Error in query: $inQuery. ".mysql_error()); return $result;}function UserIsAdmin($inUserID = 0) { $query = "SELECT isAdmin FROM users WHERE user_id='$inUserID'"; $result = QueryDo($query); $r = mysql_fetch_array($result); $isAdmin = $r["isAdmin"]; if ($isAdmin == "1") { return TRUE; } else { return FALSE; }}function DrawToolBar() { if (session_is_registered("SESSION_UserID")) { $ToolBarText = "User: $SESSION_firstname $SESSION_lastname"; } else { $ToolBarText = "<a href=login.php>Login</a>"; } echo" <table border=0 width=100% cellspacing=0 cellpadding=2> <tr> <td align=right bgcolor=#000000>$ToolBarText</td> </tr> </table> ";}function CheckPagePerm($ReqLevel="") {# Usage: On top of every page you should specify the required userlevel by calling this function: CheckPagePerm($ReqLevel); if ($ReqLevel) { if ($ReqLevel =="guest") { # Come on in! } else { if ($ReqLevel =="user") { if (IsLoggedIn() == TRUE) { if (CheckIfAllowed("$SESSION_UserID") == TRUE) { # Come on in! } else { # User is not allowed to view this page. ShowError("2"); } } else { # Not logged in. ShowError("1"); } } if ($ReqLevel =="admin") { if (IsLoggedIn() == TRUE) { if (UserIsAdmin("$SESSION_UserID") == TRUE) { # Come on in! } else { # User is not allowed to view this page. ShowError("2"); } } else { # Not logged in. ShowError("1"); } } } } else { # Design error! Required security level to view page not set! ShowError("3"); } }function IsLoggedIn() { if (session_is_registered("SESSION_UserID")) { return TRUE; } else { return FALSE; }}function CheckIfAllowed($inUserID = "") { return TRUE; }function ShowError($ErrNo = "") { switch ($ErrNo) { case 1: $message = "This page requires you to login. You are not logged in at the moment!"; break; case 2: $message = "You are not allowed to view this page!"; break; case 3: $message = "Design error! Required security level to view page not set!"; break; default: $message = "Unknown error! Please contact your system administrator!"; break; } echo $message;}?> |
Ik heb de andere functies ook laten staan, maar daar moet je maar ff omheen kijken.
Het probleem is dat ik de volgende error krijg:
code:
1
| Warning: Undefined variable: SESSION_UserID in /usr/local/apache/htdocs/photobase/inc/functions.php on line 47 |
Maar ik zou niet weten waarom SESSION_UserID niet bestaat?!? Ik controleer notabene nog of hij er is en zo niet dan doe ik een session_start();
Iemand een idee?