RBI-Logo
Beispielwebseiten

Startseite
Download
Paßwortschutz
SHTML
PHP
Redirect

Verantwortlich für Inhalt und Design:
Webmaster der Informatik
<Email>
<Homepage>

Erklärung: Diese Seite gehört zu den Webseiten der RBI. Für den Inhalt gelinkter Seiten außerhalb dieser Seiten sind die Autoren nicht verantwortlich.

Zeitstempel:  15.05.2003 UTC 11:41:15
© EJP

Webserver - SHTML

Mit SHTML hat man die Möglichkeit, Inhalte zu berechnen und so in HTML-Seiten einzufügen, daß der Anwender davon nichts mitbekommt und auch nicht mehr sieht, welche Skripte ursprünglich eingefügt wurden. Der folgende Abschnitt ist eine dynamisch auf Erreichbarkeit prüfende Linkliste (Quellcode weiter unten).

Linkliste


 Link ist erreichbar!  www.uni-frankfurt.de/
 Link nicht erreichbar!  www.jaskajgkafjsgjfklsjglkjg.de/
 Link ist erreichbar!  www.google.de/

Die Steuerdatei

Die .htaccess Steuerdatei umfaßt die folgenden Befehle:
Redirect permanent /~www1test/redirect_test.html http://www.informatik.uni-frankfurt.de/~www1test/index.html
Redirect permanent /~www1test/redirect_extern.html http://www.informatik.uni-frankfurt.de/
AddType application/x-httpd-php .html
Options ExecCGI Includes
Unter Options wird durch das Schlüsselwort "Includes" mitgeteilt, daß SHTML-Dateien vor dem Senden geparst und zusätzliche Inhalte eingebunden werden.

Tips und Tricks

Normalerweise werden nur .shtml Dateien mit "Includes" untersucht. Da aber der XBitHack aktiviert ist, wird jede normale HTML Datei, bei der das Execute-Flag (Dateirechte z.B. 755 rwxr-xr-x statt 644 rw-r--r--) gesetzt wird, wie eine SHTML-Datei behandelt. Beispiel: Diese Seite als HTML. Kleines Problem! SHTML und PHP Includes widersprechen sich, weswegen hier wieder die Endung .htm benutzt wurde. Um auch .html Dateien benutzen zu können, ist es leider notwendig, auf den folgenden Eintrag in der .htaccess Datei zu verzichten.
AddType application/x-httpd-php .html
Macht aber gar nichts, da PHP und SHTML prinzipiell die gleichen Möglichkeiten bieten und es somit genügt, eine von beiden Methoden zu verwenden.

Quellcode dieser Seite

