Autor Zpráva
sir_lamoid
Profil
Dobrý den,
potřeboval bych dostat do funkce hodnotu z session
vymyslel jsem kod
<?php
function checkPrava() {
    $potrebnaprava=$GLOBALS($_SESSION["opravneni"]);
    if($prava!=$potrebnaprava) {
        echo '<!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, zbranì, 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>Špatné oprávnění</title>
</head><body><center><h1>Nemáte dostatečná oprávnění</h1></center></body></html>';
    }
} ?>

vypysuje to hlašku u řádku s $potrebnaprava=$GLOBALS($_SESSION["opravneni"]);¨


Fatal error: Function name must be a string in /home/users/xx/xx/web/include/funkce.php on line 29
marcus33cz
Profil
Ta funkce je naprosty nesmysl a programatorsky humus... ale pokud chces globalni session, tak vez, ze promenna $_SESSION uz je globalni sama od sebe.
Staci pred vypisem stranky zavolat session_start() a lze pouzivat kdekoliv.

Funkce je chybna:
- $GLOBALS se uz nepouziva
- $prava si nekde vymyslis a pak pouzivas takze ti to nemuze fungovat
- HTML kod nepatri do funkce ale do sablony
- je zvykem psat jmena funkce anglicky
sir_lamoid
Profil
OK,
jmena funkci anglicky to je pouze na programatorovy a nemá to vliv na funkci kodu.
Takže vám popíšu čeho chci dosáhnout:
Chci se přihlásit a zapsat do session uživatelovy práva-tohle mám vyřešené zde:
<?php

/**
 * @author sir_lamoid
 * @copyright 2012
 */
include "include/dibi.min.php";
dibi::connect(array(
    'driver'   => 'mysql',
    'host'     => 'localhost',
    'username' => 'xxx',
    'password' => 'xxx',
    'database' => 'xx',
    'charset'  => 'utf8',
));
dibi:;
$nick = $_POST[nick];
$heslo = md5($_POST['heslo']);
session_start();
$dotaz = mysql_query("SELECT * FROM uzivatele WHERE nick='".mysql_real_escape_string($nick)."' AND heslo='$heslo'");
     if (mysql_num_rows($dotaz) > 0)  {
       $uzivatel = mysql_fetch_object($dotaz);
       $_SESSION["id"] = $uzivatel->id;
       $_SESSION["nick"] = $uzivatel->nick;
       $_SESSION["email"] = $uzivatel->email;
       $_SESSION["opravneni"] = $uzivatel->opravneni;
       header("Location: index.php");
     } else {
       echo "Špatné méno nebo heslo skus to znova.";
       header("Location: login.php");
     }


?>

věci ohledně me zdechlosti použít dibi sem si už vyslechl :D

dále mám administrační rozhraní kde kontroluji jestli je uživatel přihlášen:
<?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">


</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>

a include/safe.php
<?php
session_start();
include "funkce.php";
if (checkLogin()==FALSE)
{
    Header('Location: ../login.php');
}
?>

a funkce.php
<?php
function formular(){

echo '<div id="login">';
echo '<form action="loginnow.php" method="POST">';
echo '<label for="nick">Přihlašovací jméno/Login</label><br />';
echo '<input  type="text" name="nick" id="nick"placeholder="Přihlašovací jméno/Login"/><br />';
echo '<label for="heslo">Heslo/Password</label><br />';
echo '<input  type="password" name="heslo" id="heslo" placeholder="Heslo/Password"/><br />';
echo '<input  type="submit" name="tlacitko" class="tlacitko" value="Přihlásit/Sign In"/>';
echo '<input type="button" value="Zaregistrovat se/Sign Up" class="tlacitko" onclick="location.href=registrovat.php"/>';
echo '</form> ';
echo '</div>';
 }

function checkLogin(){
    if(    isset($_SESSION["nick"]) &&
        isset($_SESSION["id"]) &&
        isset($_SESSION["email"]))
    {
        return true;
    }
    else
    {
        return false;
    }
}
function checkPrava() {
    $potrebnaprava = $_SESSION["opravneni"];
    global $prava;
    if($prava != $potrebnaprava) {
        echo '<!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, zbranì, 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>Špatné oprávnění</title>
</head><body><center><h1>Nemáte dostatečná oprávnění</h1></center></body></html>';
    }
}
?>

v test.php se má kontrolovat jestli má uživatel jedno z potřebných oprávnění (ty jsou zapsány v poly)
<?php

/**
 * @author 
 * @copyright 2012
 */

include "include/funkce.php";
include "include/safe.php";
$prava = array("admin", "guest");
checkPrava();
?>



ala zjednodušeně:
člověk se přihlásí půjde do administrace tam server zjistí jestli je uživatel přihlášen pokud ano pustí ho to na administrační stránku pokud ne pošle ho to zpět na přihlašovací formulář
v administračním rozhraní přihlášený uživatel klikne na odka dejme tomu editovat nějákou stránku na editační stránce se zjistí jestli má danný uživatel dostatečná práva pokud ano může editovat pokud ne vypíše mu to chybu a přesměruje ho to na administrační stránku s výpisem dalších akcí
Toto téma je uzamčeno. Odpověď nelze zaslat.