Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71
Die Inhalt dieser Seite sind eine Kurzfassung vom PHP-Tutorial auf php-einfach.de.
Vielen Dank an dieser Stelle an Nils Reimers.

Autorin: Nina Grässli. Kontakt

Erste Schritte

In einer PHP-Datei können sowohl HTML-Befehle als auch PHP-Befehle enthalten sein. Beispiel eines PHP-Codes:

<?php
phpinfo ();
?>

In einer PHP-Datei können sowohl HTML-Befehle als auch PHP-Befehle enthalten sein. Ein PHP-Befehl wird immer mit <?php begonnen und mit ?> beendet.


Text ausgeben per echo

echo benutzt man, um einen bestimmten Text auszugeben.

<?php
echo "Hello World" ;
?>

Ausgabe: Hello World

Den ausgegebenen Text kann man mit den üblichen HTML-Tags fett und kursiv gestalten.

Ausgabe von "Hello World" (mit Anführungszeichen):

<?php
echo "Hello \" World \" " ;
?>

Die Anführungszeichen müssen maskiert werden, da sie sonst vom Computer mit den HTML-Tags verwechselt werden. Dasselbe gilt für den Backslash, auch da zur Maskierung einen zweiten Backslash davorsetzen.

Der Vorteil von echo ist, dass die Texte dynamisch, d.h. aus einer Datenbank erzeugt werden. So kann bei jedem Nutzer etwas anderes stehen.


Kommentare

Kommentare können mit zwei Slashs // oder mit einer Raute # geschrieben werden. Für mehrzeilige Kommentare verwendet man /* und */.

Beispiel:

<?php
echo "Hallo Welt! <br>" ;
//dies ist ein Kommentar

#dies ist auch ein Kommentar

/*Dies ist ein
mehrzeiliger Kommentar*/
?>

Variablen

Variablen in PHP beginnen immer mit einem $, direkt gefolgt vom Variablen.Namen, danach ein = und anschliessend der Text in Anführungszeichen. Am Ende ein Semikolon.
Wichtig: Gross- und Kleinschreibung wird beachtet, und Variablennamen beginnen immer mit einem Buchstaben oder Unterstrich.

<?php
$name = "Hans Mueller" ;
?>

Zur Ausgabe benötigt man den Befehl echo. Beispielscript:

<?php
$name = "Hans Mueller" ;
echo "Mein Name ist $name";
?>

Ausgabe: Mein Name ist Hans Mueller

Variablen überschreiben

Einfach der Variable einen neuen Wert zuweisen.

<?php
$name = "Paul Meier" ;
echo "Zuerst heisse ich $name <br> ";

$name = "Stefan Müller" ;
echo "Dann ist mein Name $name";
?>

Ausgabe:
Zuerst heisse ich Paul Meier
Dann ist mein Name Stefan Müller

Variablen verlängern

Man kann auch an eine bestehende Variable eine zweite Variable (oder Text) anhängen.

<?php
$name = "Hans " ;
$name .= "Mueller" ;
echo $name ;
?>

Ausgabe: Hans Mueller

Beachte den Punkt vor dem Gleichheitsszeichen. Dadurch erkennt PHP, dass eine Variable an die bestehende Variable angehängt werden soll. Dies kann auch direkt im echo geschehen:

<?php
$name = "Hans" ;
echo "Mein Name ist " .$name. " Mueller" ;
?>

Ausgabe: Mein Name ist Hans Mueller

Hier wurde sowohl vor als auch nach der Variable ein Text hinzugefügt. Deshalb wird auch vor und nach der Variable ein Punkt gesetzt.

Dies geht auch mit Variablen:

<?php
$farbe = "rotes" ;
$text = "Wir haben ein " .$farbe. " Haus" ;
echo $text ;
?>

Ausgabe: Wir haben ein rotes Haus

Variablentypen

Integer: enthält nur Ganzzahlen, d.h. Zahlen ohne Komma.

String: enthält Text (Sätze, Wörter).

Float: Enthält Fliesskommazahlen, d.h. eine Zahl mit Komma. (Aber Achtung: Man verwendet kein Komma, sondern einen Punkt).

Double: Im PHP das gleiche wie float.

bool: Werte true und false

Rechnen mit Variablen

Addieren: $zahl1 + $zahl2
Subtrahieren: $zahl1 - $zahl2
Multiplizieren: $zahl1 * $zahl2
Dividieren: $zahl1 / $zahl2
Zahl1 hoch Zahl2 (X^Y): pow($zahl1,$zahl2)
Wurzel von 64: sqrt(64)
2*Zahl1 + 5*Zahl2 - 3: 2*$zahl1 + 5*$zahl2 - 3
Inkrementieren (um 1 erhöhen): ++ ($erhoehen++)
Dekrementieren (um 1 senken): -- ($senken--)


Kurzschreibweisen für Zuweisungen

Übliche Schreibweise für Erhöhung um den Wert 10:

<?php
$zahl = 1 ;
$zahl = $zahl + 10 ;
echo $zahl ;
?>

Kurzschreibweise:

<?php
$zahl = 1 ;
$zahl += 10 ;
echo $zahl ;
?>

Durch das += wird der Inhalt der Variable $zahl um den Wert 10 erhöht. Natürlich kannst du auch -=, *= oder /= verwenden.

$_GET und $_POST

Datenübergabe mittels $_GET

  • per URL übertragen
  • wird genutzt, um Links mit dynamische Werten auszustatten
<?php
$vorname = $_GET[ "vorname" ];
$nachname = $_GET[ "nachname" ];
echo "Hallo $vorname $nachname " ;
?>

Datenübergabe mittels $_POST

  • per Formular übertragen
  • "sicherer", da Inhalt nicht für alle sichtbar in URL übertragen wird. Jedoch keineswegs sicher!
  • wird für Formulare genutzt.
Vorname:

Nachname:


Code auf der PHP-Seite für das obige Formular:

<?php
$vorname = $_POST[ "vorname" ];
$nachname = $_POST[ "nachname" ];
echo "Hallo $vorname $nachname " ;
?>

Die beiden Methoden lassen sich natürlich auch kombinieren.

if-Anweisungen

Mit if können wir überprüfen, ob bestimmte Bedingungen erfüllt bzw. nicht erfüllt sind.

<?php
if(Bedingung)
  {
  Anweisung
  }
?>

Trifft das if- nicht zu, kann man auch noch ein else definieren, damit auch bei einer "false" Ausgabe etwas geschieht.

<?php
if(Bedingung)
  {
  Anweisung
  }
else
  {
  Anweisung
  }
?>

if- und else- Anweisungen können auch ineinander verschachtelt werden. Falls nach einer if-Anweisung eine zweite if-Anweisung folgt, nennt man diese else if.
Beispiel in der Anwendung:


