09. april 2005 - 20:58Der er
30 kommentarer og 3 løsninger
GET & POST, hvad for en skal man bruge?
Hej Eksperter,
Jeg er ved at lave en hjemmeside i php, men jeg er i tvivl om hvad forskellen er på POST og GET, og hvad for en der er bedst at bruge i mine forms på siden?
Så det kunne være helt vildt fedt hvis der var en der kunne give en forklaring på det....
Selvom jeg ikke helt forstår forskellen selv - kan jeg da lige læse op fra en bog:
GET-metoden indsætter et begrænset antal navn/værdi-par sidst i et CGI-scripts URL-adresse. Du har måske før set URL-adresser, der har fået tilføjet ekstra tegn. Disse tegn sendes til behandling på serveren.
POST-metoden sender sammen med forskellige andre oplysninger et ubegrænset antal kodede navn/værdi-par til scriptet.
forskellen er som beskrevet i mit link og som alister siger om det sendes over url eller bagved. Men også at hvis der er over 100 karakterer så kan man ikke benytte get så skal man benytte post... se link
<p> If you click the "Submit" button, you will send your input to a new page called form_action.asp. </p>
..................... The HTTP method for sending data to the action URL. Default is get. method="get": This method sends the form contents in the URL: URL?name=value&name=value. Note: If the form values contains non-ASCII characters or exceeds 100 characters you MUST use method="post".
method="post": This method sends the form contents in the body of the request. Note: Most browsers are unable to bookmark post requests.
Når du request'er serveren med metoden GET, sendes alle variabler med i URI'en.
Request'er du derimod med metoden POST, sendes alle variabler til serveren i form af datapakker, hvis indhold ikke umiddelbart synligt brugeren. Grænsen for, hvad du kan medsende af data er som sagt betydeligt større ved POST-requests - og det er vanskeligere at 'hacke' sig til data for udenfor stående.
Grænsen for GET-requests er dog langt højere end 100 bytes ... det har W3Schools fået helt forkert i halsen. Det har de med en del ting, men dette er dog en af de mere grumme :)
W3Schools er lavet af en privat nordmand og har ikke noget med W3C at gøre. Det er et rimelig godt site, men er ikke altid helt rigtig på den :)
Der er ingen officiel grænse for en GET-requet's størrelse - det afviger en hel del fra browser til browser. IE har en grænse på omkring 2.000, mens den i FF ligger på ca. 8.000. Du kan evt. teste flere browsere, end jeg lige gjorde med dette php-dokument:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>TITLE</title> <style type="text/css"> body, html { height: 100%; margin: 0px; } </style> <script type="text/JavaScript"> function fillField(f) { var s = ""; for (var i=0; i<parseInt(f.len.value); i++) s += "O"; f.gnu.value = s; } </script> </head> <body>
Vidste godt at siden ikke har direkte tilknytning til W3C - vidste så ikke det var en nordmand :o/
Anyway vil du trods alt ikke mene at det er et af de bedre sites omhandlende det meste omkring html,xml,css mm? Eller kender du andre sites som kan hamle op med det? bare af nysgerrighed
ok blev jo også næsten nervøs fordi jeg selv bruger det...men man lærer jo alligevel nyt hele tiden :o)
Synes godt om
Slettet bruger
09. april 2005 - 21:57#14
Olebole< W3Schools'manden skriver udover 100 character (1 character=8 bytes=64 bit)eller skal jeg i arkivet og finde min gamle Z80 bog - for at opfriske min hukommelse, alderen trykker men det der ligger længere tilbage i tiden husker jeg bedre end det dagsaktuelle. ........................... Udover W3C bruger jeg også disse
ibtage >> jeg er helt med på, hvad du mener, men det kan ikke være der, 'køteren' ligger begravet :) '100 characters' betyder '100 tegn' og IE sender som sagt ca. 2.000 tegn - og Moz ca. 8.000 - uden at brokke sig.
Normalt fraråder man at sende større mængder data med GET - og jeg tror, den grænse, man oftest ser nævnt, ligger omkring 1.000 tegn. Ikke nævnt som en fast grænse, men som en tommelfingerregel. Jeg forestiller mig, W3Cschool-mandens angivelse også er et forsøg på at fraråde store datamængder - men jeg er ikke enig i, det er nødvendigt med så stor sikkerheds margin.
Specielt er jeg ikke vild med den sikkerhed, hvormed hen besksriver grænsen. Dels nævner han ikke, at der ikke forligger en officiel grænse og at browserne ikke er enige, dels understreger han med versaler, at man SKAL bruge POST ved datamængder over 100 tegn.
Øv, det oldgamle link, jeg havde til msdn om længden af urler, er desværre forældet, men deri beskrives det, at der er en grænse på et eller andet omkring 2144 tegn, altså ikke direkte relateret til de tal vi kender fra potenser af 2, som ellers ofte er gældende i den slags sammenhænge ...
-- men beskeden er jo også klar i forvejen: Brug method="post", hvis du er det fjerneste i tvivl om, at du kommer over grænsen (og husk at http:// tælles med i længden, og at relative stier afsendes i fuld længde !-)
-- og get-metoden skal kun bruges, hvis du overhovedet ikke er i tvivl om, at hvemsomhelst må se data, som sendes !o]
well, må siges at alle her har tilføjet bedre viden til mig omkring det, men da jeg gerne vil holde stien ren, tror jeg at jeg hopper på POST, da der kan være rimeligt med data, beskrivelse etc. som måske kan overstige hvis man skrive meget, og andre ting der spiller ind, så er det nok nemmest at hodle sig til en af de 2, så folk ude fra ikke bare kan smide en string ind i URL'en...
// ouT
P.S: Har ikke lige noget overblik over hvem der har svaret hvad, men smid et svar og jeg vil dele point mellem jer.....
Jeg kunne jo heller ikke huske browsernes nøjagtige grænser, så jeg blev også klogere af at deltage i debatten og teste lidt. Vi kom netop frem til resultaterne ved en god gang ping-pong ... kom nu til fadet, drenge ;o)
lorte system, men deres avanceret virker stadig ikke, men den måde med at markere dem under std gør, lorte system.... fix det admins eller hvem der nu står for det
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.