27. april 2003 - 19:25Der er
33 kommentarer og 2 løsninger
Undgå at form-data sendes igen ved opdatering
Kan man undgå at dialogen om form-data fremkommer efter man har sendt nogle form-data, og derefter opdaterer siden...?? Måske med en bestemt http-header (cache-control måske?)...?
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.
ok - har selv brugt header("location: "); og det fungerer fint - men er det ikke at presse serveren hvis man jonglerer skødesløst rundt med denne form for redirection??
Det er at presse serveren, hvis man jonglerer skødesløst rundt med, hvad somhelst. Så pas på, du ikke bliver skødesløs :) Hvis du bruger det som her: Nej ;o) /mvh
Jeg benytter header-location andre steder, hvor jeg f.eks. bruger sessions. Først parser jeg et script med et argument vha. af GET, men for at fjerne denne fra adresse-linien, gemmer jeg værdien i sessionen og smider en header-location ind lige efter... Er dette at misbruge denne header??
Jaja, Erik ... nu er jeg jo ikke så meget til jydske geder ........ så skal de FANDEME ha' nogle smukke øjne. Så hellere Bennos fynske ditto - det lyder så sødt, når de taler dirty :D /mvh
intel4004 >> Det med skødesløsheden var nu bare lidt en joke. Du kan roligt redirecte ved hjælp af headers - det sker der ikke noget ved ;o)
mjl >> IE har siden 5.0 indeholdt myriader af ekstremt slemme sikkerhedshuller. De fleste er dog blevet patched indenfor de seneste måneder. Ikke desto mindre er der mange, der ikke længere stoler på MS - og med den opførsel de har udvist de senere år, er der såmænd heller ingen begrundelser for det. De har siddet advarsler og klager overhørig i halve og hele år og skidt på, at hele brugerens HD var tilgængelig - alle cookies fra samtlige sites kunne læses, samt alt hvad der blev skrevet i formfelter (herunder passwords) kunne aflæses af et hvilket somhelst site indenfor samme browserinstans.
De sidste par år har der simpelthen ikke været _noget_, der har været privat på PC'ere, der har brugt IE med JS slået til. Det har med andre ord været totalt tåbeligt at have JS slået til i IE siden IE5.0 til for et par måneder siden. Om man tør slå det til nu, kommer anpå, hvor stor tiltro man har til M$ :) /mvh
Ja - det er ikke så godt - men det er jo samtidigt et faktum, at de fleste bruger MSIE - så det er da godt, at man får ordnet alt det møg.
Personligt, er jeg glad for alt det "man kan", og derfor er alt slået til...jeg vil helst ikke begrænses, selv om der er mange banditter til ude i virkeligheden.
Men - man skal selvfølgelig passe på, at andre, herunder kunder m.fl. ikke bliver udsat for den meningsløse "terror" der rettes mod folks websites, fra folk der nok keder sig, eller sov da opdragelsen blev uddelt... ;O)
Jeg synes ikke jeg har fået svar på mit spørgsmål. Jeg spurgte for at undgå brugen af header() og self.location, som jeg bruger flittigt til andre ting og til denne problemstilling.
Jeg søger en direkte http-header som kan fjerne den history-lagring der forekommer når man submitter en form... Der kommer bekendt en dialog op når man opdaterer siden, hvor der spørges om man vil sende form-data igen... Med en redirect er dette slettet.
Jo, $_POST arrayet "tømmes" - derfor skal du anvende det (til opdatering i databasen) inden du redirecter. Jeg er ikke sikker på at jeg forstår hvad du ellers søger efter?
intel4004 >> Det er netop derfor, man bruger metoden med at redirect'e. Når du f.eks. skriver et indlæg her på Eksperten, kommer du til 'response.php' (formens action-dokument). Det foretager DB-opdatering og redirect'er dig tilbage til spm'et. Derfor sker der ingenting, hvis du reload'er siden efter, du har skrevet et indlæg :) /mvh
Men i det jeg er har gang i har jeg ikke tænkt mig at benytte databasen lige der - det ville være spild af ressourcer. Håbede blot på at i havde lidt forstand på det med http-headere :) - men måske er det alligevel ikke der jeg der jeg skal søge løsningen...
Så fatter jeg nada af, hvad du vil - og hvad du spørger om.
Du submitter ikke en form til sin egen side - men til en anden, der udfører dine handlinger og returnerer til siden med formen. Hvad er det, du ikke forstår i det? /mvh
Må jeg gætte? Du laver flere indtastningssider, hvor alle data til sidst skal gemmes i databasen.
Hver side (form) er med 'post', og på hver næste side er der en ny form. Du gemmer værdierne fra den foregående side i hiddenfelter på hver form. Det sparer på databasekald, men har den ulempe at man får en kedelig besked hvis man opdaterer siden.
Det er der et par måder at gøre noget ved: 1) Gem i sessionsvariabler + lav din redirect som beskrevet 2) Gem i database + lav din redirect - det er ikke ressourcespild :)
Men - som dagt - det er et gæt fra min side. I bedste Hercule Poirot stil har jeg brugt de små grå hjerneceller og udtænkt den mest sandsynlige forklaring. *gg*
Det eneste jeg egentlig spurgte om var om kunne benytte HTTP-headere - men det lader ikke til at i er helt med på hvad jeg mener.
Mit problem er ikke sådan at forklare - derfor forsøger jeg generelt. Jeg sidder i en studiegruppe på universitet. Vores produkt dette semester er et system til styring af projekter udviklet i PHP... Det er efterhånden blevet noget avanceret...
olebole>
Jo mindsandten om jeg ikke submitter til samme script som formen eksisterer i. Dette har jeg altid gjort - så er jeg fri for flere filer. Jeg bruger blot et argument i action-feltet. Jeg forstår skam. Hvad er det du ikke forstår ?
erikjacobsen>
Jeg har faktisk selv overvejet det med hidden-felter - men jeg tror faktisk jeg vil benytte sessions. Jeg fatter ikke jeg har glemt mulighederne med sessions...
Er der nogle begrænsninger for hvad man kan gemme i session-variabler? Hvor sikkert er session-trafikken fra client til server? Er det fair for brugeren at tvinge dem til at benytte sessionen som midlertidig lagerplads, hvis tredje-mand kan se hvad der foregår i sessionen...??
du transmitterer ikke de data der ligger i sessionen mellem klient og server, men en "kode". Koden kan opsnappes - teoretisk - og bruges til at hacke sig ind til data på serveren. Så det er ikke 100% sikkkert.
Der findes ikke den HTTP-header du efterlyser.
Du kan jo sagtens:
1) aa.php viser en form, brugeren trykker på knappen -> en POST 2) aa.php udføres og gør et eller andet, og redirecter til 3) aa.php, der så viser brugeren den nye side
Brug POST variabler til ting der skal opdateres, og GET variabler (aa.php?...) til at vælge hvad brugeren skal se.
"Jo mindsandten om jeg ikke submitter til samme script som formen eksisterer i" Det er en rigtig skidt idé - som du jo også har opdaget. Gør du det, må du til gengæld ligge og rode med opdaterings-problematikken. Det er dét, jeg ikke forstår, du vil :)
Du behøver ikke gå på kompromis med sikkerheden, hvis du blot har et dokument, der tager sig af handlingerne og bagefter redirect'er - men det må du naturligvis selv vælge :) /mvh
Skidt idé? Hvorfor? Med et MVC-pattern er det en af de muligheder, der ligger lige for, og det fungere fint - jvf min 3-trins raket ovenfor (Wow, jeg kan tælle til 3 i dag... mit hoved føles så tungt....)
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.