<?php
$user = $_POST[ "user" ];
if($user != "" )
  {
  echo "Herzlich Willkommen $user" ;
else
  {
  echo "Das Feld User wurde nicht ausgefüllt"   ;
  }
?>

Vergleichsoperatoren

$a == $b Gleich Nur Wert wird beachtet, Typ nicht
$a === $b Identisch Selber Typ und Inhalt
$a != $b Ungleich Unteschiedlicher Inhalt, Typ wird nicht beachtet
$a !== $b (nicht) Identisch Ist erfüllt, wenn $a und $b einen unterschiedlichen Typ oder Wert haben.
$a < $b Kleiner $a muss kleiner als $b sein
$a <= $b Kleiner gleich $a muss kleiner oder gleich $b sein
$a > $b Grösser $a muss grösser als $b sein
$a >= $b Grösser gleich $a muss grösser oder gleich $b sein

Logische Operatoren

Mit logischen Operatoren lassen sich beliebig viele Bedingungen überprüfen.

AND / && Beide Bedingungen müssen erfüllt sein. if ($username == "Hans" AND $passwort == "Passwort123") {...}
OR / || Eine der Bedingungen muss erfüllt sein if ($username == "Hans" OR $passwort == "Passwort123") {...}
! Negation der Bedingung if (!($zahl >= 10 AND $zahl <= 20)) {}
( und ) Gruppierung if( ($user == "Hans" AND $pw == "pw123") OR ($user == "Paul" AND $pw == "456pw") ) {}

Ein Beispiel: Passwortabfrage

Benutzername: Name
Passwort: Passwort

Username:

Passwort:


So muss der dazugehörende PHP-Code aussehen:

<?php
$username = $_POST[ "username" ];
$passwort = $_POST[ "passwort" ];

if($username == "Name" AND $passwort == "Passwort" )
  {
  echo "Zugriff erlaubt" ;
  }
else
  {
  echo "Zugriff fehlgeschlagen"   ;
  }
?>

While-Schleife

In einer while-Schleife wird die Anweisung so lange durchgeführt, bis ein bestimmtes Ergebnis eintritt.

Syntax einer while-Schleife:

<?php
while(Bedingung) {
  Anweisungen
}
?>

Ein Beispiel:

<?php
$i = 0;
while ($i < 10) {
  echo " $i, " ;
$i ++
  }
?>

Ausgabe: 0,1,2,3,4,5,6,7,8,9,

Schleifenabläufe beeinflussen: Break

Mittels break können Schleifenabläufe in der Schleife beendet werden. Dies ist z.B. bei der Suche nach einem bestimmten Nutzer praktisch. Wenn der Nutzer gefunden wurde, beenden wir mittels break den Schleifendurchlauf.

Beispiel:

<?php
$max = 30;
$zaehler = 0;
$increment = 2;

while ($zaehler < $max) {
  if ($zaehler == 10) {
    echo "Bei der Zahl 10 hören wir auf" ;
    break ;
  }
  echo " $zaehler , " ;
  $zaehler += $increment ;
}
?>

Ausgabe: 0, 2, 6, 8, Bei der Zahl 10 hören wir auf

Schleifenabläufe beeinflussen: Continue

Continue beendet die Schleife nicht, sondern überspringt Teile der Schleife.

Beispiel:

<?php
$max = 30;
$zaehler = 0;
$increment = 2;

while ($zaehler < $max) {
  $zaehler += $increment;
  if ($zaehler >= 10 AND $zaehler <= 15) {
    echo "zwischen 10 und 15, " ;
    continue ;
  }

  echo " $zaehler , " ;
}
?>

Ausgabe: 2, 4, 6, 8, zwischen 10 und 15, zwischen 10 und 15, zwischen 10 und 15, 16, 18, 20, 22, 24, 26, 28, 30

Do-While-Schleife

Modifikation der while-Schleife. Hier wird zuerst die ganze Schleife einmal durchlaufen, bevor die Anweisung ausgeführt wird. Sie wird in der Praxis eher weniger eingesetzt.

Syntax einer do-while-Schleife:

<?php
do {
  Anweisungen
} while(Bedingung);
?>

For-Schleife

Auch in einer for-Schleife wird die Anweisung so lange durchgeführt, bis eine bestimmte Bedingung erfüllt ist.

Syntax einer for-Schleife:

<?php
for(Startwert; Bedingung; Schleifenschritt) {
  Anweisungen
}
?>

Ein Beispiel:

<?php
for ($i=0; $i<10; $i++ ) {
  echo " $i , " ;
}
?>

Ausgabe: 0,1,2,3,4,5,6,7,8,9,

Schleifenabläufe beeinflussen: Break

Mittels break können Schleifenabläufe in der Schleife unterbrochen werden.

Beispiel:

<?php
for ($i=0; $i<20; $i++) {
  if ($i == 13) {
    echo "Dreizehn ist eine Unglückszahl!!!" ;
    break ;
  }
  echo " $i , " ;
}
?>

Ausgabe: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, Dreizehn ist eine Unglückszahl!!!

Schleifenabläufe beeinflussen: Continue

Continue beendet die Schleife nicht, sondern überspringt Teile der Schleife.

Beispiel:

<?php
for ($i=0; $i<20; $i++) {
  if ($i == 13) {
    echo "Dreizehn ist eine Unglückszahl!!!," ;
    continue; ;
  }
  echo " $i , " ;
}
?>

Ausgabe: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, Dreizehn ist eine Unglückszahl!!!, 14, 15, 16, 17, 18, 19,

Unterschied zur while-Schleife

Der Unterschied liegt nur in der Schreibweise und in der Verwendung (theoretisch können beide dasselbe.)

while-Schleife Bei Unklarheit, wie viele Schleifendurchläufe benötigt werden.
for-Schleife Beim Hochzählen von Werten

Arrays

Ein Array ist eine geordnete Liste, in der beliebig viele Werte gespeichert werden können. En Array nummeriert die enthaltenen Werte durch und beginnt dabei bei 0 an zu zählen.

Ein Beispiel:

<?php
$wochentage = array ( "Montag","Dienstag","Mittwoch","Donnerstag","Freitag", "Samstag","Sonntag" );
echo $wochentage[1];
?>

Ausgabe: Dienstag

Assoziative Arrays

Bei grossen Arrays ist es schwierig zu wissen, welche Nummer zu welchem Wert gehört. Dafür gibt es assoziative Arrays. Damit kann man jedem Wert einen Schlüssel zuweisen. Die Zuweisung erfolgt per "=>".

<?php
$wochentage = array (
"mo" => "Montag" ,
"di" => "Dienstag" ,
"mi" => "Mittwoch" ,
"do" => "Donnerstag" ,
"fr" => "Freitag" ,
"sa" => "Samstag" ,
"so" => "Sonntag" );

echo $wochentage[ "mo" ];
?>

Ausgabe: Montag

Die Werte eines Arrays können auch nachträglich geändert werden. Angezeigt wird immer der aktuellste Wert (Im Code am weitesten unten).

Weitere Werte einem Array hinzufügen

Mittels einem [ ] hinter dem Array-Namen lassen sich ganz einfach neue Werte hinzufügen.

<?php
$mitarbeiter = array ( "Bob","Peter" );
$mitarbeiter[] = "Lisa" ;
echo $mitarbeiter[2];
?>

Ausgabe: Lisa

Das funktioniert auch bei den assoziativen Arrays, hier müssen wir jedoch den Schlüssel mit angeben.

<?php
$mitarbeiter = array (
"Bob" => "Bob Meier" ,
"Peter" => "Peter Schröder" );
$mitarbeiter[ "Lisa" ] = "Lisa Müller" ;

echo $mitarbeiter[ "Lisa" ];
?>

Arrays in Strings konvertieren

Mit implode($trennzeichen,$array) können wir Elemente eines Arrays zu einem String verbinden. Mit $trennzeichen wird spezifiert, welches Verbindungselement zwischen den Elementen erscheinen soll. So kann man z.B. formatierte Listen ausgeben.

<?php
$namen = array ( "Paul", "Max", "Hans" );

echo "Namen per Komma trennen: <br>" ;
$namenStr = implode ( ", ", $namen);
echo $namenStr;

echo "<br><br>" ;
echo "Ein Name pro Zeile: <br>" ;
echo implode ( "<br>" , $namen);
?>

Ausgabe:
Namen per Komma trennen:
Paul, Max, Hans

Ein Name pro Zeile:
Paul
Max
Hans

Strings in Arrays konvertieren

Mittels explode($trennzeichen, $text) ein String (Text) in ein Array konvertieren.

<?php
$text = "Paul,Max,Hannes" ;
$namen = explode ( "," , $text); //Konvertierung des Strings in ein Array
echo "<pre>" ; var_dump ($namen); echo "<pre>" ; //Formatierte Ausgabe des Arrays

//Ersetze die Person an Stelle [1] durch einen neuen Namen
$namen[1] = "Lisa" ;

//Verwandelt Array zurück in einen String
$text = implode ( ", ", $namen);
echo $text;
?>

Ausgabe:
array(3) {
  [0]=>
  string(4) "Paul"
  [1]=>
  string(3) "Max"
  [2]=>
  string(6) "Hannes"
}

Paul,Lisa,Hannes

Mehrdimensionale Arrays definieren

Es ist möglich, Arrays zu verschachteln. Verschachtelte Arrays nennt man mehrdimensionale Arrays. Die Dimension gibt an, wie tief diese Verschachtelung geht. Ein normales Array wäre ein 1-dimensionales Array, wenn das Array ein weiteres Array in sich trägt, ein 2-dimensionales Array usw.

<?php
$mitarbeiter = array (
  array ( "Klaus", "Zabel" ),
  array ( "Arnie", "Meier" ),
  array ( "Willi", "Brand" )
);

//Daten ausgeben
echo "Vorname " .$mitarbeiter[0][0];
echo "Nachname " .$mitarbeiter[0][1];
?>

Ausgabe: Vorname: Klaus Nachname: Zabel

Mehrdimensionale Arrays lassen sich auch gut mit assoziativen Arrays kombinieren.

Arrays durchsuchen

Mit der Funktion in_array($suche,$array) lässt sich überprüfen, ob ein Wert im Array vorhanden ist.

<?php
$mitarbeiter = array ( "Bob", "Peter", "Lisa" );
$name = "Bob" ;
if ( in_array ($name,$mitarbeiter)) {
  echo "Der Name $name ist in dem Array enthalten" ;
}
?>

Ausgabe: Der Name Bob ist in dem Array enthalten

Bei assoziativen Arrays kann man mittels array_key_exists($key,$array) überprüfen, ob ein Schlüssel in dem Array existiert.

<?php
$mitarbeiter = array ( "Bob" => "Baumeister" , "Klaus" => "Muster" );
$key = "Bob" ;

if ( array_key_exists ($key,$mitarbeiter)) {
  echo "Das Element $key hat den Wert: " .$mitarbeiter[$key];
} else {
  echo "Das Array hat keinen Schlüssel $key " ;
}
?>

Ausgabe: Das Element Bob hat den Wert: Baumeister

Über die Elemente eines Arrays iterieren (durchlaufen und ausgeben)

Mit der Funktion count($name_des_array) können wir herausfinden, wie viele Elemente in einem Array vorhanden sind.

<?php
$mitarbeiter = array ( "Bob" , "Peter" );

echo count ($mitarbeiter);
?>

Ausgabe: 2

Um den letzten Eintrag auszugeben, müssen wir von der ausgegebenen Zahl eins abziehen, weil im Array bei 0 begonnen wird zu zählen.

<?php
$mitarbeiter = array ( "Bob" , "Peter" );

echo "Letzter Eintrag des Arrays: " .$mitarbeiter[ count ($mitarbeiter)-1];
?>

Ausgabe: Letzter Eintrag des Arrays: Peter

Elemente ausgeben

Dafür verwendet man gewöhnlich eine Schleife (while- oder for-Schleife).

for-Schleife:

<?php
$mitarbeiter = array ( "Bob" , "Peter" , "Lisa" );

echo "Ausgabe des Arrays mittels for-Schleife: <br>" ;
for ($i=0; $i< count ($mitarbeiter); $i++) {
  echo $mitarbeiter[$i]. "<br>" ;
}
?>

Ausgabe:
Ausgabe des Arrays mittels for-Schleife:
Bob
Peter
Lisa

while-Schleife:

<?php
$mitarbeiter = array ( "Bob" , "Peter" , "Lisa" );

echo "Ausgabe des Arrays mittels while-Schleife: <br>" ;

$i = 0;
while ($i < count ($mitarbeiter)) {
  echo $mitarbeiter[$i]. "<br>" ;
}
?>

Array rückwärts ablaufen lassen:

<?php
$mitarbeiter = array ( "Bob" , "Peter" , "Lisa" );

echo "Rückwärtsausgabe des Arrays: <br>" ;
for ($i= count ($mitarbeiter)-1; $i >=0; $i--) {
  echo $mitarbeiter[$i]. "<br>" ;
}
?>

Ausgabe:
Rückwärtsausgabe des Arrays:
Lisa
Peter
Bob

foreach-Schleife

Die foreach-Schleife ist eine einfache Möglichkeit, Elemente eines Arrays zu iterieren. Ein Beispiel:

<?php
$mitarbeiter = array ( "Bob" , "Peter" , "Lisa" );

foreach ($mitarbeiter AS $name) {
  echo $name. "<br>" ;
}
?>

Ausgabe:
Bob
Peter
Lisa

Die forach-Schleife kann auch bei assoziativen Arrays angewendet werden.

<?php
$mitarbeiter = array ( "Klaus" => "Müller" , "Bob" => "Baumeister" );

foreach ($mitarbeiter AS $vorname => $nachname) {
  echo " $vorname $nachname <br>" ;
}
?>

Ausgabe:
Klaus Müller
Bob Baumeister

Und auch bei mehrdimensionalen Arrays.

<?php
$unternehmen = array (
"Vertrieb" => array ( "Klaus" , "Lisa" , "Lea" ), "Produktion" => array ( "Peter" , "Max" )
);

foreach ($unternehmen AS $abteilung => $mitarbeiter_der_abteilung) {
  echo "Mitarbeiter der Abteilung: $abteilung <br>" ;
  foreach ($mitarbeiter_der_abteilung AS $mitarbeiter) {
    echo " $mitarbeiter <br>" ;
  }
  echo "<br>" ;
}
?>

Ausgabe:
Mitarbeiter der Abteilung: Vertrieb
Klaus
Lisa
Lea

Mitarbeiter der Abteilung: Produktion
Peter
Max

Arrays sortieren

Funktion Sortiert nach Kompatibel mit assoziativen Arrays Sortierreihenfolge
asort() Wert Ja a-z
arsort() Wert Ja z-a
ksort() Schlüssel Ja a-z
krsort() Schlüssel Ja z-a
natsort() Wert Ja a-z (natürliche Reihenfolge)
natcasesort() Wert Ja a-z (natürliche Reihenfolge ohne Gross- und Kleinschreibung)
sort() Wert Nein a-z
rsort() Wert Nein z-a
shuffle() - Nein zufälliges mischen

Nützliche Array Funktionen

array_key_exists($key,$array) Überprüft, ob der Schlüssel $key im $array existiert.
count($array) Gibt die Anzahl der Elemente im Array zurück.
in_array($suchwert,$array) Überprüft, ob der Wert $suchwert im $array existiert.
sort($array) Sortiert ein Array aufsteigend, vom kleinsten zum größten Wert (A -> Z)
rsort($array) Sortiert ein Array absteigend, vom größten zum kleinsten Wert (Z > A)
shuffle($array) Mischt die Elemente des Arrays zufällig.

Dateien lesen

Der einfachste Weg, um Dateien auszulesen ist mit der Funktion file_get_contents($dateiname).

Beispiel:

<?php
$auslesen = file_get_contents ( "zieldatei.txt" );
echo $auslesen;
?>

Die Funktion liest die angegebene Datei (hier: zieldatei.txt) ein und gibt den kompletten Inhalt zurück. Der Inhalt ist dann in der Variable $auslesen gespeichert.
Nachteil dieser Funktion: Zeilenumbrüche verschwinden. Dafür gibt es jedoch die Funktion nl2br() , die Zeilenumbrüche in HTML-Zeilenumbrüche verwandelt. Der angepasste Code sieht dann so aus:

<?php
$auslesen = file_get_contents ( "zieldatei.txt" );
echo nl2br $auslesen;
?>

Dateien zeilenweise auslesen mittels file()

<?php
$auslesen = file ( "zieldatei.txt" );
for ($i=0;$i < count ($auslesen); $i++){
  echo $i. ": " .auslesen[$i]. "<br><br>" ;
}
?>

Hier geben wir zuerst die laufende Nummer $i aus (beginnend bei 0), gefolgt von einem Leerzeichen, danach der Satz und am Schluss ein HTML-Zeilenumbruch.

Um einen zufälligen Satz auszugeben, bietet sich die Funktion rand($min,$max)an. Diese Funktion gibt eine zufällige Zahl zwischen $min und $max an.

<?php
$auslesen = file ( "zieldatei.txt" );
$auslesen_nummer = rand (0, count ($auslesen)-1);
echo $auslesen[$auslesen_nummer];
?>

Dateien schreiben

Um eine Textdatei schreiben zu können, wird in PHP die Funktion file_put_contents($filename,$data) verwendet. Ist das Dokument ($filename) nicht vorhanden, wird es erstellt.

Dateien überschreiben

Eine per GET übergebene Variable in eine Text-Datei schreiben:

<?php
$name = $_GET[ "name" ];
$zeile = "Per GET wurde der Name $name übergeben \r\n" ;
file_put_contents( "beispiel.txt" , $zeile);
echo "beispiel.txt wurde überschrieben" ;
?>

Rufen wir diese Datei mit dem Parameter $name=Max auf, so wird in der beispiel.txt der Satz Per GET wurde der Name Max übergeben stehen. Die Funktion file_put_contents() überschreibt den bestehenden Inhalt der Datei.

Text an Datei anhängen

Möchte man eine Datei nicht überschreiben, sondern etwas an die Datei anhängen, muss man der Funktion file_put_contents() als drittes Argument die Konstante FILE_APPEND übergeben.

<?php
$name = $_GET[ "name" ];
$zeile = "Per GET wurde der Name $name übergeben \r\n" ;
file_put_contents( "beispiel.txt" , $zeile, FILE_APPEND );
echo "beispiel.txt wurde aktualisiert" ;
?>

Hier wird nun für jeden Aufruf eine neue Zeile geschrieben.

Arbeiten mit implode und explode

Das nachfolgende Beispiel besteht aus einer sehr einfachen Registrierung und einem internen Bereich (Ist jedoch unsicher und sollte im echten System nicht verwendet werden).

Schritt 1: Registrierung
Zuerst brauchen wir ein Formular:

Name:

E-Mail:

Passwort:

Auf das PHP-Dokument registrierung.php, welches im Formular verlinkt ist, kommt der folgende Inhalt, der die Daten aus dem Formular an die Datei users.txt anhängt:

<?php
$name = $_POST[ "name" ];
$email = $_POST[ "email" ];
$passwort = $_POST[ "passwort" ];
$user_info = array ($email,$passwort,$name);

if( ! empty ($name) AND ! empty ($email) and ! empty ($passwort)) {
  $eintrag = implode( ";" , $user_info). "\r\n" ;
  file_put_contents( "users.txt" , $eintrag, FILE_APPEND );
  echo "$email wurde erfolgreich registriert" ;
} else {
  echo "Bitte alle Felder ausfüllen" ;
}
?>

Schritt 2: Login

E-Mail:

Passwort:

PHP-Code auf login.php: Hier durchlaufen wir alle Zeilen, überprüfen, ob die E-Mail-Adresse und das Passwort stimmen. Falls ja, begrüssen wir den Nutzer mit Namen.

<?php
$email = $_POST[ "email" ];
$passwort = $_POST[ "passwort" ];

$users = file( "users.txt" );
foreach($users AS $line) {
  $user_info = explode( ";" , $line);
  if($user_info[ 0 ] == $email AND $user_info[ 1 ] == $passwort) {
    echo "Hallo " .$user_info[ 2 ];
  }
}
?>

Datum und Uhrzeit

In PHP ermittelt man die Uhrzeit mit einem UNIX-Timestamp. Dieser beinhaltet alle Sekunden seit dem 1.1.1970 um 0:00 Uhr. Heraus kommt dann eine Zahl wie 1507015497.

<?php
$timestamp = time ();
echo $timestamp;
?>

Der Befehl time() ermittelt den aktuellen Timestamp, der dann in der Variable $timestamp gespeichert wird. Mit der Funktion date($format, $timestamp) können wir diesen Wert in ein Datum und eine Uhrzeit umwandeln.

<?php
$timestamp = time ();
$datum = date ( "d.m.Y - H:i" , $timestamp);
echo $datum;
?>

Die Ausgabe wäre dann zum Beispiel: 03.10.2017 - 09:33

Format Funktion Beispiel
d Tag des Monats, zweistellig 04, 15
j Tag des Monats, einstellig 4, 15
m Nummer des Monats, zweistellig 04, 12
n Nummer des Monats, einstellig 4, 12
y Jahr, zweistellig 98, 17
Y Jahr, vierstellig 1998, 2017
H Stunden im 24-Stunden-Format, zweistellig 04, 23
G Stunden im 24-Stunden-Format, einstellig 4, 23
i Minuten, zweistellig 04, 55
s Sekunden, zweistellig 02, 47
w Wochentag in Zahlenwert, 0 für Sonntag, 6 für Samstag 1, 5

Beim der Ausgabe des aktuellen Datums kann man die definition des timestamps ($timestamp = time ()) weglassen, da standardmässig vom aktullen timestamp ausgegangen wird.

<?php
$datum = date ( "d.m.Y - H:i" );
echo $datum;
?>

Zeitspannen umrechnen

So findet man heraus, vor wie viel Zeit etwas geschrieben wurde:

<?php
$timestamp = "120" ;
echo round ($timestamp / 60);
?>

round() auf- oder abrunden, je nach Zahl
floor() immer abrunden
ceil() immer aufrunden

Ausgabe des Wochentages

PHP kann die Wochentage nur in Englischer Schreibweise ausgeben. Um die deutsche Schreibweise zu verwenden, müssen wir zuerst einen Array definieren.

<?php
$tage = array ( "Sonntag" , "Montag" , "Dienstag" , "Mittwoch" , "Donnerstag" , "Freitag" , "Samstag" );
?>

Um jetzt den richtigen Tag auszugeben, verwenden wir folgende Ausgabe: $tage[Nummer]. Um die Nummer des Tages zu bekommen, benutzen wir wieder die date-Funktion.

<?php
$tag = date( "w" );
?>

Das komplette Script sieht dann so aus:

<?php
$tage = array ( "Sonntag" , "Montag" , "Dienstag" , "Mittwoch" , "Donnerstag" , "Freitag" , "Samstag" );
$tag = date( "w" );
echo $tage[$tag]
?>

Dasselbe kann man auch mit Monaten machen, jedoch muss man zuerst mit einem assoziativen Array den Monaten die richtigen Zahlen zuordnen, da es keinen Monat 0 gibt. Ansonsten macht man es genau gleich.

Datum in Timestamp umwandeln und Rechnen mit Daten

Mit der Funktion strtotime($datum) können wir das Datum (englische Schreibweise) in den Zeitstamp zurückwandeln.

<?php
echo strtotime ( "03 October 2017" ). "<br>" ;
echo strtotime ( "03.10.2017" ). "<br>" ;
echo strtotime ( "03.10.2017 10:11:12" );
?>

Mit Stunden zu rechnen geht relativ einfach auf der Ebene der Timestamps. Möchten wir z.B. die Uhrzeit bestimmen, müssen wir zum aktuellen Timestamp so viele Sekunden dazuaddieren, wie eine Stunde hat (60*60).

<?php
$in_einer_stunde = time () + 60*60;
echo "In einer Stunde ist es: " . date ( "H:i:s" , $in_einer_stunde);
?>

Ausgabe: In einer Stunde ist es: XX:XX:XX

Alternativer Weg:

<?php
echo strtotime ( "+1 day" ). "<br>" ;
echo strtotime ( "+1 week" ). "<br>" ;
echo strtotime ( "+1 week 2 days 4 hours 2 seconds" ). "<br>" ;
echo strtotime ( "+next Thursday" ). "<br>" ;
echo strtotime ( "last Monday" );
?>

Die Ausgabe wäre hier in Form von Timestamps.

E-Mails mit PHP versenden

Mit der Funktion mail() kann man Mails verschicken. Dies sieht dann so aus:

<?php
mail($empfaenger_email, $betreff, $nachricht, "From: Absender <absender@domain.ch>" );
?>

Die einzelnen Texte sollte man als Variablen speichern. Es ist dann einfacher, den Überblick zu behalten.

<?php
$empfaenger = "empfaenger@domain.ch" ;
$betreff = "Mails senden mit PHP" ;
$from = "From: Hans Mueller <absender@domain.ch>" ;
$text = "Heute lernen wir, mit PHP Mails zu verschicken" ;

mail($empfaenger, $betreff, $text, $from);
?>

Nachteile: Das verschickte Mail sieht genau so aus, wie im Quelltext. ü's und andere Umlaute werden nicht richtig angezeigt. Ausserdem darf man keine HTML-Befehle benutzen. Für einen Zeilenumbruch verwendet man \n.

HTML E-Mails

Mit PHP ist es möglich, HTML E-Mails zu verschicken. Die werden jedoch nicht von allen Empfängern richtig angezeigt. Um HTML E-Mails zu verschicken, muss die $from Variable etwas angepasst werden.

<?php
$empfaenger = "empfaenger@domain.ch" ;
$betreff = "Mails senden mit PHP" ;
$from = "From: Hans Mueller <absender@domain.ch>\n" ;
$from .= "Reply-To: antwort@domain.ch\n" ;
$from .= "Content-Type: text/html\n" ;
$text = "Heute lernen wir, mit <b>PHP<b> Mails zu verschicken" ;

mail($empfaenger, $betreff, $text, $from);
?>

Suchen und Ersetzen

Mit strpo($text,$suchtext) lässt sich ein Text durchsuchen. Ausgegeben wird die Position des ersten Vorkommens (In Zeichen, inkl. Leerstellen und ab 0 gezählt). Die Funktion unterscheidet zwischen Gross- und Kleinschrift. Möchte man nicht unterscheiden zwischen Gross- und Kleinschrift, verwendet man die Funktion stripos($text,$suchtext).

<?php
$text = "Dies ist ein kleines Beispiel zum Durchsuchen. Eine andere Möglichkeit lernen wir später." ;
$position = strpos ($text, "ein" );
echo "Gefunden an Position: $position " ;
?>

Ausgabe: Gefunden an Position: 9

Falls nichts gefunden wurde, gibt die Funktion false zurück. Dies können wir mit einer if-Anweisung verbinden:

<?php
$text = "Dies ist ein kleines Beispiel zum Durchsuchen. Eine andere Möglichkeit lernen wir später." ;
$suchwort = "Ich existiere nicht" ;
$position = strpos ($text,$suchwort);

if($position) === false ) {
  echo "String wurde nicht gefunden" ;
} else {
  echo "Gefunden an Position: $position " ;
}
?>

