Autor Zpráva
VeronikaK
Profil *
Potřebuji, aby když uživatel jde do města nebo kategorie, aby se vždy zapsala její ID hodnota. Tato ID hodnota existuje jen pro město a nebo pro obojí. Proto mám tam IF. Přesto cookie se vůbec nezapíše :( A když unset odeberu a procházím několika městy a kategoriemi na webu, tak se nemůžu divit, ale je uloženo hned několik cookie :( A to se má ukladat jen 1x cookie pro město a 1x pro kategorie.

Nevíte co s tím je?

// pokud existuje mesto i kategorie
if ($seo_mesto != "" AND $kategorie_id != ""){
unset($_COOKIE["seo_mesto"]);
unset($_COOKIE["kategorie"]);
setcookie("seo_mesto", $seo_mesto, 0);
setcookie("kategorie", $kategorie_id, 0);
}

// Jen pro mesto bez kategorie
if ($seo_mesto != "" AND $kategorie_id == "")
{
unset($_COOKIE["seo_mesto"]);
unset($_COOKIE["kategorie"]);
setcookie("seo_mesto", $seo_mesto, 0); 
}

// Otestujeme prvni vypis jake hodnoty to melo vlozit a hodnoty, ktere to do cookie ulozilo
echo "MESTO: ".$seo_mesto.", KATEGORIE: ".$kategorie_id."<br>";  
echo "MESTO: ".$_COOKIE['seo_mesto'].", KATEGORIE: ".$_COOKIE["kategorie"]."<br>";


Výsledek je pak takový:
MESTO: 11, KATEGORIE: 9
MESTO: , KATEGORIE:
Ben
Profil *
to unset(); tam je myslím, zbytečné. Zkus ověřit, jestli se ta cookiena doopravdy nastavila
treba nejak takto:

<?php
$cookie_name = "mytestcookie"; 
 if( !isset($_COOKIE[$cookie_name]) && empty($_COOKIE[$cookie_name]) ) 
         setcookie("$cookie_name", 0, 0, "/"); 
?>


nebo je zkus vypsat treba pres print_r($_COOKIE);
Ben
Profil *
a po každém bloku příkazů si to vypisuj echem a postupně to dohledáš
VeronikaK
Profil *
Ano našla jsem chybu.

Problém byl v tom, že URL adresa ze které se cookie mělo zapisovat, tak bylo různé. Proto několik cookie uložených v prohlížeči. Tak že jsem nastavala čas na 30 dnů a dala jsem parametr "/", aby se to nezapisovalo s různýma URL, ale pouze a jednou URL adresou.

A funguje. Ale že to byla makačka. Škoda, že mě té logiky chybí tolik :)
Ben
Profil *
Logiky máš dost, dala jsi to poměrně rychle dohromady. Co ti chybí jsou jen zkušenosti z běžného vývoje a to příjde praxí 8-) A pak už se to všechno opakuje stále dokola.

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