HOME -> PERL_TUTORIAL -> perl-12-header Onsdag, 13. December 2017

HOME
FORUM
OPEN DIRECTORY
BOOKMARK
Offentliggjort 2003 - Opdateret n/a

Lektion 12

Lektionen forklarer hvad http header og print kommandoen gør.

Indhold

 

TopHTTP-Header
Når du sender data fra din browser til web-serveren, og dermed kalder et cgi script, gøres dette via HTTP-protokollen. Samtidig med at browseren kalder scriptet kan den også sende data med, som skal bruges af cgi scriptet, dette kunne være data fra et html-formular. Alt imens serveren bearbejder de modtagne oplysninger "venter" browseren på et svar. I princippet foregår det på samme måde som man kalder et ganske almindelig html-dokument. Derfor skal cgi scriptet også returnere data i form af html kode til browseren. Igen anvendes HTTP-protokollen til retursvaret til browseren. Og her forlanger HTTP-protokollen at det returnerede indeholder en HTTP-header. HTTP-headeren er nødvendig for at browseren kan forstå de returnerede data.

For at sende HTTP-headeren anvendes perl funktionen print. Denne kommando udskriver de efterfølgende html koder. En af de første koder et cgi script skal indeholde er selve HTTP-headeren. HTTP-headeren angives ved kommandoen "Content-type:" samt en angivelse af "Mime-type". Da der sendes html kode til browseren anvendes Mime-typen "text/html".
For at afslutte HTTP-headeren skal man angive to gange \n som betyder så meget som "new line". Sammenlagt kommer vores HTTP-header til at se ud som følgende:


print "Content-type: text/html\n\n";


Via denne sætning ved browseren at der kommer html-kode. For at gøre HTTP-headeren komplet tilføjer web-serven de resterende data.

Efterfølgende kan man bruge print til at udskrive et komplet html-dokument med de ønskede tags. I slutningen af hver linie angives også et \n "new line" tegn. Ved at gøre dette bliver det returnerede html-dokument mere overskuelig idet man fremtvinger en ny linie. Gør man det ikke vil den returnerede html-kode stå i en lang linie.

 

TopPrint kommando
For at undgå at skulle skrive print foran hver linie, findes der et alternativ løsning. Du skriver print efterfulgt af et "stikord", f.eks.: print <<"KODE"; Når du er færdig med at skrive din html-kode angives igen KODE. Alt hvad der står mellem disse "stikord" returneres til browseren som det er skrevet. Man undgår altså at anvende print samt \n i hver linie.
Efterfølgende eksempel illustrerer dette.


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";

print <<"HTML";
<html><head><title>Print på en enkelt måde!</title></head><body>
<h1>Print på en enkelt måde</h1>
<p>På denne måde undgår du at skrive print foran hver linie. Du
kan selvfølgelig også anvende princippet i forbindelse med JavaScript.</p>
<script type="text/javascript">
<!--
document.write("<p>JavaScript kan også angives på denne måde!</p>");
//-->
</script>
</body></html>
HTML


Resultat:


Den returnerede html kode ser ud som følgende.


<html><head><title>Print på en enkelt måde!</title></head><body>
<h1>Print på en enkelt måde</h1>
<p>På denne måde undgår du at skrive print foran hver linie. Du
kan selvfølgelig også anvende princippet i forbindelse med JavaScript.</p>
<script type="text/javascript">
<!--
document.write("<p>JavaScript kan også angives på denne måde!</p>");
//-->
</script>
</body></html>


Ved at anvende print <<"FOO"; undgår man altså at skrive print foran hver ny linie.
Vær opmærksom på, at der efter <<"FOO"; ikke må være space. Det samme gør sig gældende for afslutningen FOO. Afslut med en blank linie.

 

Copyright © 2002 - 2017
NETeXplorer.dk · All rights reserved Top