Ausgabe: String wurde nicht gefunden

Teiltext ausgeben

Um einen Teiltext auszugeben, verwenden wir die Funktion substr($text,$start,$laenge). Der dritte Parameter, $laenge, ist dabei optional. Ohne ihn wird der gesamte restliche String ausgegeben.

<?php
$text = "Dies ist ein kleines Beispiel zum Durchsuchen. Eine andere Möglichkeit lernen wir später." ;
echo substr ($text, 9, 11); //Ausgabe: ein kleines
echo substr ($text, strlen ($text)-15); //Gibt die letzten 15 Zeichen aus
echo substr ($text, -15); //Gibt auch die letzten 15 Zeichen aus, einfachere Schreibweise
echo substr ($text, 5, -10); //Gibt alle Zeichen von Position 5 bis 10 Zeichen vor dem Ende zurück
echo substr ($text, -25, -10); //Gibt alle Zeichen von 25 Zeichen vor dem Ende bis 10 Zeichen vor dem Ende zurück
?>

Einfaches Ersetzen

Mit str_replace("Suchen","Ersetzen",$variable) können wir Texte ersetzen. Achtung: Bei dieser Funktion wird Gross- und Kleinschreibung beachtet. Wollen wir etwas unabhängig der Gross- und Kleinschreibung ersetzen, verwenden wir str_ireplace().

<?php
$text = "Dies ist ein kleines Beispiel." ;
$text = str_replace ( "ist" , "war" , $text);
echo $text;
?>

Ausgabe: Dies war ein kleines Beispiel.

Bei str_replace() / str_ireplace() werden Wortgrenzen nicht berücksichtigt. Dies kann von Vorteil sein, wenn man z.B. alle ä durch ae ersetzen möchte. Wenn man jedoch ganze Wörter, wie z.B. er durch sie ersetzen will, kann das unerwünschte Nebeneffekte haben, wie das Wort Der, das plötzlich Dsie lautet.
Diese Problem kann jedoch leicht umgangen werden, indem man vor und nach dem Suchwort ein Leerzeichen einfügt: str_replace(" er ", " sie ", $text). (Beachte: Zwischen den Anführungszeichen und dem String hat es bei diesem Beispiel Leerzeichen. Man sieht es einfach nicht so gut)

Mehrere Ausdrücke auf einmal ersetzen

Am einfachsten geht das so:

<?php
$text = "Sie sollten täglich Früchte, Gemüse und Ballaststoffe essen." ;
$gesund = array ( "Früchte" , "Gemüse" , "Ballaststoffe" );
$lecker = array ( "Pizza" , "Wein" , "Chips" );

$new_text = str_replace ($gesund, $lecker, $text);
echo $new_text; //Sie sollten täglich Pizza, Wein und Chips essen.
?>

