Autor Zpráva
tanderzz
Profil *
dobrý večer,
mám tu chybku v právech uživatele, když v databázi nastavím adminovi práva 2 a na webu mám tento kod:
<?php
if(isset($_SESSION['prihlasen']) && $_SESSION['prihlasen'] == 1) {
  switch((int) $_GET['prava']) {
    case 0: echo "<li>
    <h2><b>Student</b>: ".$_SESSION['login'] . "</h2>

    <ul>

      <li> <a href='add_post.php'>Add post to blog</a>
      </li>

      <li> <a href='logout.php?logout=yes'>Logout</a>
      </li>

    </ul>

  </li>";
         break;
    case 1: echo "<li>
    <h2><b>Teacher</b>: ".$_SESSION['login'] . "</h2>

    <ul>

      <li> <a href='add_post.php'>Add post to blog</a>
      </li>

      <li> <a href='add_student.php'>Add student</a>
      </li>

      <li> <a href='logout.php?logout=yes'>Logout</a>
      </li>

    </ul>

  </li>";
        break; //neřeším, když budou chybná práva
    case 2: echo "<li>
    <h2><b>Admin</b>: ".$_SESSION['login'] . "</h2>

    <ul>

      <li> <a href='add_post.php'>Add post to blog</a>
      </li>

      <li> <a href='add_student.php'>Add student</a>
      </li>

      <li> <a href='add_teacher.php'>Add teacher</a>
      </li>
      
      <li> <a href='logout.php?logout=yes'>Logout</a>
      </li>

    </ul>

  </li>";
         break;
  }
} else echo ""; ?>
tak i přesto se mi ukazuje Student: admin


co mám změnit ? :/// nevím si rady díky tanderzz
Tori
Profil
tanderzz:
když v databázi nastavím adminovi práva 2
a potom porovnáváte ne hodnotu v DB/session, ale parametr z URL:
switch((int) $_GET['prava'])
tanderzz
Profil *
?? nerozumím .. vždyt zavolám data z db ne ? :/
Chuchycek
Profil
Tady v tom kodu, žádný data z DB nevoláš, jen porovnáváš s parametrem $_GET['prava'].
tanderzz
Profil *
okey, ale když před to vložím include("db.php"); tak to stejnak nejde .. :/


jak to udělat tak abych ty data vyndal z db a porovnal ? :/ díky tanderzz
Chuchycek
Profil
Když už to děláš, tak jak to děláš, tak hádám, že hodnoty, co se ti ukládají do sessionů, tak jsou vybírány z databáze, tak tam přidej $_SESSION['prava'] a v tom skriptu, co jsi dal sem, změň $_GET['prava'] na $_SESSION['prava'].
tanderzz
Profil *
vyměnil jsem to a pořád nic ://// :(
Chuchycek
Profil
Ukaž tvoje přihlášení.
tanderzz
Profil *
<?php 
ob_start();
session_start(); // Budeme pracovat se session, musíme je nastartovat.
if(isset($_POST['jmeno'])){
    require 'db.php';
        $name = $_POST['jmeno'];
        $pass = md5($_POST['heslo']);
        $query = MySQL_Query("SELECT * FROM `uzivatele` WHERE `jmeno` = '$name' and `heslo` = '$pass'") or die (mysql_error());
        // Vybereme uživatele se zadaným jménem a heslem
            $Vysledek = mysql_fetch_array($query);
                $Vysledek['jmeno']; 
                if($Vysledek['jmeno']){ // pokud tato proměnná obsahuje data, bylo zadané správné jméno a heslo
                    // Do sessions si uložíme pár informací o přihlášeném
                    $_SESSION['prihlasen'] = 1;
                    $_SESSION['login'] = $Vysledek['jmeno'];
                    $_SESSION['UserId'] = $Vysledek['id'];
                    $_SESSION['UserWeb'] = $Vysledek['web'];
                    $_SESSION['UserMail'] = $Vysledek['mail'];
                    $_SESSION['Prava'] = $Vysledek['prava'];
                    $bl="index.php"; 
                    header("location: $bl"); // přesměrujeme na index
                }else{
                    $bl="index.php?Alert=6";
                    header("location: $bl"); // špatně zadané údaje
                    // echo "Zadal jsi špatné údaje";
                }
        mysql_free_result($query);
}else{
    echo "Zde nic není;-)";
}
ob_end_flush();
?>
Chuchycek
Profil
Tak přihlášení je v pořádku.., ale pokud ten tvuj první script nikam neincluduješ a nebo includuješ někam, kde nejsou vubec spuštěný sessin, tak je potřeba, je tam znovu spustit.

<?php
ob_start();
session_start();
if(isset($_SESSION['prihlasen']) && $_SESSION['prihlasen'] == 1) {
  switch((int) $_SESSION['Prava']) {
    case 0: echo "<li>
    <h2><b>Student</b>: ".$_SESSION['login'] . "</h2>
 
    <ul>
 
      <li> <a href='add_post.php'>Add post to blog</a>
      </li>
 
      <li> <a href='logout.php?logout=yes'>Logout</a>
      </li>
 
    </ul>
 
  </li>";
         break;
    case 1: echo "<li>
    <h2><b>Teacher</b>: ".$_SESSION['login'] . "</h2>
 
    <ul>
 
      <li> <a href='add_post.php'>Add post to blog</a>
      </li>
 
      <li> <a href='add_student.php'>Add student</a>
      </li>
 
      <li> <a href='logout.php?logout=yes'>Logout</a>
      </li>
 
    </ul>
 
  </li>";
        break; //neřeším, když budou chybná práva
    case 2: echo "<li>
    <h2><b>Admin</b>: ".$_SESSION['login'] . "</h2>
 
    <ul>
 
      <li> <a href='add_post.php'>Add post to blog</a>
      </li>
 
      <li> <a href='add_student.php'>Add student</a>
      </li>
 
      <li> <a href='add_teacher.php'>Add teacher</a>
      </li>
      
      <li> <a href='logout.php?logout=yes'>Logout</a>
      </li>
 
    </ul>
 
  </li>";
         break;
  }
} else echo ""; ?>
Takže by to mělo vypadat nějak takto.
tanderzz
Profil *
bezva super, už to jede ... já blbec zapoměl na spuštění session .. :/ díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0