Autor Zpráva
coffeephantom
Profil *
Zdravím,
řeším následující problém:

1, Mám vytvořenou funkci na zabezpečené přihlášení (kód dle tutoriálu)
function sec_session_start() {
    $session_name = 'sec_session_id';
    $secure = SECURE;

    $httponly = true;

    if (ini_set('session.use_only_cookies', 1) === FALSE) {
        header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
        exit();
    }
    // Gets current cookies params.
    $cookieParams = session_get_cookie_params();
    session_set_cookie_params($cookieParams["lifetime"],
        $cookieParams["path"], 
        $cookieParams["domain"], 
        $secure,
        $httponly);

    session_name($session_name);
    session_start();
}

kterou na každé stránce nahoře volám:
sec_session_start();

Problém nastane, když chci na stránce zobrazit jinou informaci uloženou v sessions, např. $_session["err"]. Nezobrazí ji.

Když sec_session_start(); přepíšu na session_start();, pak se vypíše, ale zase není funkční přihlášení.
Když ve funkci vymažu session_start(); a dám ho místo toho nahoru na stránku, opět se vypíše, ale nefunguje login.

Neměl by někdo nápad, jak zobrazit uložená sessions a zároveň zůstalo zachováno přihlášení?

Děkuji předem!
jefitto44
Profil
A ako ukladáš iné informácie do toho $session["err"]?
coffeephantom
Profil *
jefitto44:
Ukládám je v php souborech, které používám pro zpracování formulářů.

Např. tedy:
<?
session_start();

...
nějaký kód
....

$session["err"] = 'nějaká chyba';

header přesměrování
?>

Chyba (snad) není v zápisu, protože když stránku (třeba index.php) začnu session_start();, chyba se zobrazí, ale nefunguje přihlášení. Funkce sec_session_start() předpokládá session_start(); na konkrétním místě (viz funkce v prvním příspěvku), takže když stránku začnu session_start(); a až pak sec_session_start(), funguje sice vypsání chyby uložené v $session["err"], ale nefungují sessions určené pro identifikaci přihlášeného uživatele.

Snad jsem se do toho moc nezamotal...
Tori
Profil
Proměnná se jmenuje $_SESSION, velkými písmeny s podtržítkem. Jakýkoli jiný zápis = jiná proměnná.
bestik_63
Profil
voláš tu funkci, kde je session_start() hned na začátku kódu? Tato funkce musí být totiž zapnuta ještě před načtením hlavičky.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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