Autor Zpráva
PeterNet
Profil *
Zdrvavím.

Asi takto, řekněme že mám stránku www.stránka.cz a chi aby když někdo zadá www.stránka.cz?abcd, tak aby se to "abcd" uložilo do cookies. Může to být samozřejmě i takto: www.stránka.cz?něco=abcd.

Můj kód vpadá takto, ale nefunguje, pomůžete?

<script>
var dnu = 14;
var datum= new Date();
datum.setTime(datum.getTime() + 1000 * 60 * 60 * 24 * dnu);

document.cookie = "hodnota=<?echo $něco; ?>;expires=" + datum.toGMTString();


</script>


Tohle podle mě mělo vyvolat to "abcd" z druhého případu. Ale nejspíš je to celé blbě. Poradíte tedy co mám zadat za document.cookie = "hodnota=...?

Děkji
mckay
Profil
PeterNet:
Tohle podle mě mělo vyvolat to "abcd" z druhého případu.
Dříve možná ano, ale teď se data z adresy ukládají do $_GET["něco"];

Když už do toho přidáváš php, proč to nenastavíš prostě celé přes php?

<?php
$cookies = $_GET["neco"]; //tady si jako index pole uveď to, co máš v adrese
setcookie("neco", $cookies);
 ?>

Pozor, je potřeba aby byla refreshovaná stránka, aby se cookies projevily a samotné nastavení musíš provést ještě před jakýmkoliv výstupem.
PeterNet
Profil *
Díky moc, funguje to, bohužel né podle představ. Asi to má něco společného s tvou poslední větou.

Jde o tohle - na webu mám formulář, řekněme na adrese www.něco.cz/formulář. A já chci aby když někdo vstoupí na web takto: www.něco.cz?něco=abcd, tak aby se poté v tom formuláři automaticky oběvilo ono "abcd".

Tenhle script mi funguje jenom když jsem přímo na stránce formuláře (www.něco.cz/formulář?něco=abcd) a k tomu musím několikrát refreshnout aby se hodnota "abcd" objevila ve formuláři.

Můžeš mi poradit co s tím? Jde to udělat pomocí cookies? Podle mě by to mělo jít ne? Nebo pomocí sessions (vůbec ale nevím co to je, jen namátkou jsem něco četl)?

Předem mockrát děkuji za každou odpověď.
PeterNet
Profil *
Tak jsem to vyzkoušel pomocí session:
 $_SESSION['hodnota']=$_GET["hodnota"];


Bohužel to dělá úplně totéž co cookies. Taky musím několikrát refreshovat. Jak tedy na to?
mckay
Profil
PeterNet:
Pokud máš adresu www.něco.cz/formulář?něco=abcd, můžeš to vypsat do formuláře normálně echem $_GET["něco];

Pokud přicházíš třeba na nějakou jinou stránku (např.: www.něco.cz/vstup.php?něco=abcd), dej si na začátek toho souboru tento kód:
<?php
$cookies = $_GET["neco"]; //tady si jako index pole uveď to, co máš v adrese
setcookie("neco", $cookies);
 ?>
 
A po uložení do cookies můžeš přesměrovat na stránku s formulářem. Řekl bych, že trochu chaoticky popisuješ svůj problém a tak si nejsem zcela jistý, jestli ti teď pomáhám, nebo matu hlavu.
PeterNet
Profil *
Pořád to nejde. Zkusím to lépe vysvětlit:

- Uživatel vyťuká stránku: www.stránka.cz?id=1234

- V tu chvíli chci aby se mu do cookies uložila hodnota "1234"

- Kdykoliv poté uživatel na stránku přijde, tak chci aby se mu v místě na stránce kde je vyvolána cookie "id" zobrazil text "1234"


Pomocí kódu který jsi zde napsal to tak úplně nejde, protože když za adresou smažu ?něco=abcd a mám v URL prostě jen www.stránka.cz, tak už se mi vyvolaná cookie "něco" nezobrazuje a políčko je prázdné.

Rozumíš jak to myslím? Takto fungují třeba provizní systémy, že když já dám na stránku odkaz na jejich stránku s mým ID na konci, tak se to moje ID uloží cookies tomu kdo na ten odkaz klikne a poté se to ID někde automaticky vyplní.
Davex
Profil
Nevím, zda chceš řešení v JavaScriptu nebo PHP. Parametry aktuální stránky získáš v JavaScriptu z vlastnosti window.location.search. Viz Přečtení proměnných z adresy javascriptem. Získanou hodnotu pak uložíš do document.cookie, což už skoro máš.
PeterNet
Profil *
Jej, možná je to tou pozdní hodinou, ale jde mi z toho hlava kolem. Je mi jedno zda to bude v php nebo java scriptu. Ale vůbec nemám tušení jak to uložit do document.cookie.
Davex
Profil
Najdi si nějaké hotové funkce pro manipulaci s cookies. V JavaScriptu je najdeš třeba ve vlákně nejde cookie rospoznavanie.
PeterNet
Profil *
Tak už jsem to vyřešil takto:

<?php

if ($_GET["id"] >= 1) {
setcookie('id', $_GET["id"], time()+31536000);
};

?>


Problém byl jen v tom, že se mi daná hodnota vždy přemazala prázdnou hodnotou.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: