Avatar billede intel4004 Novice
27. april 2003 - 19:25 Der 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?)...?

Intel4004
Avatar billede mjl Nybegynder
27. april 2003 - 19:27 #1
echo "<Script>window.location=\"index.php\"</Script>";
Avatar billede erikjacobsen Ekspert
27. april 2003 - 19:29 #2
eller en redirect i PHP med header("Location: ...");
Avatar billede olebole Juniormester
27. april 2003 - 19:37 #3
<ole>

<form action="bla.php" method="post">
<input type="hidden" name="ret_page" value="$_SERVER[PHP_SELF]">
...osv osv osv...
</form>

Og i bla.php

<?

// Kør din kode her

Header("Location: $_POST[ret_page]");

?>

/mvh
</bole>
Avatar billede mjl Nybegynder
27. april 2003 - 19:40 #4
...mulighederne er mange! :o)
Avatar billede olebole Juniormester
27. april 2003 - 19:44 #5
mjl >> ikke, hvis JS er slået fra på klienten  ;o)
Avatar billede intel4004 Novice
27. april 2003 - 20:01 #6
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??

Intel4004
Avatar billede olebole Juniormester
27. april 2003 - 20:18 #7
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
Avatar billede intel4004 Novice
27. april 2003 - 20:45 #8
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??

Intel4004
Avatar billede erikjacobsen Ekspert
27. april 2003 - 20:48 #9
nej
Avatar billede mjl Nybegynder
27. april 2003 - 21:03 #10
olebole> Nej det er jo sandt nok...der findes jo nok nogen, der har det slået fra - men hvorfor mon?
Avatar billede erikjacobsen Ekspert
27. april 2003 - 21:04 #11
Uden JavaScript, ingen popupvinduer.
Avatar billede mjl Nybegynder
27. april 2003 - 21:07 #12
...smart!
Avatar billede benno_benjamin Nybegynder
27. april 2003 - 21:26 #13
hey olebole vil du ikke godt sende mig en email på benjamin@balancemusic.dk eller icq 29899029 Mvh
benjamin (Inlead)

Sorry ved godt det er off-topic, men har meget brug for at få fat i olebole
Avatar billede erikjacobsen Ekspert
27. april 2003 - 21:28 #14
Benno: tror det er nemmere at få fat i ham hvis du stiller
en flaske Frascati og en ged på terrassen, så skal han nok
kommer (ups - også off topic)
Avatar billede benno_benjamin Nybegynder
27. april 2003 - 21:31 #15
har prøvet den med geden på teressen virker ikke )=
der er ikke nogen måde man kan se brugeres email på her på eksperten??
Avatar billede erikjacobsen Ekspert
27. april 2003 - 21:36 #16
Heldigvis ikke, benno. Men han får vel en mail fra spørgsmålet her.
Avatar billede olebole Juniormester
28. april 2003 - 10:20 #17
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
Avatar billede olebole Juniormester
28. april 2003 - 10:34 #18
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
Avatar billede erikjacobsen Ekspert
28. april 2003 - 10:51 #19
Og der var en overgang hvor Microsoft selv anbefalede at man slog
JavaScript fra.

Man kan jo også bare bruge en anden browser.
Avatar billede mjl Nybegynder
28. april 2003 - 16:18 #20
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)
Avatar billede mjl Nybegynder
04. maj 2003 - 10:55 #21
Måske lukkes dette sp. inden jul??? ;O)
Avatar billede intel4004 Novice
04. maj 2003 - 12:37 #22
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.

Men tømmes $_POST-arrayet ikke ved en redirect??

Intel4004
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 12:41 #23
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?
Avatar billede olebole Juniormester
04. maj 2003 - 14:09 #24
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
Avatar billede intel4004 Novice
04. maj 2003 - 18:54 #25
Ok - forstår hvad i mener...

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...

Intel4004
Avatar billede olebole Juniormester
04. maj 2003 - 19:06 #26
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
Avatar billede mjl Nybegynder
04. maj 2003 - 19:09 #27
mjl er også blevet HELT væk nu...!!!!!
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 20:45 #28
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*
Avatar billede olebole Juniormester
04. maj 2003 - 21:10 #29
Du kan da osse så meget med de to  :)
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 21:19 #30
Jeg har tænkt på at udvide med 50%, så jeg får 3. Så kan
jeg måske også stave.
Avatar billede olebole Juniormester
04. maj 2003 - 21:25 #31
Våf de? De er da igge nødvændi. At kune sdavø er da vilt umoderned  :D
Avatar billede intel4004 Novice
05. maj 2003 - 12:21 #32
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...??

Intel4004
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 12:31 #33
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.
Avatar billede olebole Juniormester
05. maj 2003 - 17:37 #34
"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
Avatar billede erikjacobsen Ekspert
05. maj 2003 - 19:04 #35
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....)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester