Autor Zpráva
deryl
Profil *
Zdravim,
narazil jsem na problém při přihlašování v Opeře, v ostatních prohlížečích vše běží v pohodě. Když se přihlásim v Opeře, stránka se mi přesměruje na správnou stránku (dal jsem si tam testovací proměnnou GET, jestli vše běží správně), ovšem aby tam ta session doopravdy byla, musim stránku obnovit ještě je dnou. V IE i v Mozile vše běží ok. Nevíte kde by mohl být problém a jak ho vyřešit? Díky
panther
Profil
deryl:
Nevíte kde by mohl být problém a jak ho vyřešit?
asi je to rozbité. Problematický kód si máme vycucat z prstu?
AM_
Profil
obvykle chyba logiky programu, například takto:

session_start();
$user = $_SESSION['user'];
if(isset($_POST['user'])) $_SESSION['user'] = $_POST['user']; //pozdě - uživatele jsme načetli ze session, když tam ještě nebyl

//tenhle kód je samozřejmě nanic, jen demonstruji problém - tohle bývá častá příčina, proč přihlášení naběhne až po refreshi.

Jinak naprosto souhlasím s pantherem, i to minimum poskytnutých informací je napsáno otřesně - co je testovací proměnná GET?
$GET = 'testovaci promenna'; //jak ti to pomůže?


ovšem aby tam ta session doopravdy byla
kde aby byla? asi jsi myslel, aby byla vytvořená - dost pochybuji, že by nebyla - pokud ten web píšeš aspoň trochu rozumně, session_start() voláš nepodmíněně vždy, takže session je vytvořená od prvního načtení stránky.
deryl
Profil *
Mam index.php a v něm mam úplně nahoře session_start();. Testovací proměnnou GET jsem měl na mysli, že web přesměruji na ?log=1 po úspěšném přihlášení.
Co se týče přihlášení, jakmile souhlasí nick a heslo uživatele, přiřazuju sessions hodnoty:
   
session_regenerate_id();
   $_SESSION["prihlasen"] = true;
   $_SESSION["UserId"] = $data[id];
   $_SESSION["login"] = $data[login];
   $_SESSION["heslo"] = $data[heslo];
   header("Location: /?log=1");
AM_
Profil
zkus vyhodit to session_regenerate_id(), víc z toho asi nevyvěštím.
jinak máš to syntakticky špatně:
$_SESSION["UserId"] = $data['id'];

atd.

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: