Autor Zpráva
sir_lamoid
Profil
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">&copy; 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
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
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">&copy; 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í");
    }
}
?>
test.php
<?php
include "include/funkce.php";
$rules = array("guest");
checkRules();
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.