Avatar billede Asky Forsker
14. juli 2012 - 21:12 Der er 16 kommentarer og
1 løsning

Formularer og diverse browswsere

Jeg sender mit spørgsmål i denne kategori, men i virkelighedener det måske mere generelt.
Jeg betjener et lille firma, der modtager ordrer via formularer, som nu er programmeret i PHP (og det er jeg meget tilfreds med). Tidligere formularer virkede via en CGI-fil på serveren og en kort overgang Front Page autoformularer (De duede ikke til over 40 varenumre). Vi har nu en del kunder, der ikke får deres bestillinger igennem, fordi de ikke får den nyeste PHP-formular fra serveren, men via en tidligere gemt genvej en tidligere version end den aktuelle. Vi har været udsat for en bestilling via en gammel .htm-side (Front-Page formular), som ikke mere findes på serveren. Jeg mener grunden er, at kundernes browsere ikke opdaterer siderne og i stedet gemmer gamle genveje som cookies.
I princippet er det jo ikke kundernes fejl, men hvordan sikrer vi, at browseren altid viser den seneste version af en formular?
Avatar billede scootergrisen Nybegynder
14. juli 2012 - 21:44 #1
Letteste er nok bare og omdøbe filerne.

Også output alt HTML koden fra PHP.
Avatar billede olebole Juniormester
14. juli 2012 - 21:46 #2
<ole>

Giv dokumentet et nyt navn og ret stierne, der peger på den. Så får brugeren i hvertfald ikke vist en gammel formular.

Dernæst kan du i den nye formular sætte nogle headers allerøverst - på linjen lige under <?php. Dette plejer at virke:

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>

Så bliver den nyeste formular ikke cached

/mvh
</bole>
Avatar billede Asky Forsker
14. juli 2012 - 22:17 #3
Kære olebole
Du har hjulpet mig før og dit forslag til header lyder også rigtig fornuftigt. jeg forstår bare ikke 2. linie Expires. . . . .
Alle formularerne har jo fået nyt navn, ihvertfald efternavn .php, burde det ikke være nok? Af forskellige grunde kan jeg ikke sådan lige ændre navnene på filerne.
Avatar billede scootergrisen Nybegynder
14. juli 2012 - 22:36 #4
Du kan bare ændre filnavnet fra form.php til form2.php for eksempel.
Avatar billede olebole Juniormester
14. juli 2012 - 22:39 #5
Hvis filerne har fået ny extension (php), vil ingen brugere længere risikere at få en gammel fil at se. Du er med andre ord nu fri for de problemer  =)

For at forhindre, det samme sker næste gang, du laver en ny version af formularen, kan du bruge de to viste headers. Den, du spørger til, postulerer, at filen er lavet en gang før 26. juli 1997 - og at browseren efter denne dato skal hente en ny version. Filversionen udløber med andre ord på det angivne tidspunkt. Håber, det hjalp  =)
Avatar billede olebole Juniormester
14. juli 2012 - 22:40 #6
Der er ingen grund til at ændre filnavnet igen, når det allerede er ændret
Avatar billede Asky Forsker
15. juli 2012 - 08:36 #7
Det mente jeg heller ikke før den før nævnte .htm (-FrontPage *!#&) fil dukkede op. Jeg er jo godt klar over, at det er et overgangsfænomen, vi slås med i øjeblikket. Men jeg vil meget gerne undgå flere "gamle" formularer. De nævnte headers vil forhindre flere af den slags fejl for fremtiden, og det er jo også fint, da de sidste ændringer ud i fremtiden jo ikke er lavet endnu ;-).
Avatar billede olebole Juniormester
15. juli 2012 - 15:59 #8
Jeg har aldrig selv været ude for, at en fil, der ligefrem er fjernet fra serveren, er dukket op i en brugers cache. Under alle omstændigheder var det i den fjernede fil, du i sin tid skulle have sat nogle headers, for at undgå den nu. Det er desværre for sent nu  :o|
Avatar billede Asky Forsker
15. juli 2012 - 20:50 #9
Ja, som bekendt er det lettest at være bagklog, men jeg vil alligevel sætte de nævnte headers ind i alle mine formularer, så fremtidige opdateringer går igennem straks uanset kundernes gemte genveje. I øvrigt mener jeg, der bør forskes mere i browseres virkemåder overfor brugerne. Tak for hjælpen /Asky
Avatar billede Asky Forsker
15. juli 2012 - 20:57 #10
Skulle lige afprøve, inden jeg satte den ind flere steder og fik følgende advarsel:

Warning: Cannot modify header information - headers already sent by (output started at /home/sv_askydk/bogplast.php:10) in /home/sv_askydk/bogplast.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at /home/sv_askydk/bogplast.php:10) in /home/sv_askydk/bogplast.php on line 13

De nævnte linier er der, hvor jeg har sat headerne ind.
Avatar billede Asky Forsker
15. juli 2012 - 21:01 #11
til oplysning:
PHP-koderne står efter html head men før body.
Avatar billede olebole Juniormester
15. juli 2012 - 21:14 #12
En HTTP-header har intet med HTML-elementet HEAD at gøre. Et dokument består af en header og en body. I body'en står al dokumentets indhold - hvilket er hele HTML-dokumentet, incl. HEAD og BODY elemnterne. I headeren står alle metainformationer om dokumentet, så f.eks. browseren ved, hvad den skal gøre me dokumentet.

Dokumentets head-del skal være helt afsluttet, inden body'en sendes. Har du sendt så meget som et blanktegn eller linjeskift, er du begyndt på body'en, og så er det for sent at sende headerinformationer.

Det kan være lidt uoverskueligt, til man lige fanger idéen. Under alle omstændigheder må der intet være skrevet ud, før en HTTP-header sættes. Ellers får du omtalte fejl
Avatar billede Asky Forsker
15. juli 2012 - 22:00 #13
Ok forstået :-)
Ved at søge på nettet på no-cache fik jeg ideer til at sætte de samme meddelelser ind som META i Head-delen af HTML-en. Det ser således ud:

<meta http-equiv="Cache-control" content="no-cache" />
<META HTTP-EQUIV="EXPIRES"
CONTENT="Mon, 22 Jul 2002 11:12:01 GMT" />

Har det ikke stort set samme virkning?
Avatar billede olebole Juniormester
15. juli 2012 - 22:19 #14
Nej, hvis serveren sætter noget andet, overskrives din meta. Sæt det som HTTP-header - så er du på den (mere) sikre side  =)

Sætter du headeren på linjen lige efter det allerførste <?php, får du ikke fejlen  *o)
Avatar billede Asky Forsker
15. juli 2012 - 22:40 #15
OK Jeg vælger den sikre side :-)
Avatar billede olebole Juniormester
15. juli 2012 - 23:01 #16
Klogt! Alt skal prøves mindst én gang i livet. For ting som folkedans, blokfløjte og uønsket caching er én gang nu også mere end rigeligt  *D
Avatar billede Asky Forsker
16. juli 2012 - 06:53 #17
Nu har jeg no-casche stående begge steder både i html-head og i php header, og jeg får ikke flere fejlmeddelelser. Så går jeg både med livrem og seler. Så må vi håbe browserne kan fatte det!  -også MAC
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