Zeilenumbrüche ersetzen

Die sauberste Version wäre mittels nl2br($text)(new line to break). Zur Veranschaulichung unten drei verschiedene Varianten.

Text:

Dies steht auf der PHP-Seite:

<?php
$text = $POST[ 'text' ];
echo "Unformatiert sieht der Text so aus: <br>" ;
echo $text;

echo "<br><br>Mit str_replace sieht dies so aus:<br>" ;
echo str_replace( "\n" , "<br>" , $text);

echo "<br><br>Mit nl2br sieht dies so aus:<br>" ;
echo nl2br($text);
?>

Sessions

HTTP ist ein zustandsloses Protokoll. Das heisst, Informationen werden zwischen den einzelnen Aufrufen derselben Person nicht zwischengespeichert. Um dieses Prolem zu umgehen, verwendet man PHP-Sessions.

Technischer Hintergrund

Mit PHP-Sessions hat man die Möglichkeit, die Daten der Benutzer zwischenzuspeichern. Jedem Besucher wird eine einzigartige Session-ID zugeordnet, die aus einer Folge aus Zahlen und Buchstaben besteht. Diese ID wird bei jedem Aufruf des Besuchers vom Browser an den Webserver gesendet, der dann erkennt, wer der Besucher ist und die richtigen Daten zurückgibt. Die Session-ID wird entweder als GET-Parameter an den URL angehängt oder lokal beim Besucher als Cookie gespeichert. Die Variante mit dem Cookie ist sicherer und wird deshalb von PHP präferiert.
Auf dem Server ist für jede Session-ID lokal ein Speicher eingerichtet, der beliebige Variabeln für den Besucher gespeichert hat.
Der Benutzer kann die Variablen in seiner Session weder sehen noch manipulieren.

