Echo

|
echo STRING; oder echo (STRING); |
"echo" ist die Standardausgabefunktion von PHP. Echo gibt es in zwei
Geschmacksrichtungen: einmal als "language construct" wie
echo "hallo welt";
und einmal funktionsähnlich wie
echo ("hallo welt");. Beide Funktionen bewirken
dasselbe, eine Ausgabe in den Browser des benutzers. Wie in
Was ist PHP erwähnt,
können auch HTML Tags ausgegeben werden.
Zur Ausgabe von Sonderzeichen (wie: neue zeile (im HTML-Quelltext,
die Ausgabe an "strategisch wichtigen Stellen", z.B.
einer neuen Tabellenzeile ist zu empfehlen, da dann der ausgegebene
Quelltext einfacher lesbar ist.),
Backslashes, Dollarzeichen und Gänsefüßchen) lesen Sie bitte
Arbeiten mit Strings
Ausgabe von Variablen
Variablen werden mit dem Dollarzeichen gekennzeichnet (siehe
Variablen) und die Ausgabe erfordert
keine speziellen Befehle. echo $i; gibt z.b. die Variable i aus,
echo "$i"; tut -Gott sei dank- dasselbe, so bleiben Ausgaben wie
"Sie sind der $i te Besucher" übersichtlich. (Ausgabe z.B. "Sie sind
der 5 te Besucher")
Anfügen von Strings
Wie in
Arbeiten mit Strings
beschrieben werden Strings in PHP mit "."
aneinandergereiht. Soll der i-te Besucher etwa kein Abstand nach
seiner Nummer sehen ist man zu einem Trick gezwungen: da echo "Sie
sind der $ite Besucher" nach einer -nicht vorhandenen - Variable
namens ite suchen würde verwendet man entweder
echo "Sie sind der ";
echo $i;
echo "te Besucher";
oder das kürzere
echo "Sie sind der ".$i."te Besucher";
Wird an das Ende des Strings "Sie sind der " der String (die Variable
$i wird hier als String aufgefasst) $i (Wert z.B. 5) angehängt, an die
direkt der String "te Besucher". angehängt wird.
Kurzform von Echo
Eine Kurzform von Echo binden Sie mit
<?=$VARIABLENNAMEN?>
in Ihre PHP-Dateien ein. Das funktioniert allerdings
nichtb bei jedem Presence Provider.
Header

|
Header (NEUER HEADER); |
funktioniert zwar nur am Ausgabenanfang (es darf kein HTML-Quelltext vor
der Header-Anwesinung stehen und es darf kein echo erfolgt sein: nicht einmal das
Einbinden von Dateien mit Include oder eine Leerzeile darf vor dem PHP-Tag
stehen), ist aber ziemlich nützlich. Zum Einen kann man dadurch den
Benutzer automatisch zu einer anderen Datei umleiten, zum Anderen erfüllt
es Aufgaben, ohne die eine (genormte) Authentifizierung des Benutzers
gar nicht möglich wäre.
Header-Ausgaben erfolgen i.d.R. für den Anwender unsichtbar und erscheinen auch nicht
in der HTML-Datei.
Umgeleitet wird mit:
<?php
header("Location: http://www.php.net");
exit; /* Um keinen weiteren Code dieser Seite auszuführen */
?>
die PHP-Tags habe ich als Erinnerung angeben, sie auf jeden Fall an
den Anfang der Datei zu setzen.
<?php
header("http/1.0 404 Not Found");
?>
Gehört eher zum bereich Spielerei solange man vorher nicht
authentifiziert und
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Zeitpunkt in der Vergangenheit
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // immer geändert
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
?>
(Quelle:
PHP-Manual)
ist gut um eine Aufnahme in den Browsercache oder Proxycache zu verhindern.
WWW-Authenticate
Der WWW-Authenticate-Header ist im Grunde nur ein Spezialfall eines
Headers (funktioniert nur im Linux-Apache ohne Probleme), ruft aber
im Browser folgende wahrscheinlich bekannte Dialogbox auf:
<?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm=\"Mein Bereich\"");
Header("HTTP/1.0 401 Unauthorized"); //auf diese Seite wird der User geschickt wenn er sich falsch authorisiert.
Header("Location: canceled.php"); //auf diese Seite wird der User geschickt wenn er den Cancel-Button klickt.
exit;
} else {
echo "Hallo User $PHP_AUTH_USER mit Passwort $PHP_AUTH_PW.";
}
?>
Sowohl der Benutzer als auch der Programmierer hat von dieser
Standartmethode einige Vorteile: Die Variablen $PHP_AUTH_USER und
$PHP_AUTH_PW werden nämlich von Browser auf jeder Folgeseite
zur Verfügung gestellt; der Programmierer kann dieselbe Abfrage
vor jede zu schützende Datei stellen und muss sich nicht darum kümmern,
die Variable ständig weiter zu geben (das erledigt der Browser des
Anwenders); der User braucht sich nur einmal
einzuloggen (und es ist egal, bei welcher Datei) und kann eventuell
vorhandene Passwortmanagementfunktionen des Browsers nutzen.
Dass diese Authorisierung erst richtig Spaß macht, wenn man die
Benutzerdaten mit einer Datenbank abgleicht, sollte klar sein
(erst dann kann man Möglichkeiten von PHP gegenüber einer einfachen
.htaccess Zugriffsbeschränkung ausspielen), auch der Weg ist
unglaublich einfach (einfache eine mysql_query auf
Select password where user='$PHP_AUTH_USER' ausführen, in etwa so:
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm=\"Mein Bereich\"");
Header("HTTP/1.0 401 Unauthorized"); //auf diese Seite wird der User geschickt wenn er sich falsch authorisiert.
Header("Location: canceled.php"); //auf diese Seite wird der User geschickt wenn er den Cancel-Button klickt.
exit;
} else { // Benutzername und Passwort liegen vor
$res=mysql_db_query ("testdb","select password from users where user='$PHP_AUTH_USER'");
$num=mysql_num_rows($res);
if ($num==0)/* kein treffender Datensatz*/
{
Header("HTTP/1.0 401 Unauthorized");
exit;
}
echo "Hallo User $PHP_AUTH_USER mit Passwort $PHP_AUTH_PW.";
}
Das ist eine ziemlich professionelle Methode, seinen
Administartionsbereich zu schützen, weil alle Browser (bspw.
IE, Netscape, Mozilla, Opera) solche Authorisierungen unterstützen.
Zwei Dinge noch: Da es Header-Kommandos sind, müssen Sie immer
am Anfang der Ausgabe gesendet werden (es darf nicht einmal ein
Leerzeichen vor dem <?php stehen) und das macht auch die Einbindung
per Include etwas tricky.
Zum Anderen: Vergessen Sie die Zeilen in
keiner Datei:
Wenn Sie eine Passwortgeschützte Datei verwalte_artikel.php haben
aber verwalte_user.php diese Abfrage NICHT hat kann sich jeder
bequem zuerst die Rechte geben und dann die Artikel verändern.
Ausserdem sehen Sie im Browser ja nicht in welcher Datei Sie
die Zeilen vergessen haben könnten, weil Sie ja nur einmal die
Aufforderung zum Login erhalten.
Die Mail-Funktion
Mailen geht in PHP einfach mit
mail("Empfänger","Betreff","Nachricht");
Aber: Ein vierter Parameter ist möglich und gibt die "Extras" an, wie Absenderadresse,
Reply-To-adresse oder Kopienempfänger. Reply-To auf den Absender zu setzen ist
eine gute Idee, weil man dann im Mailprogramm nur auf Antworten zu klicken braucht um
dem Absender auch tatsächlich eine Mail zu schreiben -- ansonsten schickt man die Antwort
einem Standardempfänger.
mail("vetterheinz@provinz.de", "$betreff", $message, "From: $email\nReply-To: $email\nX-Mailer: PHP/" . phpversion(). "\nCC: sie@provider.de");