Autor | Zpráva | ||
---|---|---|---|
Radek9 Profil |
#1 · Zasláno: 12. 8. 2009, 10:05:13
Ahoj. Udělal jsem si script na přihlašování přes cookies a sessions. Vše funguje v pořádku, ale když vypnu a zapnu prohlížeč, tak cookies z podivných důvodů již neexistují. Tady je script:
<?php session_start(); $cookie_jmeno = $_COOKIE["jmeno"]; $cookie_heslo = $_COOKIE["heslo"]; $soubor = "index.php"; if($_GET["mode"]=="login") { $_POST["jmeno"] = ucfirst(strtolower($_POST["jmeno"])); $_SESSION["jmeno"] = $_POST["jmeno"]; $_SESSION["heslo"] = sha1($_POST["heslo"]); setcookie("jmeno", $_POST["jmeno"]); setcookie("heslo", sha1($_POST["heslo"])); header("Location: ".$soubor."?action=login"); } elseif($_GET["mode"]=="logout"){ session_unset(); setcookie("jmeno", "", time()-3600); setcookie("heslo", "", time()-3600); header("Location: ".$soubor."?mode=logout-final"); } elseif($_GET["mode"]=="logout-final"){ session_unset(); header("Location: ".$soubor."?action=logout"); } if(!empty($cookie_jmeno) and !empty($cookie_heslo)){ $_SESSION["jmeno"] = $cookie_jmeno; $_SESSION["heslo"] = $cookie_heslo; } $login_jmeno = $_SESSION["jmeno"]; $login_heslo = $_SESSION["heslo"]; ?> Nevíte někdo, kde dělám chybu? Zkoušel jsem i upravit path, dobu platnosti a adresu kde cookies mají být, ale nic nepomohlo. Děkuji za každou pomoc. |
||
tiso Profil |
#2 · Zasláno: 12. 8. 2009, 10:17:13
Radek9: „Zkoušel jsem i upravit path, dobu platnosti a adresu kde cookies mají být, ale nic nepomohlo.“
V uvedenom skripte to ale nastavené nemáš. |
||
Radek9 Profil |
#3 · Zasláno: 12. 8. 2009, 10:18:37 · Upravil/a: Radek9
tiso:
Nemám, protože to nefungovalo. Dělal jsem to takto: time()+3600*24*365*100, "/", "localhost" |
||
Radek9 Profil |
#4 · Zasláno: 12. 8. 2009, 11:36:39
Tak jsem to vyřešil tím, že jsem přidal platnost na 1 rok. 100 let asi nejde. Ale přesto... nevíte někdo jak to udělat abych nemusel zadávat platnost?
|
||
TomášK Profil |
#5 · Zasláno: 12. 8. 2009, 11:50:10
100 let nejde, protože unixová epocha končí v roce 2038. Já bych to řešil tak, že si buď vytvořím nebo najdu vhodnou konstantu, která bude nastavená na nejvyšší možný timestamp, pojmenoval bych ji třeba FOREVER a dával tam jako datum expirace.
|
||
Radek9 Profil |
#6 · Zasláno: 12. 8. 2009, 11:52:52
TomášK:
„protože unixová epocha končí v roce 2038“ Hups... A co bude potom? :D |
||
GeneralDv Profil |
#7 · Zasláno: 12. 8. 2009, 13:23:58 · Upravil/a: GeneralDv
„Hups... A co bude potom? :D“
To by mě taky zajímalo... možná to "obnověj" no... :D |
||
Joker Profil |
#8 · Zasláno: 12. 8. 2009, 13:26:01
|
||
karbon Profil * |
#9 · Zasláno: 12. 8. 2009, 13:27:40
„Hups... A co bude potom? :D“
Podle mě se unix timestamp zvětší, takže bude mít mnohem vyšší datum (třeba se zvětší paměť o jeden bajt, to by mělo stačit). |
||
zvěřiňák Profil |
#10 · Zasláno: 12. 8. 2009, 13:39:12
Radek9
Může to být i nastavením prohlížeče, když se ti cookies vymažou při vypnutí a zapnutí prohlížeče. Ve FF úpravy - předvolby - soukromí - a zaškrtnuté políčko "Při ukončení aplikace Firefox vymazat důvěrná data". |
||
tiso Profil |
#11 · Zasláno: 12. 8. 2009, 13:42:15
zvěřiňák: tvoja odpoveď je irelevantná, problém sa už našiel.
|
||
zvěřiňák Profil |
#12 · Zasláno: 12. 8. 2009, 13:44:35
tiso
No jó, příště musím pořádně číst. |
||
Radek9 Profil |
#13 · Zasláno: 12. 8. 2009, 13:44:54
No nenašel... Já se v první řadě ptal jestli je možné to nastavit bez uvedené platnosti. Aby to tam prostě bylo navždy :D
|
||
tiso Profil |
#14 · Zasláno: 12. 8. 2009, 13:53:15
Radek9: riešenie máš v [#5]
|
||
Radek9 Profil |
#15 · Zasláno: 12. 8. 2009, 14:45:38 · Upravil/a: Radek9
Hele a teď mě napadá... Ten čas skončí 2147483647 a potom to jde -2147483648... -2147483647 atd. A nemohlo by být řešením potom použít:
time()+2147483648*2 ? Edit: Tak ne :D teď jsem to zkoušel a je to blbost. |
||
Alphard Profil |
#16 · Zasláno: 12. 8. 2009, 15:28:58
Radek9:
Má smysl snažit se tohle vymýšlet? Máte představu, co bude za třicet let? Jiné verze prohlížečů i PHP, možná úplně jiné technologie. Jestli váš web přečká takovou dobu, tak nepochybně projde několikanásobným refactoringem, který tento problém vyřeší moderním způsobem. Systémy uživatelů budou téměř jistě několikrát přeinstalovány a nikdo se pravděpodobně nebude obtěžovat se zálohou cookies. Je to pro vás opravdu tak důležité, že budete den řešit jak to obejít, než abyste tam dal + 10 let a vyřešeno? |
||
Radek9 Profil |
#17 · Zasláno: 12. 8. 2009, 15:34:59
No to je pravda... to jsem jentak zkoušel... a na ty cookies už jsem přišel:
setcookie("nazev", "hodnota", 2147483647); //což zapříčiní, že cookie bude platné do 19.01.2038 |
||
Časová prodleva: 15 let
|
0