Autor Zpráva
mirio
Profil
Ahoj, mám tento superprimitivní "skript"...

<?php

if(!isset($_COOKIE["jmeno"])) setcookie ("jmeno", $_POST["jmeno"], time()+31536000);
if(!isset($_COOKIE["email"])) setcookie ("email", $_POST["email"], time()+31536000);
if(!isset($_COOKIE["url"])) setcookie ("url", $_POST["url"], time()+31536000);

echo "<input type='text' name='jmeno' size='40' class='textpole' value='".$_COOKIE["jmeno"]."'><strong> Jméno</strong>";
echo "<input type='text' name='email' size='40' class='textpole' value='".$_COOKIE["email"]."'> E-mail";
echo "<input type='text' name='url' size='40' class='textpole' value='".$_COOKIE["url"]."'> Www (včetně [url=http://)";
]http://)";
[/url]

echo "<br><input type='submit' value='Odeslat'>";

?>

..., kde si zkouším dělat s cookies, ale nefunguje. Přitom, když $_POST["cokoli"] nahradím jakoukoli hodnotou (třeba "1"), tak to funguje. Nerozumím tomu.

Díky za rady.
Aesir
Profil
mirio:

Nějak nevidím, že byste ten formulář měl mezi tagy <form> a </form>, jestli se nepletu, tak tlačítko submit netuší vůbec co má odeslat a jakým způsobem, tzn. ve vašem případě POSTem.
habendorf
Profil
tlačítko submit netuší vůbec co má odeslat a jakým způsobem

... a kam.
mirio
Profil
Jo, omlouvám se, je to takhle::

<?php

if(!isset($_COOKIE["jmeno"])) setcookie ("jmeno", $_POST["jmeno"], time()+31536000);
if(!isset($_COOKIE["email"])) setcookie ("email", $_POST["email"], time()+31536000);
if(!isset($_COOKIE["url"])) setcookie ("url", $_POST["url"], time()+31536000);

echo "<form name='formular' action='./skripty/komentare/komentar_add_test.php' method='POST'>";

echo "<input type='text' name='jmeno' size='40' class='textpole' value='".$_COOKIE["jmeno"]."'><strong> Jméno</strong>";
echo "<input type='text' name='email' size='40' class='textpole' value='".$_COOKIE["email"]."'> E-mail";
echo "<input type='text' name='url' size='40' class='textpole' value='".$_COOKIE["url"]."'> Www (včetně [url=http://)";
]http://)";
[/url]

echo "<br><input type='submit' value='Odeslat'>";

echo "</form>";

?>
tiso
Profil
mirio
Predpokladám že skript spracúva sám seba. Potom sa pri prvom spustení vytvoria cookies bez hodnoty, lebo neexistujú post hodnoty a pri odoslaní formulára sa už cookies nemenia, lebo nastavené sú... Chyba v logike skriptu...
mirio
Profil
To jsem si myslel, kam tedy řádky setcookie umístit? Až do skriptu, který zpracovává data a ukládá do databáze?
tiso
Profil
mirio
Skôr napíš čo chceš vlastne dosiahnuť...
mirio
Profil
Trošičku inteligentnější formulář - aby komentující čtenář mého blogu vyplnil údaje ve formuláři jen jednou a při příštím komentování už by to měl předvyplňěno, právě díky cookies...
tiso
Profil
mirio
Tak potom na začiatok zmeň podmienku s if(!isset($_COOKIE[...] na if(isset($_POST[...]
mirio
Profil
Změnil jsem to na tohle a pořád nic...

if(isset($_POST["jmeno"])) setcookie ("jmeno", $_POST["jmeno"], time()+31536000);
if(isset($_POST["email"])) setcookie ("email", $_POST["email"], time()+31536000);
if(isset($_POST["url"])) setcookie ("url", $_POST["url"], time()+31536000);
mirio
Profil
Teď mě napadá, existuje vůbec nějaký způsob, jak zpracovat cookies, když se mi metoda POST odkazuje na jiný script? Cookies budou asi uložené pro ten skript, kam POST směřuje, ne?

EDIT: Asi to půjde pomocí JS nebo ne? Já už fakt nevím... :-((
Joker
Profil
mirio
Cookies nejsou vázané na konkrétní skript, ale na doménu, takže v jiném skriptu na stejné doméně by měly fungovat.

K chybě: Zkuste se podívat, jestli tam ty cookies opravdu máte (ve slušném prohlížeči by to neměl být problém: Opera: Nástroje - pokročilé - cookies, Firefox: Nástroje - možnosti, soukromí, cookies, správce cookies) a jaký je jejich obsah
mirio
Profil
Jsou tam! Ale zarazila mě jedna věc a to řádek "cesta", ona k těm cookies existuje nějaká "cesta"? Může to být tím, že skript pro formulář a skript pro zpracování metody POST jsou každý v jiném adresáři? Pokud ano, jak se k těm zpropadeným sušenkám dostat? :-))

EDIT:
Tak už to vidím, je tam argument path, jdu si s tím zkusit pohrát...
mirio
Profil
Ufffff, VÝBORNĚ!!! Už to funguje, mé formuláře jsou zase o něco chytřejší a já také. :-))

Díky všem!
Joker
Profil
Ale zarazila mě jedna věc a to řádek "cesta", ona k těm cookies existuje nějaká "cesta"?
Jistěže. Cookies nejsou nic jiného, než malé textové soubory, uložené na disku. Respektive v případě Opery jsou všechny cookies uložené v souboru cookies4.dat

Jestli tam jsou, tak nevím, proč by se neměly načíst... ještě se dá zkusit var_dump($_COOKIE) a podívat se, jestli se načetly.
mirio
Profil
Problém byl v té cestě ke cookies a v místě uložení skriptu, který je pak vyvolával - každý byl někde jinde. Musel jsem nastavit cestu, kde se mají cookies vytvářet. Vaše rada mě k tomu nasměrovala, děkuji!
Toto téma je uzamčeno. Odpověď nelze zaslat.