Autor | Zpráva | ||
---|---|---|---|
sir_lamoid Profil |
#1 · Zasláno: 5. 8. 2012, 21:22:16
Dobrý den,
mám tu problém chci aby na danou stránku měly přístup jen daní uživatelé: mám stránky: test.php <?php session_start(); include "include/funkce.php"; include "include/safe.php"; $rules = array("admin", "guest"); checkRules(); ?> funkce.php <?php function checkLogin(){ if( isset($_SESSION["nick"]) && isset($_SESSION["id"]) && isset($_SESSION["email"])) { return true; } else { return false; } } function checkRules() { $userrules = $_SESSION["opravneni"]; if($userrules!=$rules) { header("Location: admin.php?warn=Nemáte oprávnění"); } } ?> safe.php <?php session_start(); include "funkce.php"; if (checkLogin()==FALSE) { Header('Location: ../login.php'); } ?> a admin.php <?php include('include/safe.php'); ?> <!DOCTYPE HTML> <html lang="cs-cz" dir="ltr"> <head> <meta charset="UTF-8"/> <meta http-equiv="content-type" content="text/html" /> <meta name="author" content="sir_lamoid" /> <meta http-equiv="Description" content="Stránky plné typu na prežití pri zombie apokalypse. Mapa užitecných míst, tipy zombie, zbraní, dopravní prostredky, úkryty." /> <meta http-equiv="Keywords" content="zombie, apokalypsa, zbrani, doprava, konec sveta, 2012, world end, gun, map, tipy, tips, alive, death, nemrtvý" /> <link rel="stylesheet" href="style/style.css" /> <link href="favicon.png" rel="icon" type="image/png" /> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <title>Administrace</title> </head> <body> <div id="body_admin"> <?php $warn=$_GET["warn"]; echo $warn; ?> </div> </div> <footer id="paticka"> <span id="reklama"><endora></span> <span id="copyright">© 2012 Jakub Stejskal - Všechna práva vyhrazena</span> </footer> </body> </html> |
||
David Klouček Profil |
A v čem je problém? Jinak přesměrování pomocí hlaviček ze stránky, kam nemá mít uživatel přístup, je nebezpečný, stačí aby ignoroval hlavičky. Za header() volej ještě die().
|
||
sir_lamoid Profil |
#3 · Zasláno: 5. 8. 2012, 22:19:25
po přístupu na test.php jako přihlášený uživatel my to vypisuje
Fatal error: Cannot redeclare checklogin() in /home/users/xxx/xxx/web/include/funkce.php on line 2 |
||
David Klouček Profil |
2× deklaruješ funkci checklogin(). Spustíš soubor test.php, ten includuje nejdřív funkce.php, potom safe.php, kterej znovu includuje funkce.php. Máš 2 možnosti:
1. vymyslet jinou strukturu 2. použít include_once namísto include, který zabrání vícenásobnýho vložení stejnýho souboru |
||
sir_lamoid Profil |
#5 · Zasláno: 7. 8. 2012, 00:37:59
Jak udělat aby ten skript fungoval:
Pokud proměná $_SESSION[opravneni] obsahuje aspon jednu hodnotu z proměnné $rules ala potřebuji aby proměnná rules obsahovala třeba jak adminy tak uživatele což jsem si řekl že by to mělo jít pomocí array ale ono to tak nejde... neháže to nějákou chybu nic... :/ prostě aji když session obsahuje guest tak to háže chybu že uživatel nemá práva zde jsou mé kódy: admin.php <?php include('include/funkce.php'); checkLogin(); ?> <!DOCTYPE HTML> <html lang="cs-cz" dir="ltr"> <head> <meta charset="UTF-8"/> <meta http-equiv="content-type" content="text/html" /> <meta name="author" content="sir_lamoid" /> <link rel="stylesheet" href="style/style.css" /> <link href="favicon.png" rel="icon" type="image/png" /> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <title>Administrace</title> </head> <body> <div id="body_admin"> <?php $warn=$_GET["warn"]; echo "<b>".$warn."</b>"; ?> </div> </div> <footer id="paticka"> <span id="reklama"><endora></span> <span id="copyright">© 2012 Jakub Stejskal - Všechna práva vyhrazena</span> </footer> </body> </html> include/funkce.php <?php function checkLogin(){ session_start(); global $rules; if(!isset($_SESSION["nick"])) { header("Location: login.php?warn=Nejste přihlášen"); } } function checkRules() { session_start(); global $rules; if($_SESSION["opravneni"]!=$rules) { header("Location: admin.php?warn=Nemáte oprávnění"); } } ?> <?php include "include/funkce.php"; $rules = array("guest"); checkRules(); ?> |
||
Časová prodleva: 12 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0