^ Linux - Friheden til egen webserver: Version 2.5.20040516 - 2020-12-31 ^|
| [[web:ssi-inkludering-af-tekst-i-et-html-dokument|forrige]] | Kapitel 3. Server-Side Includes | [[web:ssi-inkludere-datoer-i-html-sider|næste]] |
----
==== 3.3. Inkludering af uddata fra CGI-programmer og andre programmer ====
Uddata fra et CGI-program kan også inkluderes f.eks.
Alt imellem **<..>** vil blive erstattet af de data som programmethoved.cgiudskriver. Hvis CGI-programmet udskriver en omdirigering af formen
Location:URL\r\n\r\n
indsættesURLsom et link istedet. Det følgende eksempel bruger et CGI-program til at generere **
Test
Og koden tilcolorbody.cgier et lille Perl-program
#!/usr/bin/perl
#find RRGGBB farve på basis af tiden
my $color=sprintf("%x", ( time*25 % 0x1000000 ));
print "Content-Type: text/html\r\n\r\n";
#udskriver tag
print "\n";
Programmet fungerer ved attimeer antallet af sekunder siden 1 jan. 1970. Dette ganges med 25 der er 'hastigheden' hvormed farven ændres og modulus 0x1000000 tages, det giver et resultat mellem 0x000000 og 0xffffff, dvs. alle mulige farver. Intensiteten af den blå komponent cykler med en periode på 10 sekunder, den grønne komponent med en periode på 43 minutter og den røde komponent varierer med en periode på omkring en uge.
Browseren modtager HTML-kode som:
Test
Reloades siden så vil baggrundfarven ændre sig fra gang til gang. NB. dette kunne gøres smartere med Javascript, men det kræver at browseren kan køre Javascript-programmer og at brugeren ikke har slået det fra.
Det er også muligt at udføre programmer direkte og inkludere deres output f.eks.
Apache vil starte en shell og udføre **who** -programmet, der lister alle, der er logged ind på serveren.
Et mere avanceret eksempel er følgende:
De sidste 50 sider du hentede på denne server var:
Først udskrives Apache's log af alle filer den har afsendt. Dette filteres af grep der udskriver alle linjer der matcher IP addressen på den server der ønsker denne side, og tail -n50 udskriver de sidste 50 linjer. Dvs. de sidst 50 filer som den server hentede. Er access_log filen stor tager det dog en del tid at udføre.
Der er nogle sikkerhedaspekter i at give alle og enhver bruger på serveren lov til at bruge webserver-processerne til at udføre arbitrære kommandoer med arbitrære inddata. Med **Options IncludesNOEXEC** vil ovenstående #exec kommandoer ikke kunne udføres.
----
| [[web:ssi-inkludering-af-tekst-i-et-html-dokument|forrige]] | [[web:index|hjem]] | [[web:ssi-inkludere-datoer-i-html-sider|næste]] |
| Inkludering af tekst i et HTML-dokument | [[web:server-side-includes|op]] | Inkludere datoer i HTML-sider |