Autor | Zpráva | ||
---|---|---|---|
HomerJay Profil |
#1 · Zasláno: 10. 5. 2010, 15:32:28
Viem že tu podobných tém už je viac ako by normálny smrteľník dokázal za život prečítať, ale rád by som sa na to spýtal samostatne.
Ešte nikdy som cookies nepoužíval, preto to bude trošku oriešok. Povedzme že mám registráciu, mám aj prihlásenie. Všetko mi funguje, akurát prihlásenie funguje len na jeden krát - keď odídem z danej stránky, musím sa prihlásiť znova. Takže, chcem aby to prihlásenie zotrvalo, aspoň nejaký čas - povedzme týždeň. Chcem použiť cookies, neviem však ako presne to zapísať. Stačí keď cookies hodím do loginu? Ako presne sa zapisuje funkcia ukladajúca cookies? Keď zase príde užívateľ na môj web, cookies zotrvajú? Netreba pri každom pohybe na stránke cookies čítať? |
||
Radek9 Profil |
#2 · Zasláno: 10. 5. 2010, 16:05:26 · Upravil/a: Radek9
HomerJay:
setcookie("jmeno", "HomerJay", 3600*24*7);//Zápis echo $_COOKIE["jmeno"];//Výpis |
||
HomerJay Profil |
#3 · Zasláno: 10. 5. 2010, 18:39:45
Ako zistím či cookie "jmeno" už u uživateľa existuje? Čo ak ešte setcookie spravené nebolo?
|
||
bohyn Profil |
#4 · Zasláno: 10. 5. 2010, 18:53:31 · Upravil/a: bohyn
HomerJay:
Zápis bych doplnil ještě o přidání do cookie proměnné. Jinak by $_COOKIE['jmeno'] byla dostupná až při dalším požadavku na server. setcookie("jmeno", "HomerJay", 3600*24*7);//Zápis $_COOKIE['jmeno'] = "HomerJay"; Jestli je definovaná proměnná zjistíš jazykovým konstruktem isset isset($_COOKIE['jmeno']); |
||
HomerJay Profil |
#5 · Zasláno: 10. 5. 2010, 19:30:42
Eh a ak poviem, že nefunguje?
Použil som setcookie() - tak ako si mi ukázal, potom som použil if(isset($_COOKIE['jmeno'])) { /*vykona sa funkcia*/ } Nefunguje. Proste nepozná cookies ani sa žiadne cookies neuložili (ako som pozrel vo Firefoxe). Nejako takto to mám: setcookie("user", $dataUSER, 3600*24*7); setcookie("pass", $dataPASS, 3600*24*7); if(isset($_COOKIE['pass']) and isset($_COOKIE['user'])) { $isLogged = true; } |
||
bohyn Profil |
#6 · Zasláno: 10. 5. 2010, 20:05:32
HomerJay:
Protože, jak sem psal, tak $_COOKIE je dostupná až při dalším požadavku na server. Pro akruální požadavek jí musíš nastavit ručně. |
||
HomerJay Profil |
#7 · Zasláno: 10. 5. 2010, 20:20:38
Ďalšia požiadavka na server? Tým myslíš čo?
Ako nastaviť ručne? |
||
bohyn Profil |
#8 · Zasláno: 10. 5. 2010, 21:29:22
HomerJay:
„Ďalšia požiadavka na server? Tým myslíš čo?“ Další požadavek je třeba načtení další stránky, nebo taky načtení obrázků/stylů/scripů na stránce kterou zrovna generuješ (pokud nejsou v cache prohlížeče/proxy). „Ako nastaviť ručne?“ setcookie("jmeno", "HomerJay", 3600*24*7);//Zápis $_COOKIE['jmeno'] = "HomerJay"; |
||
HomerJay Profil |
#9 · Zasláno: 10. 5. 2010, 21:48:15
Nemôže to byť tým časom? nemá to byť setcookie("jmeno", "HomerJay", time()+(3600*24*7));
?? |
||
cesilek Profil * |
#10 · Zasláno: 10. 5. 2010, 21:52:59
Určitě je to tm časem, protože ty jsi nastavil datum vypršení na rok 1970... Musí tam být to time()...
|
||
bohyn Profil |
#11 · Zasláno: 10. 5. 2010, 22:02:50
HomerJay:
Jo určitě, ja jen zkopíroval co napsal Radek9 a tohle sem nekontroloval. Možná bych ještě doplnil parametr $path pokud cookie nastavuješ v nějakém podadresáři. setcookie("jmeno", "HomerJay", time()+(3600*24*7), "/"); |
||
HomerJay Profil |
#12 · Zasláno: 10. 5. 2010, 22:07:33
Bez podadresára. Priamo v roote. Vďaka, skúsim, ozvem sa ak bude ešte problém, ďakujem vážne za čas a vysvetlenie ;)
|
||
HomerJay Profil |
#13 · Zasláno: 11. 5. 2010, 17:24:23
Jo ešte niečo, ako cookie vymažem? Resp. potrebujem spraviť odhlásenie, toto bolo prihlasovanie, chcem aby bolo možné sa aj ručne odhlásiť...
|
||
HomerJay Profil |
#14 · Zasláno: 11. 5. 2010, 18:45:26
No tak ďalší problém.
Povedzme že mám súbor "account.php", v ktorom sa nachádza setcookie("jmeno", "HomerJay", time()+(3600*24*7), "/");, atď... vie to normálne prečítať, všetko funguje ako má. No potom mám súbor "down.php". Čítanie cookies je rovnaké ako v account.php, avšak cookies sa nedajú prečítať,- akoby ani neexistovali. Aký je problém? Jednoducho v account.php to mám takto: if(isset($_COOKIE['pass']) and isset($_COOKIE['user'])) { $isLogged = true; } if($isLogged == true) { /* Vykonajú sa funkcie, všetko funguje. */ } a down.php takto: if(isset($_COOKIE['pass']) and isset($_COOKIE['user'])) { $isLogged = true; } if($isLogged == true) { /* Tu by mali byť tiež funkcie. */ }else{ /* No nevykonajú sa a hodí ma sem. */ } Takže to nefunguje... prečo? |
||
fuckin Profil |
#15 · Zasláno: 11. 5. 2010, 19:59:02
pouzivej funkci var_dump($_COOKIE); na zjisteni zda cookies existuji. Pouze pro ladeni a debug samozrejme.
Jiz tady bylo receno ze jsou dostupne az pri dalsim nacteni stranky. Takze to treba bude muset nejak presmerovat. Pokud v tomto problem neni pak muze byt problem v umisteni souboru, je mozne ze jsou nekde kde cookie nemaji platnost. Ve ff v web developer toolbaru se podiv na cookies a hned uvidis kde je problem. |
||
HomerJay Profil |
#16 · Zasláno: 11. 5. 2010, 20:01:50
Či cookies existujú som sa presvedčil v Nástrojoch -> Informácie o stránke.
Stránku som reloadol, vypol/zapol browser a znovu načítal... down.php sa nachádza v ROVNAKEJ zložke ako account.php, keď v down.php pozriem Informácie o stránke, cookies existujú, ale keď ich kontrolujem cez PHP - ako som už ukazoval, jednoducho ich nevie nájsť. |
||
bohyn Profil |
#17 · Zasláno: 11. 5. 2010, 22:26:39
HomerJay:
„Povedzme že mám súbor "account.php", v ktorom sa nachádza setcookie("jmeno", "HomerJay", time()+(3600*24*7), "/");, atď...“ A máš správně nastavené jméno sušenky? Podle tohoto nastavuješ "jmeno" ale pak kontroluješ "user" a "pass". Mimochodem ukládání hesla do cookie není moc bezpečné. Pokud má jít o přihlšování tak já to řeším pres session. Další věc je že vůbec nekontroluješ hodnoty, ale jen existenci cookie. Do cookie si může kdokoliv nastavit cokoliv. |
||
HomerJay Profil |
#18 · Zasláno: 12. 5. 2010, 14:02:17
Názvy cookies sú správne, písal som narýchlo.
Kontrolujem hodnoty, neposlal som predsa celý obsah súborov. Ide o prihlasovanie a kontrolu prihlásenia, skúsim teda session, akurát ani s tým nemám skúsenosti, vôbec... vďaka, keď tak sa ozvem. |
||
Časová prodleva: 13 let
|
0