Sicherheit

Sessions bieten keine 100%ige Sicherheit, sind jedoch relativ sicher. Es kann passieren, dass jemand seine Session-ID unabsichtlich weitersendet, indem er einen Link teilt, bei der seine ID per URL übergeben wurde. Falls die Session-ID per Cookies übergeben wird, wäre ein Trojaner oder ähnliches notwendig, um an eine fremde Session-ID zu gelangen.

Session registrieren

Am Anfang muss immer derselbe Befehl stehen:

<?php
session_start();
?>

Eine Variable oder einen Wert über mehrere Seitenaufrufe hinweg speichern:

<?php
$_SESSION[ 'name' ] = "wert" ;
?>

Diese Variable oder diesen Wert auf einer anderen Seite wieder ausgeben:

<?php
$name = $_SESSION[ 'name' ];
echo $name;
?>

Überprüfen, ob Session-Variable registriert ist

Dies macht man mit der Funktion isset($variable).

<?php
session_start();

if ( ! isset ($_SESSION[ 'visited' ])) {
  echo "Du hast diese Seite noch nicht besucht" ;
  $_SESSION[ 'visited' ] = true ;
} else {
  echo "Du hast diese Seite zuvor schon aufgerufen" ;
}
?>

isset können wir auch bei logins verwenden

<?php
session_start();

if ( isset ($_SESSION[ 'username' ])) {
  echo "Herzlich Willkommen" .$_SESSION[ 'username' ];
} else {
  echo "Bitte erst einloggen" ;
}
?>

Sessions löschen

Notwenig, wenn sich z.B. ein Nutzer ausloggt. Dafür verwendet man session_destroy():

<?php
session_destroy();
?>

Um nur eine einzelne Session-Variable zu löschen, verwendet man unset($variable).

<?php
unset ($_SESSION[ 'name' ]);
?>

Beispiel

Dein Name:

session_login.php:

<?php
session_start();
$name = $_POST[ 'name' ];

if( ! isset ($name) OR empty ($name)) {
  $name = "Gast" ;
}

//Session registrieren
$_SESSION[ 'username' ] = $name;

//Text ausgeben
echo "Hallo $name <br>
<a href=\"session_2.php\">Seite 2</a><br>
<a href=\"session_logout.php\">Logout</a><br>
;
?>

session_2.php:

<?php
session_start();

if( ! isset ($_SESSION[ 'username' ])) {
  die ( "Bitte erst einloggen" ); //Mit die wird der weitere Scriptablauf beendet
}

//In $name den Wert der Session speichern
$name = $_SESSION[ 'username' ];

//Text ausgeben
echo "Du heisst immer noch:$name
<a href=\"session_logout.php\">Logout</a>
;
?>

session_logout.php:

<?php
session_start();
session_destroy();
echo "Logout erfolgreich" ;
?>

Eigene Funktionen

Vor allem bei grösseren Projekten empfiehlt es sich, gewisse Funktionalitäten zu kapseln und als eigene Funktionen zu definieren. So kann man die selbe Funktion immer wieder verwenden, ohne sie jedesmal kopieren zu müssen.

Ein Beispiel einer eigenen Funktion:

<?php
function addieren($a,$b) {
  $addition = $a+$b;
  return $addition;
}
echo addieren(1,10). "<br>" ;
echo addieren(2,3). "<br>" ;
echo addieren(-5,8). "<br>" ;
?>

Eine eigene Funktion startet immer mit dem Schlüsselwort function, gefolgt vom Namen. Die Werte in der Klammer nennt man Parameter.
Die Variablen in einer Funktion sind nur innerhalb des Funktionsrumpfes gültig. So wird verhindert, dass eine Funktion Teile des Scriptes abändert. Dafür muss man sie jedoch immer als Parameter mit angeben.

Optionale Parameter für Funktionen

Man kann Parameter auch auf Default setzen. Das heisst, man gibt dem Parameter einen Wert, den er annehmen soll, falls nichts anderes angegeben wird. Das sieht dann so aus:

<?php
function zeilenumbrueche_ersetzen($text, $neues_zeichen = "<br>" ) {
  return str_replace (" \n ", $neues_zeichen, $text);
}

$text = "Dies \n ist \n ein \n Beispiel \n\n ";
echo zeilenumbrueche_ersetzen($text);
echo zeilenumbrueche_ersetzen($text, " --UMBRUCH-- " );
?>

Ausgabe 1, Defaultwert:
Dies
ist
ein
Beispiel

Ausgabe 2:
Dies --UMBRUCH-- ist --UMBRUCH-- ein --UMBRUCH-- Beispiel --UMBRUCH-- --UMBRUCH--

Tipps:

  • Aufgaben auf einzelne Funktionen verteilen - wird übersichtlicher und einfacher
  • Aussagekräftige Funktionsnamen wählen
  • Keine echo-Ausgaben in Funktionen schreiben - mit Return arbeiten
  • Dokumentation der Funktionen - Kommentare schreiben!

Andere PHP Dateien einbinden

Mit include($filename) und require($filename) ist es möglich, Code aus einer anderen Datei zu laden. Unterschied: Falls die Datei nicht gefunden wird, gibt include() eine Warnung aus, während require() den Scriptablauf abbricht.

Wichtig:

  • include() und require() sollten am Anfang des Scriptes stehen.
  • Es empfiehlt sich, die include() bzw. require()-Dateien in einem separaten Ordner zu speichern.
  • Häufige und zentrale Funktionen auslagern. Das Auslagern lohnt sich hauptsächlich bei Funktionen, die in mehreren Dateien und häufig verwendet werden. So müssen sie nur einmal geschrieben und nicht immer wieder kopiert werden.

Dateiupload

Besucher deiner Webseite können Bilder folgendermassen hochladen.

Formular:

< form action= "upload.php" method= "post" enctype= "multipart/form-data" >
< input type= "file" name= "datei" > < br >
< input class= "button" type= "submit" value= "Hochladen" >
</ form >

Dies sieht dann folgendermassen aus: (Achtung: funktioniert nicht)


Wichtig: Im Form-Element muss das Attribut enctype="multipart/form-data" stehen.
Hochgeladene Dateien befinden sich in der Variable $_FILES. Um die Dateien in den Webspace zu bekommen, müssten sie mit der Funktion move_uploaded_file() verschoben werden. Dies würde die Datei mit dem Originalnamen in den Unterordner upload verschieben. Falls die Datei schon existiert, wird sie überschrieben.
Achtung: aus Sicherheitsgründen wird diese Variante nicht benutzt!

move_uploaded_files($_FILES[ 'datei' ][ 'tmp_name' ], 'upload/' .$_FILES[ 'datei' ][ 'name' ]);

Das $_FILES-Array

Variable Inhalt
$_FILES['datei']['name'] Der Name der Datei auf dem Rechner des Besuchers
$_FILES['datei']['tmp_name'] Temporärer Pfad auf dem Server zur hochgeladenen Datei
$_FILES['datei']['size'] Die Größe der Datei in Bytes.
$_FILES['datei']['type'] Der MIME-Type der Datei (Achtung: Kann von Angreifer beliebig manipuliert werden).

Sicherer Bildupload

Hier ein Beispiel für einen sicheren Bildupload.

<?php
$upload_folder = 'upload/' ; //Das Upload-Verzeichnis
$filename = pathinfo($_FILES[ 'datei' ][ 'name' ], PATHINFO_FILENAME );
$extension = strtolower(pathinfo($_FILES[ 'datei' ][ 'name' ], PATHINFO_EXTENSION));


