04. februar 2003 - 14:55Der er
18 kommentarer og 1 løsning
array i cookie med $_POST
Hej E's
Jeg kan simpelthen ikke forstå det:
<? function saveData(){ $value = $_POST['report']; //report er værdi af navne-attribut på formular setcookie("data", $value, time()+3600); } if(isset($_POST['report'])){ savedata(); } echo '<form action="'.$_SERVER['PHP_SELF'].'" name="report" method="post"> <input type="text" name="foo" /> <input type="submit" name="action" value="send" /></form>';
echo '<br /><br />'; print_r($_COOKIE["data"]); //dette burde vise arrayet i cookie, men intet sker?? ?>
Er der nogle der har lyst til at fortælle mig hvorfor ovenstående ikke virker? Hvis det er fordi man ikke kan komme arrays i cookies, er der så en smart mand der vil forstælle mig hvordan jeg så gemmer oplysninger midlertidigt på klient? Læg mærke til at jeg ikke altid kender antallet og værdi af name-attributter i input-elementer, da dette genereres dynamisk og kan ændres gennem admin-interface. Jeg skal altså sådan set "bare" have gemt alt data i et associativt array og "state" skal holdes gennem flere skærmbilleder (derfor cookie/session brug). /raz
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
nu er det jo sådan at en side skal reloades før du kan læse fra den... kan det være noget med det? ved jo ik' om du reloader for at se om det virker...
prøv at se dette ex...
<?php if(setcookie("data","test")){ echo "cookien blev sat... reload siden for at se cookien..."; } if(isset($_COOKIE['data'])){ echo "der en en cookie ved navn <i>data</i> med indholdet: " . $_COOKIE['data']; } ?>
gem filer og prøv at leg lidt med den... det er korrekt at man skal reloade siden før man kan læse fra den...
hvis du vil have forklaringen står jeg gerne klar til at skrive den...
skal siden reloades EFTER cookien er blevet sat... her bliver cookien sat, og så bliver siden vist... det er ikke nok... den skal reloade efter setcookie() er blevet udført...
jeg bliver nødt til at afvise, da det ikke virker. Er der nogen der har en ide til hvordan jeg opsamler formular data i et array og derefter smider det i en session el. cookie? /raz
det er fordi du ikke kan lave det trick med $_POST['navn-på-formen'] jeg har lige testet...
<? function saveData(){ $value = $_POST['foo']; //report er værdi af navne-attribut på formular setcookie("data", $value, time()+3600); } if(isset($_POST['foo'])){ saveData(); } echo '<form action="'.$_SERVER['PHP_SELF'].'" name="report" method="post"> <input type="text" name="foo" /> <input type="submit" name="action" value="send" /></form>';
echo '<br /><br />'; print_r($_COOKIE["data"]); //dette burde vise arrayet i cookie, men intet sker?? ?>
dette virker...
men siden skal først reloades... det er ikke nok at sætte setcookie på en side, og så længere nede på side kalde den med _COOKIE... serveren ved jo ikke at der ligger en cookie endnu...
det virker altså... bare ikke med _POST['report'] med med _POST['foo']
dea_pg>> Ok. Jeg vidste godt at man kunne komme de enkelte inputs i cookies miraculix>> JA ! Og jeg vil komme dem i et array og derefter i en cookie.
Det drejer sig om at man skal igennem flere forskellige skærmbilleder inden man tilsidst gennemlæser sine data og godkender. Når man går videre til næste skærmbillede gemme data i cookie. Det er fordi det skal være muligt at gå tilbage undervejs og ændre i data osv. Desuden finder jeg det ganske fixt ikke at belaste db med det og forskellige andre detaljer osv.....
Nogle der ved hvordan, dette kan gøres på en "clever" måde?
så vil du kunne bruge $arr['foo'] som om det var $_POST['foo'] på den side hvor den var blevet submitted...
men ville måske også kunne have brugt serialize() og unserialize() men dem har je aldrig leget med... men jeg ved at de to funktioner som jeg har lavet virker...
rzj -> Jeg ville ikke bruge en cookie, men derimod bruge sessions. Cookies er ikke stabile, de har begrænsning på mængden af data de kan indeholder og kræver at du pakker arrays ind og ud.
Som sessionsvariable kan du uden videre gemme brugerens data (der så gemmes på serveren) og du har mulighed for at få systemet til at virke selvom brugeren har slået cookies fra.
Lige en sidste ting. Hvis du vælger at bruge cookies kan du sætte mere end een. (Cookies er faktiskt lavet til at virke efter formen "name=value"... så hvorfor ikke lave: foreach ( $_POST as $key => $value ) { setcookie($key, $value, time() + 3600 ); }
Jeg er nået frem til flg: 1. Man kan ikke umiddelbart lave generiske formularer - altså formularer hvor man IKKE kender mængden af elementer i formularen. miraculix>> Det er netop det der er min pointe ved at lagre i array i session/cookie. Hvis jeg altid kender mængden af input-elementer i formularen så kender jeg også antallet af vars. der skal lægges i cookies, og så kan jeg bare gemme dem i hver sin cookie - I know. Men hvis jeg nu ikke kender antallet så er det da ret 'clever' at smække dem i et associativt array - og så smække dem i db. Forestil Jer at jeg giver mulighed for at brugere kan vælge amter på Sjælland. Nu vil admin så gerne udvide til at man også kan udfylde felter for amter i Jylland - ahaaaaaa. 2. dea_pg>>At jeg må afprøve dine meget ihærdige forslag - det ser godt ud... 3. At hvis det ikke virker, så må jeg inddele mine formularer på en sådan måde så jeg gemmer en cookie for hvert skærmbillede og så hardcoder de felter der skal gemmes. Ja, ja da, der kan man bare se... /raz
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.