Autor Zpráva
Fastman
Profil
Zdravím,

Potřeboval bych poradit ohledně Session. Normálně se přihlásím a přesměruje mě to na /admin/index.php, když zadám špatné heslo, tak na index.php?Alert=6. To je v pořádku. Problém je, že se neuloží SESSION.

Kód odesílajícího formuláře
<?php
ob_start();
/*
* Tetno soubor zjisti zda se takovy uzivatel s takovym heslem v databazi nachazi.
* Pokud ano, do sessions o tom ulozime informaci.
* Jinak se samozrejme presmerujeme zpet a dame uzivateli vedet, ze zadal spatne udaje
*/
session_start(); // Budeme pracovat se session, musíme je nastartovat.
if(isset($_POST['uzivatel'])){
  require_once 'db.php';
  $name = $_POST['uzivatel'];
  $pass = md5($_POST['heslo']);
    $query = mysql_query("SELECT * FROM `seznam` WHERE `uzivatel` = '$name' and `heslo` = '$pass'") or die (mysql_error());
    // Vybereme uživatele se zadaným jménem a heslem
      $Vysledek = mysql_fetch_array($query);
        if($Vysledek['uzivatel']){ // 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['uzivatel'];
          $bl="./admin/index.php";
          header("location: $bl"); // přesměrujeme na index
          exit;
        }else{
          $bl="index.php?Alert=6";
          header("location: $bl"); // špatně zadané údaje
          exit;
          // echo "Zadal jsi špatné údaje";
        }
    mysql_free_result($query);
}else{
  echo "Zde nic není.";
}
ob_end_flush();
?>

Všechno se přihlásí, ale zde mám kontrolu ve složce /admin/ souboru index.php (aby se tam někdo nedostal bez přihlášení).
<?php
/*
* Pokud uživatel není přihlášený, místo obsahu se mu ukáže tato hláška.
* Tento kód vložte tam, kde chcete aby se dostali jen přihlášení
*/
if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){
  echo "<h1>Tato stránka je jen pro registrované</h1>";
  exit;
}
?>
Proč, ale po přihlášení to píše "Tato stránka je jen pro registrované"? Mohl by mi prosím někdo poradit? Mnohokrát děkuji za odpovědi.
jenikkozak
Profil
V každém souboru, ve kterém chceš pracovat s polem $_SESSION, musíš na začátku spustit funkci session_start().
Fastman
Profil
Zdravím,

Děkuji Vám! Mám tu ale menší problém.
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /administrace/admin/index.php:19) in /administrace/admin/index.php on line 27


Již vše funguje, musel jsem dát session na začátek souboru
<?php
session_start();
?>
jenikkozak
Profil
Nejčastější potíže s PHP (FAQ) » headers already sent…

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: