Nützliche Funktionen
Hier lernt ihr noch ein paar nützliche Funktionen von PHP kennen.
Sie sollen dazu dienen, eure PHP Fähigkeiten zu festigen, was ihr aber auf alle Fälle wissen und verstehen müsst, ist der erste Abschnitt über include.
Fremde Dateien einbinden (include)
In PHP besteht die Möglichkeit, den Inhalt einer fremden Datei zu laden und auszuführen. Dieses ist extrem praktisch und wird eigentlich in jedem PHP Script verwendet.
Wenn ihr später zu MySQL kommt, dann müsst ihr in jedem Script eine Verbindung zu Datenbank aufbauen. Zu diesem Verbindungsaufbau müsst ihr unter anderem den Benutzernamen und das Passwort angeben.
Was passiert ihr aber nun, wenn sich z.B. das Passwort verändert? Dann müsst ihr in jeder Datei das Passwort anpassen, was unter Umständen sehr aufwendig ist.
Deswegen gibts in PHP die Funktioninclude(„dateiname„);, diese lädt aus einer anderen Datei den Inhalt und führt diesen aus.
An einem Beispiel sieht das so aus:
include.php
<?php $name ="Mein Name ist Max Mustermann";?>
seite.php
<?php include("include.php"); echo "Herzlich Willkommen auf meiner Seite<br>"; echo $name;?>
Hier wird in seite.php der Inhalt von include.php geladen und entsprechend ausgeführt, als hättet ihr folgenden Script stehen gehabt:
<?php //Inhalt aus include.php $name ="Mein Name ist Max Mustermann";//Ende Inhalt aus include.php echo "Herzlich Willkommen auf meiner Seite<br>"; echo $name;?>
Dies ist natürlich noch ein recht unspektakuläres Beispiel, aber wie bereits erwähnt, in eigentlich jedem größeren PHP Script findet man include-Anweisungen.
Auch hilft euch dieser Befehl sehr schön, eure Webseite leichter zu verwalten. Wenn ihr eurer Website eine neue Seite hinzufügen möchtet, dann muss der entsprechende Link ins Menü eingetragen werden. Steht aber dieses Menü auf jeder Seite separat, müsst ihr alle Seiten anpassen.
Per include reicht es aber aus, nur eine Seite anzupassen und auf alle Seiten wird diese änderung übernommen.
navigation.php
Dies ist meine Navigation:<br>
<a href=“home.php“>Home</a><br>
<a href=“seite1.php“>Seite 1</a><br>
<a href=“seite2.php“>Seite 2</a><br>
<hr>
home.php
<?php include("navigation.php");?>
Dies ist meine Startseite
seite1.php
<?php include("navigation.php");?>
Dies ist meine 1. Unterseite
seite2.php
<?php include("navigation.php");?>
Und nun sind wir auf Unterseite 2.
Möchtet ihr hier nun eure Navigation anpassen, müsst ihr nur navigation.php entsprechend anpassen. Noch zu erwähnen ist, dass man auch ganz gewöhnlichen HTML Code in Dateien stehen haben kann, die per include geladen werden, wie es hier der Fall bei navigation.php ist. Dieser HTML Code wird dann ganz normal ausgegeben.
Gibt es die Variable schon?
Möchte man mit PHP überprüfen, ob es eine Variable schon deklariert wurde, d.h. ob es diese schon „gibt“, so kann man dies mit isset($variable) überprüfen.
<?php $var = $_GET["var"];if(isset($var)) { echo "Variable wurde gesetzt"; }else { echo "Variable wurde nicht gesetzt"; }?>
Wenn ihr diese Seite ganz normal aufruft, dann erhalten wir als Ausgabe, dass die Variable nicht gesetzt wurde, wenn wir dann aber an die URL ein ?var=123 hängen, erhalten wir als Ausgabe, dass die Variable übermittelt wurde.
Wenn man überprüfen möchte, ob es eine Variable nochnicht gibt, benötigen wir !isset($variable)
<?php $var = $_GET["var"];if(!isset($var)) { echo "Variable wurde nicht gesetzt"; }?>
Das Ausrufungszeichen vor isset steht für NOT und kehrt die Rückgabe/Ergebnis der Funktion um. Also wenn isset();TRUE zurück gibt, steht dort ein FALSE und umgekehrt.
Man kann aber auch ganz normale Variablen überprüfen lassen.
Gibt es diese Datei?
Eine gute Frage ist, ob es eine Datei gibt. So kann man z.B. tote Links vermeiden.
$datei = „datei.php“;
if(file_exists($datei))
{
echo „Die Datei gibt es“;
}
?>
Mit file_exists() können wir überprüfen lassen, ob es eine Datei gibt. Wenn die Datei vorhanden ist, gibt die FunktionTRUE, sonst FALSE zurück
Schreibt man !file_exists, so wird überprüft, ob die Dateinicht vorhanden ist.
Ist die Datei beschreibbar?
Wenn man Texte in Dateien speichert, so dürfen diese Dateien nicht Schreibgeschützt sein, das heißt sie brauchen die Schreibrechte CHMOD(777).
Mit is_writeable() können wir überprüfen, ob die Datei beschreibbar ist.
<?php if(is_writeable("datei.php")) { echo "sie ist beschreibbar"; }?>
Mit einem Ausrufungszeichen vor dem is_writeableerhalten wir das Gegenteil als Effekt, sprich wir können überprüfen, ob wir die Datei nicht beschreiben können.
Zufall
Hin und wieder braucht man ein Zufallszahlen, z.B. für kleinere Spielereien. Diese kann man aber auch z.B. benutzen, um ein zufälliges Bild auszugeben.
Die Funktion selber ist einfach:
<?php $zufall = rand(1,100); echo $zufall;?>
Mit der Funktion rand bestimmen wir eine Zufallszahl zwischen 1 und 100. Ihr könnt natürlich auch einen anderen Zahlenbereich benutzen.
In der Klammer steht die Untergrenze und danach die Obergrenze des Zahlenraumes.
Damit wir nicht immer die gleiche „Zufallszahl“ erhalten, ist es wichtig, dass wir einen Startwert festlegen:
<?php srand((double)microtime()*1000000); $zufall = rand(1,100);?>
Dies geht mit srand. Dabei werden die Mikrosekunden (microtime) mal 1 Millionen genommen. Anschließend wird wieder eine Zahl zwischen 1 und 100 ermittelt.
Bei neueren PHP-Versionen wird die Festlegung des Startwertes automatisch vorgenommen.
Den Besucher ausspionieren
Mit PHP haben wir die Möglichkeit, viele Informationen über den Besucher zu erhalten z.B. seine IP-Adresse.
Diese erfahren wir so:
<?php $ip = $_SERVER["REMOTE_ADDR"]; echo $ip;?>
Wenn ihr diesen Befehl auf eurem virtuellem Server aufrufen, erhalten ihr normalerweise 127.0.0.1.
Auf dem echtem Server erhaltet ihr aber dann die IP Adresse des Besuchers.
Außerdem kann man noch erfahren, auf welcher Seite der Besucher gerade ist:
<?php $seite = $_SERVER["PHP_SELF"]; echo $seite;?>
Wenn eure Datei jetzt in einem Unterorder liegt, so wird der Ordnername auch angezeigt, möchte man diesen entfernen, so braucht man basename($variable).
<?php $seite = $_SERVER["PHP_SELF"]; echo basename($seite);?>
Wenn man aber den Namen des Ordners wissen möchte, sollte man dirname($variable) benutzen.
<?php $seite = $_SERVER["PHP_SELF"]; echo dirname($seite);?>
Wenn man viel mit dynamischen Seiten arbeitet, reicht es nicht mehr aus, nur den Dateinamen zu erfahren.
Denn wenn man auf der Seite index.php?id=1 ist, und dies mit PHP_SELF anzeigen möchte, so erhält man als Ausgabeindex.php.
Damit diese Werte auch angezeigt werden, müssen wir die Funktion etwas umschreiben:
<?php $seite = $_SERVER["REQUEST_URI"]; echo $seite;?>
Jetzt würden wir als Ausgabe z.B. index.php?id=1 erhalten.
Mit PHP können wir auch erfahren, woher der Besucher kommt:
<?php $seite = $_SERVER["HTTP_REFERER"]; echo $seite;?>
Dieser Befehl funktioniert aber nur, wenn wir durch einen Link oder ähnliches auf die Seite kommen sind.
Manche Browser unterdrücken diese Information.
Wir können auch erfahren welchen Browser der Besucher benutzt:
<?php $browser = $_SERVER["HTTP_USER_AGENT"]; echo $browser;?>