problém (asi) se sessions nebo cache...
Napsal: úte 27. lis 2012, 11:13
Ahoj, pro školu jsem dělal jeden web (php,mysql,html5), kam se přihlašují jednotliví uživatelé...vše fungovalo půl roku dobře ale poslední měsíc se objevil divný problém, který ani nedokážu nasimulovat:
Uživatel zadá přihlašovací jméno a heslo a odešle form do příslušného php, kde se má vše ověřit a v případě že jméno a heslo je ok, tak se do asi 8 session ukládají různá data z databáze + se do jedné session vloží 1 jako že je uživatel přihlášen...
jak to asi v php je:
A TEĎ PROBLÉM:
už dvou lidem se stalo, že zadali jméno a heslo dobře a i do logu se zaznamenalo že se přihlásil uživatel (tedy se dostalo i na to ukládání do session, ale pak je to hodilo na stránku odkud se přihlašovali ale přihlášení nebyli (jako by se do session neuložilo nic)...
-zjednodušený příklad (nešlo to do if, ale else):
Já používám Operu a nikdy se mi to nestalo, oni používají FF a teď se jim to stalo poprvé...když jsem to zkusil přes FF tak se mi to nepodařilo navodit...
Když smazali cache ve FF (nebo otevřeli nové okno FF), tak to prý šlo...
Co s tím? Chtěl jsem ještě zkusit zakázat cache (pragma apod...), jenže nevím jak to udělat validně v HTML5...
Děkuji...
Uživatel zadá přihlašovací jméno a heslo a odešle form do příslušného php, kde se má vše ověřit a v případě že jméno a heslo je ok, tak se do asi 8 session ukládají různá data z databáze + se do jedné session vloží 1 jako že je uživatel přihlášen...
jak to asi v php je:
Kód: Vybrat vše
soubor login.php kam se odesílá form:
<?php
ob_start();
session_start(); // Budeme pracovat se session, musíme je nastartovat.
require '../inc/db.php'; //připojení do DBS
if(isset($_POST['logni'])){//pokud odeslán form pro přihlášení
.....
....//kontrola zda jméno a heslo sedí
...
if(){//pokud jmeno a heslo ok
...//načtení dat z databáze a uložení do sessions-např:
session_regenerate_id();
$_SESSION['prihlasen'] = 1;
$_SESSION['Prava'] = $Vysledek['prava'];
$_SESSION['jmeno_real'] = $Vysledek['jmeno_real'];
$_SESSION['prijmeni_real'] = $Vysledek['prijmeni_real'];
...a tak dál (jen různé názvy session...
//zde ještě zápis do DBS -do logu že proběhlo přihlášení
//a přesměrování na stranu odkud se přihlašovalo:
$strana=$_POST['strana'];
if($strana==''){
$strana="page1";
}
$bl="../index.php?page=".$strana;
header("location: $bl"); // přesměrujeme na úvodní stranu...
}else{//pokud špatné jmeno nebo heslo}
}else{pokud nebyl odeslán form pro přihlášení...}.....
ob_end_flush();//úplně na konci php
?>
už dvou lidem se stalo, že zadali jméno a heslo dobře a i do logu se zaznamenalo že se přihlásil uživatel (tedy se dostalo i na to ukládání do session, ale pak je to hodilo na stránku odkud se přihlašovali ale přihlášení nebyli (jako by se do session neuložilo nic)...
-zjednodušený příklad (nešlo to do if, ale else):
Kód: Vybrat vše
hlavní stránka:
if($_SESSION['prihlasen'] == 1){
//ukáže se neveřejné menu apod...přihlašovací form se neukáže....
}else{
ukáže se normální stránka bez neveřejného menu ale s přihlašovacím formem
}
Když smazali cache ve FF (nebo otevřeli nové okno FF), tak to prý šlo...
Co s tím? Chtěl jsem ještě zkusit zakázat cache (pragma apod...), jenže nevím jak to udělat validně v HTML5...
Děkuji...