Autor Zpráva
HomerJay
Profil
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
HomerJay:
setcookie("jmeno", "HomerJay", 3600*24*7);//Zápis
echo $_COOKIE["jmeno"];//Výpis
HomerJay
Profil
Ako zistím či cookie "jmeno" už u uživateľa existuje? Čo ak ešte setcookie spravené nebolo?
bohyn
Profil
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
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
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
Ďalšia požiadavka na server? Tým myslíš čo?
Ako nastaviť ručne?
bohyn
Profil
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
Nemôže to byť tým časom? nemá to byť setcookie("jmeno", "HomerJay", time()+(3600*24*7));

??
cesilek
Profil *
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
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
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
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
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
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
Č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
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
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.

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:

0