Pereiti prie turinio

UNSET neveikia?


Rekomenduojami pranešimai

toks mini klausimėlis: užsetinu cookius

 

setcookie("user","$username", time()+3600);
setcookie("password","". md5(md5($password)) ."", time()+3600);
setcookie("id","". $_SERVER['REMOTE_ADDR'] ."", time()+3600);

 

ir atsijungimo nuorodoje juos unsetinu, bet jie kažkodėl nenusinulina.

 

if(isset($_GET['id']) && $_GET['id'] == "logout") {

	unset($_COOKIE['user']);
	unset($_COOKIE['password']);
	unset($_COOKIE['id']);

	session_unset();
	session_destroy();

	header("Location: index.php");

	exit;

	}

 

bandžiau ir

setcookie("id","", time()-3600)

vistiek nieko. Dėl ko jie nenusinulina?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirmas dalykas - nesaugok username'o ar slaptažodžio (kad ir užhash'into) cookiuose.

Antras - kai kvieti unset, tai tu tiesiog ištrinti masyvo _COOKIE raktą, o ne faktinį sausanėlį. Bet tas antras variantas su time()-3600 turėtų suveikti. Kaip tikrini, kad "vistiek nieko"? Pasižiūrėk per naršyklės plugin'ą kokį, ar tikrai "vistiek nieko". Jei ką tai gali dar pabandyti paduoti FALSE antru argumentu, vietoj tuščio string'o, bet kažin ar tai labai ką pakeis.

Redagavo vitalikaz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirmas dalykas - nesaugok username'o ar slaptažodžio (kad ir užhash'into) cookiuose.

Antras - kai kvieti unset, tai tu tiesiog ištrinti masyvo _COOKIE raktą, o ne faktinį sausanėlį. Bet tas antras variantas su time()-3600 turėtų suveikti. Kaip tikrini, kad "vistiek nieko"? Pasižiūrėk per naršyklės plugin'ą kokį, ar tikrai "vistiek nieko". Jei ką tai gali dar pabandyti paduoti FALSE antru argumentu, vietoj tuščio string'o, bet kažin ar tai labai ką pakeis.

matai, tas username ir password reikalimgas tiktai man pačiam , ne vartotojui, jam jokios reikšmės jis neduoda. Ir su false irgi tas pats, nukreipia, bet neištrina. O su time()-3600 net nežinau kodėl neveikia

Nuoroda į pranešimą
Dalintis kituose puslapiuose

matai, tas username ir password reikalimgas tiktai man pačiam , ne vartotojui, jam jokios reikšmės jis neduoda. Ir su false irgi tas pats, nukreipia, bet neištrina. O su time()-3600 net nežinau kodėl neveikia

Kaip suprast tik tau pačiam? Jeigu saugai cookį, reiškia saugai informaciją vartotojo kompe, reiškia saugai username/slaptažodį porą vartotojo kompe, kas iš saugumo pusės yra labai negerai.

Kaip suprast "nukreipia"? Ir neatsakei - kokiu būdu tikrini, ar vis gi cookis ištrintas ar ne. Kaip sakiau, bandyk su naršyklės pluginu. Na arba blogiausiu atveju print_r($_COOKIE) ir žiūrėk ar ten tikrai jo nėra. Tik ne iš karto po to, kai pasidarei set_cookie, o per sekantį puslapio užkrovimą. Nes su cookiais turi būti dirbama dar prieš bet kokį output'ą naršyklei (tam, kad header'iuose pranešti apie cookių pasikeitimą). Beja, tame problema ir gali būti, kad bandai setcookie daryti jau po to, kai kažką išvedei į naršyklę ir dėl to tau nesuveikia.

Redagavo vitalikaz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip suprast tik tau pačiam? Jeigu saugai cookį, reiškia saugai informaciją vartotojo kompe, reiškia saugai username/slaptažodį porą vartotojo kompe, kas iš saugumo pusės yra labai negerai.

Kaip suprast "nukreipia"? Ir neatsakei - kokiu būdu tikrini, ar vis gi cookis ištrintas ar ne. Kaip sakiau, bandyk su naršyklės pluginu. Na arba blogiausiu atveju print_r($_COOKIE) ir žiūrėk ar ten tikrai jo nėra. Tik ne iš karto po to, kai pasidarei set_cookie, o per sekantį puslapio užkrovimą. Nes su cookiais turi būti dirbama dar prieš bet kokį output'ą naršyklei (tam, kad header'iuose pranešti apie cookių pasikeitimą). Beja, tame problema ir gali būti, kad bandai setcookie daryti jau po to, kai kažką išvedei į naršyklę ir dėl to tau nesuveikia.

naudojama mano kompiuteryje, prisijungiant prie valdymo pultelio ar kaip čia kitaip pasakyt. cookius tikrinu ne sekančiam, bet dar sekančiam puslapyje:

 

$check_user = $_COOKIE['user'];

	if (!isset($check_user)) { 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

naudojama mano kompiuteryje, prisijungiant prie valdymo pultelio ar kaip čia kitaip pasakyt. cookius tikrinu ne sekančiam, bet dar sekančiam puslapyje:

 

$check_user = $_COOKIE['user'];

	if (!isset($check_user)) { 

 

Ar patikrinai, kad setini (tavo atveju "ištrini") cookį dar prieš bet kokį HTML išvedimą?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Cookie saugomi naršyklėje ir kai žmogus kreipiasi į serverį jie yra pridedami prie headerių.

Jei nori ištrinti cookius tai reikia tai pranešti naršykliai kai gražini response, kad cookis pasenęs. (setcookie("id","", $laikas_kuris_jau_praėjo))

jei parašai

setcookie("id","", $laikas_kuris_jau_praėjo)
if (isset($_COOKIES['id'])) echo 'true';

tai tau išves true nes pas tave scripte vis dar yra cookis ir naršyklė dar negavo headerių, kad reik pakeisti expire date.

 

Kai parašai

setcookie("id","", $laikas_kuris_jau_praėjo)

sekantį kartą kai naršyklė kreipsis į serverį, ji neturėtų siūsti ir cookio vardu id.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...