ilj@flowsim.se|
QUERY_STRING REQUEST_METHOD HTTP_USER_AGENT miljövariabler ? Exakt vilka miljövariabler ett program har tillgång till beror dels på varifrån programmet körs, dels på diverse inställningar på servern. En del miljövariabler kan man få tag i bara om man kör programmet från en hemsida; andra har man tillgång till endast om man kör programmet från prompten. Samma variabel kan dessutom ha olika värde beroende på varifrån programmet körs. Alla som har tillgång till ett UNIX-konto kan ta reda på de miljövariabler som finns tillgängliga vid prompten genom att helt enkelt skriva env. En miljövariabel är REQUEST_METHOD. Den talar om för CGI-programmet vilken metod som används. Om programmet anropats från ett formulär (FORM) på en webbsida och FORM-taggen ser ut så här: <FORM METHOD="get" ACTION="cgi-programmet"> är REQUEST_METHOD lika med get. En FORM-tagg kan också se ut så här: <FORM METHOD="post" ACTION="cgi-programmet"> och då är REQUEST_METHOD alltså lika med post. Om REQUEST_METHOD är get så kommer den information som skickats från webbsidan att hamna i variabeln QUERY_STRING. Om REQUEST_METHOD är post så hämtar programmet den information som skickats från STDIN (standard in) och innehållets längd definieras i variabeln CONTENT_LENGTH. Ett exempel. Ett CGI-program som heter test.cgi anropas från en webbsida där det finns en FORM som ser ut så här: <FORM METHOD="get" ACTION="test.cgi"> <INPUT TYPE="text" NAME="iljruta1" SIZE="20"> <INPUT TYPE="text" NAME="iljruta2" SIZE="20"> <INPUT TYPE="submit" VALUE="SKICKA!"> </FORM> På FORMen finns alltså två textrutor och en knapp. Personen som besöker hemsidan skriver in någonting i den första textrutan, t ex "August Strindberg" och någonting i den andra, t ex "boken Inferno". Metoden är get och den information som skickats hamnar alltså i variabeln QUERY_STRING. Om man skulle printa ut innehållet i QUERY_STRING rakt av utan att göra någonting med det skulle resultatet i det här exemplet se ut så här: iljruta1=August+Strindberg&iljruta2=boken+Inferno Här följer några fler ENVIRONMENT VARIABLES:
|
|
Så här kan ett program som skriver ut nå "environment variables" se ut: #!/usr/local/bin/perl print "Content-type: text/html\n\n"; $gate=$ENV{"GATEWAY_INTERFACE"}; $uagent=$ENV{"HTTP_USER_AGENT"}; $raddr=$ENV{"REMOTE_ADDR"}; $chost=$ENV{"REMOTE_HOST"}; $reque=$ENV{"REQUEST_METHOD"}; $servadm=$ENV{"SERVER_ADMIN"}; $servname=$ENV{"SERVER_NAME"}; $servprot=$ENV{"SERVER_PROTOCOL"}; print "<HTML>\n"; print "<HEAD>\n<TITLE>environment variables</TITLE>\n"; print "</HEAD>\n"; print "<BODY BGCOLOR='white'>\n"; print "<FONT FACE='Artial,sans-serif' COLOR='black' SIZE='4'>"; print "ENVIRONMENT VARIABLES<BR> <BR>"; print "<DL>"; print "<DT>GATEWAY_INTERFACE"; print "<DD>$gate"; print "<DT>HTTP_USER_AGENT"; print "<DD>$uagent"; print "<DT>REMOTE_ADDR"; print "<DD>$raddr"; print "<DT>REMOTE_HOST"; print "<DD>$chost"; print "<DT>REQUEST_METHOD"; print "<DD>$reque"; print "<DT>SERVER_NAME"; print "<DD>$servname"; print "<DT>SERVER_PROTOCOL"; print "<DD>$servprot"; print "<DT>SERVER_NAME"; print "<DD>$servname"; print "</DL>"; print "</BODY>"; print "</HTML>"; Hur man gör för att lägga in skriptet på servern och få det att fungera finns beskrivet under CGI/1 lite grunder. Sidan gjordes av ilj@flowsim.se Senast ändrad 26 mars 2004. Den här sidan hör hemma i ett ramsystem hos www.flowsim.se |