Stránka 1 z 1

problém (asi) se sessions nebo cache...

Napsal: úte 27. lis 2012, 11:13
od Václav Sedlář
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:

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 
?>
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):

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
}
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...

Re: problém (asi) se sessions nebo cache...

Napsal: čtv 29. lis 2012, 19:44
od arxeiss
Sessions se ukládají do souborů na serveru, je možné, že prostě zrovna systém nedovolil soubor vytvořit. Nebo se ukládají do jednoho a někdo jiný zapisoval? Nevím jak to přesně chodí, ale možná bych viděl problém v tom.

Každopádně, jestli se to stalo 2x za půl roku, tak to neřeš... Já taky řešil problém, kdy mi zdánlivě jasný dotaz na DB vyhazoval náhodné výsledky, ani na StackOverflow mi nedokázali poradit, ale dělo se o i 4x denně, tak jsem to musel předělat, toto bych fakt neřešil dokud to nebude opravdu obtěžovat pořád...

Re: problém (asi) se sessions nebo cache...

Napsal: čtv 29. lis 2012, 21:39
od Václav Sedlář
Díky, také jsem to svedl na server...nechám to tedy být...

ještě jedna věc - Opera a FF mají funkci pro obnovení relace (prostě když mám otevřeno 5 tabů a zavřu prohlížeč, tak při opětovném spuštění se znova načtou ty poslední taby...) a když mám v opeře otevřené ty mé stránky a přihlásím se a pak bez odhlášení zavřu operu, tak při opětovném spuštění se musím přihlásit - to je dobře a tak to chci...

Ale u FF ne - ten po otevření je přihlášený...heslo jsem ve FF neukládal, tak přihlašovací údaje neví...jak udělat, aby se i u FF při obnovení stránky musel uživatel přihlásit?

Re: problém (asi) se sessions nebo cache...

Napsal: stř 5. pro 2012, 11:14
od 1Pupik1989
Do DB si ulož čas přihlášení a postupně aktualizuj. Pokud je čas starší jak třeba hodinu, tak to znamená, že tam už není. Po opětovném příchodu zjistíš čas a podle toho ho odhlásíš.

V přihlašovacím souboru ještě na začátek session_destroy(). Možná jen zvyk, ale klid v duši.

Re: problém (asi) se sessions nebo cache...

Napsal: stř 5. pro 2012, 11:48
od Václav Sedlář
ok,zatím je vše zase v pořádku-když se to bude opakovat, tak to tak udělám...

Re: problém (asi) se sessions nebo cache...

Napsal: úte 11. pro 2012, 11:26
od Václav Sedlář
tak koukám do logu a zase několikrát za sebou přihlášení - takže se asi zase ten stejný uživatel nemohl přihlásit a zkoušel to několikrát po sobě...

Já už fakt nevím - dělá to jen u toho jednoho uživatele - ostatní nemají problém... :evil:

Re: problém (asi) se sessions nebo cache...

Napsal: úte 11. pro 2012, 11:46
od Exp
To ale značí nesystémovou chybu, může mít nakoplej prohlížeč...