01 <!--Die folgenden Zeilen sind nötig, der Titel kann je nach Seite angepaßt werden-->
02 <html>
03 <head>
04 <title>RBI - Beispiel SHTML</title>
05 
06 <!--Hier wird das Menü eingefügt! Achtung bei SHTML andere Syntax-->
07   <!--#include virtual="./menue.html"-->
08 
09 <!--Hier beginnt die eigentliche Seite-->
10 
11 <td width=100% valign="top">
12 
13 <h1 align=center>Webserver - SHTML</h1>
14 
15 <p class="erps" align="justify">
16 Mit SHTML hat man die Möglichkeit, Inhalte zu berechnen und so in HTML-Seiten einzufügen, daß der Anwender
17 davon nichts mitbekommt und auch nicht mehr sieht, welche Skripte ursprünglich eingefügt wurden. Der folgende
18 Abschnitt ist eine dynamisch auf Erreichbarkeit prüfende Linkliste (Quellcode weiter unten).
19 
20   <!--#include virtual="linklist.cgi"-->
21 
22 
23 <h2 align=center>Die Steuerdatei</h2>
24 <p class="erps" align="justify">
25 
26 Die <b>.htaccess</b> Steuerdatei umfaßt die folgenden Befehle:
27 
28   <!--#include virtual="./htaccess.quellcode"-->
29 
30 Unter Options wird durch das Schlüsselwort "Includes" mitgeteilt, daß SHTML-Dateien vor dem Senden geparst und
31 zusätzliche Inhalte eingebunden werden.
32 
33 <h2 align=center>Tips und Tricks</h2>
34 <p class="erps" align="justify">
35 
36 Normalerweise werden nur .shtml Dateien mit "Includes" untersucht. Da aber der XBitHack aktiviert ist, wird jede
37 normale HTML Datei, bei der das Execute-Flag (Dateirechte z.B. 755 rwxr-xr-x statt 644 rw-r--r--) gesetzt wird, wie eine
38 SHTML-Datei behandelt. Beispiel: Diese Seite als <a href="shtml.htm">HTML</a>. Kleines Problem! SHTML und PHP Includes
39 widersprechen sich, weswegen hier wieder die Endung <b>.htm</b> benutzt wurde. Um auch <b>.html</b> Dateien benutzen zu
40 können, ist es leider notwendig, auf den folgenden Eintrag in der <b>.htaccess</b> Datei zu <b>verzichten</b>.
41 
42   <!--#include virtual="./htaccess_php.quellcode"-->
43 
44 Macht aber gar nichts, da PHP und SHTML prinzipiell die gleichen Möglichkeiten bieten und es somit genügt,
45 eine von beiden Methoden zu verwenden.
46 
47 <h2 align=center>Quellcode dieser Seite</h2>
48 <p class="erps" align="justify">
49 
50   <!--#include virtual="./shtml.shtml.quellcode"-->
51 
52 <h2 align=center>Quellcode des Link-Skripts</h2>
53 <p class="erps" align="justify">
54 Einfach ein paar Variablen anpassen und schon kann man seine eigene Linkliste etwas aufpeppen. Die Angabe 
55 der Links erfolgt in der eingebundenen Datei <b>links.txt</b>.
56 
57   <!--#include virtual="./linklist.quellcode"-->
58  
59 Und die dazugehörige Linklist-Datei:
60   <!--#include virtual="./links.txt.quellcode"-->
61 
62 
63 
64 <!--Hier endet die eigentliche Seite-->
65 </td>
66 </tr>
67 </table>
68 
69 </body>
70 </html>

Quellcode des Link-Skripts

Einfach ein paar Variablen anpassen und schon kann man seine eigene Linkliste etwas aufpeppen. Die Angabe der Links erfolgt in der eingebundenen Datei links.txt.
01 #!/usr/local/bin/perl -wT
02 
03 use strict;
04 use CGI;
05 use FileHandle;
06 use LWP::UserAgent;
07 use HTTP::Request;
08 
09 # Die CGI-Schnittstelle
10 my $q = new CGI;
11 my $r = new HTTP::Request 'GET';
12 my $ua = new LWP::UserAgent;
13 
14 # Gewisse lokale Variablen
15 my $url_cgi ="http://www.informatik.uni-frankfurt.de/~www1test/";
16 my @color = ( "whitesmoke", "lightgrey" );
17 my %m = ( "author", "Ernst Preussler" );
18 my $fb = new FileHandle "links.txt";
19 
20 
21 # Gib die Seite aus
22 print	$q->header( "text/html" );
23 
24 print	$q->div	(
25 			{ -align => "center" },
26 			$q->h1 ( " Linkliste" )
27 		),
28 	$q->a	(
29 			{ -name => "linkliste" },
30 			$q->hr
31 		);
32 
33 # 
34 while (!$fb->eof){
35 	my $line = $fb->getline;
36 	$ua = LWP::UserAgent->new;
37 	$r = new HTTP::Request 'HEAD', $line;
38 	my $resp = $ua->request($r);
39 	my $rs = $resp->code();
40 	
41 	print " ";
42 	if ($rs != 200){
43 		print	$q->img (
44 			{ -src => "/icons/reddot2.gif", -align => "absmiddle", -alt => "Link nicht erreichbar!" }
45 		); 
46 	}
47 	else{
48 		print	$q->img (
49 			{ -src => "/icons/greendot2.gif", -align => "absmiddle", -alt => "Link ist erreichbar!" }
50 		);
51 	}
52 	my $linewo = $line;
53 	$linewo =~ s/http:\/\///;
54 	print "  <a href=\"$line\">$linewo</a><br>";
55 }
56 
57 # Fußzeile mit Mailadressen und Copyright
58 print	"<hr>";
Und die dazugehörige Linklist-Datei:
1 http://www.uni-frankfurt.de/
2 http://www.jaskajgkafjsgjfklsjglkjg.de/
3 http://www.google.de/