//Überprüfung der Dateiendung
$allowed_extensions = array ( 'png' , 'jpg' , 'jpeg' , 'gif' );
if(!in_array($extension, $allowed_extensions)) {
  die ( "Ungültige Dateiendung. Nur png, jpg, jpeg und gif-Dateien sind erlaubt" );
}

//Überprüfung der Dateigrösse
$max_size = 500*1024 ; //500 KB
if($_FILES[ 'datei' ][ 'size' ] > $max_size){
  die ( "Bitte keine Dateien größer 500kb hochladen" );
}

//Kontrolle, dass das Bild keine Fehler enthält
if(function_exists( 'exif_imagetype' )) { //Die exif_imagetype-Funktion erfordert die exif-Erweiterung auf dem Server
  $allowed_types = array ( IMAGETYPE_PNG , IMAGETYPE_JPEG , IMAGETYPE_GIF );
  $detected_type = exif_imagetype($_FILES[ 'datei' ][ 'tmp_name' ]);
  if(!in_array($detected_type, $allowed_types)) {
  die ( "Nur der Upload von Bilddateien ist gestattet" );
  }
}

//Pfad zum Upload
$new_path = $upload_folder.$filename. '.' .$extension;

//Neuer Dateiname falls die Datei bereits existiert
if(file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen
  $id = 1 ;
  do {
  $new_path = $upload_folder.$filename. '_' .$id. '.' .$extension;
  $id++;
  } while(file_exists($new_path));
}

//Alles okay, verschiebe Datei an neuen Pfad
move_uploaded_file($_FILES[ 'datei' ][ 'tmp_name' ], $new_path);
echo 'Bild erfolgreich hochgeladen: <a href="' .$new_path. '">' .$new_path. '</a>' ;
?>

Cookies

Cookies werden dazu verwendet, bestimmte Daten während einer Folge von Aufrufen einer Webseite festzuhalten. Im Gegenteil zu Sessions können Cookies über die Sitzung hinaus gespeichert werden, denn sie werden auf dem Computer des Besuchers gespeichert.

Cookie setzen

Cookies werden zuoberst im Code gesetzt.

<?php
setcookie( "username" , "Max" , 0 );
?>

"username": Name des Cookies, über den der Cookie später immer erreichbar ist
"Max": Wert, der im Cookie gespeichert wird.
0: Zeitangabe, wie lange der Cookie auf dem Computer gespeichert wird. Null bedeutet, dass der Cookie so lange gespeichert wird, wie die Sitzung dauert.
Die Zeitangabe wird mit Timestamp ermittelt. Deshalb sieht ein Code für eine Speicherzeit von 24h folgendermassen aus:

<?php
setcookie( "username" , "Max" , time()+( 3600*24 ));
?>

Cookies auslesen

<?php
$cookie = $_COOKIE[ "username" ];
echo "Der Inhalt des Cookies: $cookie" ;
?>

Wichtig: Der Cookie kann nur in dem Verzeichnis ausgelesen werden, in dem er auch gesetzt wurde.

Cookies löschen

Dies geht, in dem man einen Zeitpunkt in der Vergangenheit angibt. SO merkt der Browser, dass der Cookie abgelaufen ist, und löscht ihn.

<?php
setcookie( "username" , "" ,time() ,-3600 );
?>

Sicherheit

Cookies sind unsicher, da sie gefälscht werden können. Deshalb sollte man Cookies nicht trauen.

Konstanten

Der Wert einer Konstante ist, im Gegensatz zu einer Variable, nach der Definition nicht mehr veränderbar. Dies ist nützlich, um fest, unveränderliche Werte zu definieren, wie zum Beispiel die maximale Länge eines Beitrages.

Syntax

Konstanten werden mit dem Schlüsselwort const definiert. Wichtig: auf Konstanten wird ähnlich zugegriffen wie auf Variablen, aber ohne das Dollarzeichen vor dem Namen.

<?php
const VERSION = "1.0.5" ;
const MAX_EMAIL_LENGTH = 100;

$email = "empfaenger@domain.ch" ;

echo "Dies ist Version" .VERSION;

if ( strlen ($email) > MAX_EMAIL_LENGTH) {
  echo "<br> Die E-Mail darf maximal " .MAX_EMAIL_LENGTH. " Zeichen lang sein." ;
}
?>

Ausgabe:
Dies ist Version 1.0.5
Die E-Mail darf maximal 100 Zeichen lang sein.

Vordefinierte Konstanten

Die vordefinierten Konstanten findet ihr hier.

Magische Konstanten

Magische Konstanten sind Konstanten, die ihren Wert je nach Standort im Code ändern. Beispiel: __LINE__ gibt stets die Aktuelle Zeile im Code an.
Die magischen Konstanten findet ihr hier.

Reguläre Ausdrücke

Reguläre Ausdrücke sind eine Art eigene Programmiersprache um Texte zu durchsuchen und zu überprüfen (z.B. E-Mail-Eingabe).

Reguläre Ausdrücke in PHP nutzen

Für reguläre Ausdrücke verwendet man hauptsächlich die zwei Funktionen preg_match($muster,$text) und preg_replace($muster,$ersetzen,$text). Mit preg_match() wird überprüft, ob $text einem gewissen $muster entspricht. Mit preg_replace() können wir Textstellen ersetzen.

Beispiel: Wir wollen überprüfen, ob ein Text eine Zahl zwischen 10 und 19 enthält.

<?php
$text = "Wir haben 13 Katzen" ;
$muster = "/1[0123456789]/" ;
if ( preg_match ($muster,$text)){
  echo "Eingabe enthält das Muster" ;
} else {
  echo "Eingabe enthält das Muster nicht" ;
}
?>

Den regulären Ausdruck starten und beenden wir mit einem /. Im obigen Beispiel ist die erste Ziffer der gesuchten Zahl eine 1, und danach kommt eine Auswahl in den eckigen Klammern für die zweite Zahl. Dieses system lässt sich auch auf andere Zahlen anwenden.

Beispiel: Wir suchen eine ungerade Zahl zwischen 801 und 999. $muster wäre dann folgendermassen aufgebaut: die erste Zahl müsste entweder eine 8 oder eine 9 sein, deshalb [89]. Die zweite Zahl kann alles von 0-9 sein, deshalb [0123456789] oder auch [0-9]. Da die dritte Zahl ungerade sein muss, kommen nur die Zahlen 1,3,5,7,9 in Frage. Die ganze Variable sieht demnach so aus: "/[89][0-9][13579]/".

Dasselbe können wir auch mit Buchstaben machen. $muster = "[aeiou]" überprüft zum Beispiel, ob ein Vokal im Text enthalten ist.

Übersicht

Operator Funktion Beispiel
. Wildcard - passt zu jedem Zeichen /h.llo/ - Passt zu allen Texten die h, beliebiges Zeichen gefolgt von llo enthalten
[] Überprüft ob eines der Zeichen enthalten ist /h[ae]llo/ -Passt zu hallo und hello /[A-Za-z0-9]/ - Erlaubt einen Großbuchstaben, Kleinbuchstaben oder Zahlen
^ Überprüft den Anfang des Textes. Kann ebenfalls für nicht stehen. /^test/ - Der Text muss mit test beginnen
/hall[^aeiou]/ - Die Buchstaben hall dürfen nicht mit a, e, i, o oder u enden
$ Überprüft das Ende des Textes /test$/ - Der Text muss mit test aufhören
| Ermöglicht Alternativen /(der|das)/ -Passt zu der und das
/Kind(er|ergarten|le)/ - Passt zu Kinder, Kindergarten und Kindle.
? Vorheriges Zeichen ist optional /iPhone[1-7]?/ -Passt zu iPhone, iPhone2 usw. bis iPhone7
* Wiederholung des vorherigen Elements (0 oder häufiger mal) /Windows [0-9]*/ - Passt zu Windows, Windows 98 und Windows 7, aber nicht Windows7.
+ Wiederholung des vorherigen Elements (1 oder häufiger mal) /[0-9]+/ - Passt zu allen natürlichen Zahlen.
{n} Exakt n-mal Wiederholung des vorherigen Elements /[0-9]{3}/ - Passt zu allen 3 stelligen Zahlen.
{m,n} Wiederholung des vorherigen Elements mindestens m-mal, maximal n-mal. /[0-9]{1,4}/ - Passt zu allen 1 bis 4 stelligen Zahlen.

