Hier zeige ich ein paar "Tricklein", die ich mit HTML gemacht habe.
Manche Dinge könnte man viel einfacher lösen, wenn man die Dateien nur online veröffentlicht und alle PHP-Befehle auf jeden Fall interpretiert würden.
Mein Ziel ist jedoch, die Dinge so zu machen, dass auch der Dateien mit "rohem", nicht interpretiertem Quellcode (HTML und PHP gemischt) im Browser anständig angezeigt werden. Dies ist nicht nur für die Entwicklungsperiode angenehmer, sondern es macht es auch möglich, dass man die Dateien so, wie sie sind, als ZIP-File zum Download anbieten kann oder sie auf eine CD brennen und so weitergeben kann.
Ziel: Wenn die Datei lokal angezeigt wird, d.h. der Quellcode inklusive PHP beim Browser ankommt, so soll ein Link zur Online-Hauptseite angezeigt werden. Wenn die Datei aber vom Server angezeigt wird und somit PHP interpretiert wird, so soll ein Link auf die aktuelle Seite angezeigt werden (für den Fall, dass jemand die Seite ausdruckt oder vom Server zu sich herunterlädt). Dabei soll noch unterschieden werden, ober die URL mit https:// oder einfach mit http:// anfängt.
<script language="php">if (false)
{</script>
<a href="http://www.tiptom.ch/" title="Zur Online-Hauptseite">http://www.tiptom.ch/</a>
<script language="php">} else {
$fullurl=(($HTTPS=="on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo "<a href=\"$fullurl\" title=\"Diese Seite vom Internet
neu laden\">$fullurl</a>\n"; }</script>
Hier wird die Technik "Jumping in and out of PHP" angewendet. Man kann ohne weiteres in einem ersten Häppchen PHP eine Bedingungs-Struktur anfangen, diese durch HTML unterbrechen, und in einem zweiten Block PHP die Struktur weiterführen.
Die Datei wird offline angezeigt, und der Browser kriegt den gesamten, nicht interpretierten Quelltext zu sehen. Für den Browser ist einzig der Link interessant, der Rest ist für ihn eine unbekannte Skriptsprache, die er ignorieren sollte.
<script language="php">if (false)
{</script>
<a href="http://www.tiptom.ch/" title="Zur
Online-Hauptseite">http://www.tiptom.ch/</a>
<script language="php">} else {
$fullurl=(($HTTPS=="on") ? "https" : "http")."://"..$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo "<a href=\"$fullurl\" title=\"Diese Seite vom Internet
neu laden\">$fullurl</a>\n"; }</script>
Die Datei wird vom Webserver zum Browser geschickt. Dabei werden alle PHP-Befehle
interpretiert, und der Browser kriegt nur noch das reine HTML zu sehen.
Das sieht der Webserver (PHP-Engine):
<script language="php">
if
(false) {</script>
<a href="http://www.tiptom.ch/" title="Zur
Online-Hauptseite">http://www.tiptom.ch/</a>
<script language="php">}
else {
$fullurl=(($HTTPS=="on") ? "https"
: "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo "<a href=\"$fullurl\" title=\"Diese Seite vom Internet
neu laden\">$fullurl</a>\n";
}</script>
Die Bedingung if (false) {
ergibt immer den Wert "falsch", also wird automatisch die Aktion nach
else {
ausgeführt.
Der Programmcode nach else {
enthält eine verkürzte
Schreibweise einer Bedingung, um das "https
" bzw. "http
"
automatisch zu wählen, je nachdem, ob die Seite gesichert (verschlüsselt)
übertragen wird oder nicht.
Man könnte alles auch viel ausführlicher schreiben:
if ($HTTPS=="on") { $fullurl="https";
} else { $fullurl="http"; }
$fullurl=$fullurl."://"..$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];}
Das heisst, die ganze URL setzt sich zusammen aus dem Protokoll (http
bzw. https
), den Zeichen "://
", dem Servernamen
(Domain) $_SERVER['HTTP_HOST']
und dem Pfad zur Datei $_SERVER['PHP_SELF']
.
Hinweis: in PHP werden Strings (Buchstabenketten) mit dem ".
"
Punkt aneinandergefügt (und nicht mit dem "+
" Pluszeichen
wie etwa in JavaScript).
Diese ganze URL wird dann in Form eines Links in die Datei geschrieben und an den Browser geschickt:
<a href="" title="Diese Seite
vom Internet neu laden"></a>
Das Attribut title="Diese Seite vom Internet neu laden"
bewirkt, dass dieser Text in neueren Browsern als "ToolTip" angezeigt
wird, wenn der Besucher mit dem Mauszeiger über dem Link ist.
Wenn Sie auf Ihrer Website keine Verschlüssung haben, d.h. wenn alle Seiten
mit dem http
-Protokoll übertragen werden, können Sie
die Variable $fullurl
auch viel einfacher definieren:
$fullurl="http://"..$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
mailto:
-Link
anbietenDieses Tricklein macht die URL wie oben beschrieben und schreibt diese als
Parameter in ein mailto:
-Link-Tag:
<script language="php">
if
(false) {</script>
<a href="mailto:info@tomogramm.ch"
title="Mail an Thomas Luethi schreiben">info@tomogramm.ch</a>
<script language="php">
}
else { $fullurl=(($HTTPS=="on") ? "https"
: "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo "<a href=\"mailto:info@tomogramm.ch?subject=Feedback".
$_SERVER['PHP_SELF']."&body=Feedback $fullurl\" title=\"Mail an Thomas Luethi
schreiben\">info@tomogramm.ch</a>\n"; }</script>
Wie die URL zusammengebastelt wird, steht oben.
An ein mailto:
in einem E-Mail-Link kann man vorgegebene Parameter
anhängen für folgende Dinge: Kopie (CC, BCC), Subject, Body. Das geht
so: Anhängen mit dem Fragezeichen (?), mehrere Parameter mit der Zeichenfolge &
(HTML-Code fuer das "kaufmännische Und" (&), dann "amp;") aneinanderreihen:
<a href="mailto:name@example.com?cc=kopie@example.com&bcc=verstecktekopie@example.com
&subject=Vorgeschlagenes Betreff&body=Vorgeschlagener Mailtext">Link-Text,
der im Browser erscheint</a>
Hier werden also die ganze URL im Body und noch der letzte Teil davon, $_SERVER['PHP_SELF']
,
automatisch im Subject eingefügt. Das erspart dem Benutzer das Cut-and-Paste
der URL aus der Browser-Adresszeile ins Mailfenster.