Beispiele

Überprüfung der Postleitzahl preg_match("/^[0-9]{4}$/", $eingabe); ^ und $: Nur angegebene Zeichen dürfen vorkommen.
[0-9]{4}: Nur 4 stelligen Zahlen sind erlaubt
Überprüfung der Telefonnummer preg_match("/^\+?([0-9\/ -]+)$/", $eingabe); + und /: Diese Zeichen müssen mit \ maskiert werden.
Überprüfung der E-Mail-Adresse preg_match("/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]+$/", $eingabe); Hier wird untersucht, ob die E-Mail-Adresse eine @ und eine Domainendung besitzt.

Überblick

Arrayfunktionen

array_key_exists($key,$array) Prüft, ob ein Schlüssel in einem Array existiert.
arsort($array) Sortiert ein Array in umgekehrter Reihenfolge und erhält die Index-Assoziation.
asort($array) Sortiert ein Array und erhält die Index-Assoziation.
count($array) Zählt alle Elemente eines Arrays oder etwas in einem Objekt.
explode($teiler, $string) Teilt den $string an allen Stellen des $teilers und gibt die einzelnen Teile als Array zurück.
implode($teiler, $array) Verbindet alle Elemente des Arrays und liefert einen String zurück. Zwischen den Elementen wurde $teiler eingefügt.
in_array($suche, $array) Prüft, ob ein Wert in einem Array existiert.
krsort($array) Sortiert ein Array nach Schlüsseln in umgekehrter Reihenfolge.
ksort($array) Sortiert ein Array nach Schlüsseln.
natcasesort($array) Sortiert ein Array in "natürlicher Reihenfolge", Groß/Kleinschreibung wird ignoriert.
natsort($array) Sortiert ein Array in "natürlicher Reihenfolge".
print_r($array) Gibt den Inhalt eines Arrays inklusiver seiner Schlüssel aus.
rsort($array) Sortiert ein Array in umgekehrter Reihenfolge.
sort($array) Sortiert ein Array.
shuffle($array) Mischt die Elemente eines Arrays.

Dateifunktionen

copy($quelle, $ziel) Kopiert die Datei $quelle zum neuen Ziel $ziel.
file_exists($dateiname) Gibt true zurück, falls die Datei existiert.
file_get_contents($dateiname) Liest die gesamte Datei aus und gibt den Inhalt als String zurück.
file_put_contents($dateiname, $inhalt) Überschreibt die Datei mit neuem Inhalt.
file($dateiname) Liest zeilenweise eine Datei ein. Jede Zeile wird als Element eines Arrays zurückgegeben.
filesize($dateiname) Gibt die Größe einer Datei in Bytes zurück.
is_dir($pfad) Gibt true zurück, falls der Pfad ein Verzeichnis ist.
is_file($pfad) Gibt true zurück, falls der Pfad eine Datei ist.
is_readable($datei) Gibt true zurück, falls der Datei gelesen werden kann.
is_writable($datei) Gibt true zurück, falls in die Datei geschrieben werden kann.
mkdir($neues_Verzeichnis) Erstellt ein neues Verzeichnis.
move_uploaded_file($quelle, $ziel) Verschiebt eine hochgeladene Datei.
rmdir($verzeichnispfad) Löscht ein Verzeichnis.
unlink($dateipfad) Löscht eine Datei.

Datum/Uhrzeitfunktionen

date($format, $timestamp) Formatiert den Timestamp entsprechend dem Format.
microtime() Gibt den aktuellen Unix-Timestamp/Zeitstempel mit Mikrosekunden zurück.
mktime($stunde, $minute, sekunde, $monat, $tag, $jahr) Gibt den Unix-Timestamp/Zeitstempel für ein Datum zurück.
strtotime($string) Wandelt ein beliebiges in englischer Textform angegebenes Datum in einen UNIX-Zeitstempel (Timestamp) um.
time() Gibt den aktuellen Unix-Timestamp/Zeitstempel zurück (die Sekunden seit 1970).

Mathematische Funktionen

abs($zahl) Absolutwert der Zahl.
ceil($zahl) Aufrunden.
floor($zahl) Abrunden.
max($zahl1, $zahl2,...) Maximalwert der Zahlen. Funktioniert auf für Arrays mittels max($array).
min($zahl1, $zahl2,...) Minimalwert der Zahlen. Funktioniert auf für Arrays mittels min($array).
rand($min, $max) Erzeugt eine zufällige Zahl zwischen $min und $max.
round($zahl, $anzah_stellen) Rundet einen Fließkommawert.
sqrt($zahl) Berechnet die Quadratwurzel.

Stringfunktionen

addslashes($string) Stellt einfachen und doppelten Anführungszeichen einen Backslashs voran.
explode($teiler, $string) Teilt den $string an allen Stellen des $teilers und gibt die einzelnen Teile als Array zurück.
htmlentities($string) Wandelt alle geeigneten Zeichen in entsprechende HTML-Codes um.
htmlspecialchars($string) Wandelt Sonderzeichen in die entsprechenden HTML-Zeichen um.
implode($teiler, $array) Verbindet alle Elemente des Arrays und liefert einen String zurück. Zwischen den Elementen wurde $teiler eingefügt.
md5($string) Liefert den md5-Hash zurück.
nl2br($string) Wandelt Zeilenumbrüch in HTML-Zeilenumbrüche (<br>) um.
sha1($string) Liefert den sha1-Hash zurück.
preg_match($muster, $text) Sucht nach einem regulären Ausdruck in einem Text.
preg_replace($muster, $ersetzen, $text) Ersetzt Vorkommen eines regulären Ausdrucks in einem Text.
str_ireplace($suche, $ersetzen, $text) Ersetzt in $text alle Vorkommen von $suche durch $ersetzen. Groß- und Kleinschreibung wird ignoriert.
str_replace($suche, $ersetzen, $text) Ersetzt in $text alle Vorkommen von $suche durch $ersetzen. Groß- und Kleinschreibung wird beachtet.
stripos($text, $suche) Findet das erste Vorkommen eines Teilstrings in einem String und gibt dessen Position zurück. Groß- und Kleinschreibung wird ignoriert.
strpos($text, $suche) Findet das erste Vorkommen eines Teilstrings in einem String und gibt dessen Position zurück.
strtolower($string) Wandelt alle Buchstaben in Kleinbuchstaben um.
trim($string) Entfernt Whitespaces (Leerzeichen, Zeilenumbrüche, Tabulatoren etc.) am Anfang und Ende des Strings.

Sonstige Funktionen

include($dateipfad) Bindet eine Datei ein.
include_once($dateipfad) Bindet eine Datei höchstens einmal ein.
mail($empfaenger, $betreff, $text, $absender) Versendet eine E-Mail.
require($dateipfad) Bindet eine Datei ein.
require_once($dateipfad) Bindet eine Datei höchstens einmal ein.
session_destroy() Löscht die Session des Benutzers.
session_start() Startet eine Session oder setzt diese fort.
var_dump($variable) Gibt den Inhalt einer Variable aus, inklusive Typinformationen.