PHP
Inhaltsverzeichnis
Grundlagen
Variablen
Variablen beginnen mit dem Dollarzeichen $
Referenzen
$ersteVariable = 1; $zweiteVariable = &$ersteVariable; $zweiteVariable = 2; echo $ersteVariable; ==> Ausgabe: 2
Konstanten
define
("Konstante", "Wert");
Beispiele:
define("GRUSS", "Hallo"); define("ZAHL", 20);
oder
const
Konstante = "Wert";
const GRUSS = "Hallo"; const ZAHL = 20;
Es ist eine Konvention, Konstanten mit Großbuchstaben zu schreiben.
Innerhalb von Anführungszeichen werden Konstanten, anders als Variable, nicht interpoliert.
Definition mit true
:
define("ZAHL", 20, true);
Hier wird nicht zwischen Groß- und Kleinschreibung unterscheiden, es würde als auch echo zahl; ausgewertet.
Vordefinierte Konstanten:
M_PI
= 3.1415926535898
Magische Konstanten
Beispiel:
__LINE__
: Angabe der Zeilennummer
Datentypen
Datentypen können sich in einem Skript ändern:
$a = "Hallo"; $a = 9;
Die Ausgabe der Datentypen erfolgt mit var_dump
var_dump($a);
Umwandlung von Datentypen:
$string = "44"; $zahl = (int) $string;
Operatoren
PHP verwendet die in der C-Familie üblichen Operatoren. Seit Version 5.6 wird auch der Operator **
für die Potenzierung verwendet:
$i = 4; $j = 2; echo $i ** $j; ==> Ausgabe 16
Alte Schreibweise: echo pow
($i, $j);
Zeichenketten-Operatoren:
$a = "Hallo "; $b = $a . "Welt!"; // $b enthält jetzt den Text "Hallo Welt!"
echo $wochentag . ', den ' . $datum; *
Kurzschreibweise mit Operator .=
:
$kleidung = "Hose"; $kleidung .= " und Pullover";
Operatoren-Reihenfolge:
Arrays durchsuchen
for
<?php // On crée notre array $prenoms $prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît'); // Puis on fait une boucle pour tout afficher : for ($numero = 0; $numero < 5; $numero++) { echo $prenoms[$numero] . '<br />'; // affichera $prenoms[0], $prenoms[1] etc. } ?>
foreach
Es gibt zwei Schreibweisen:
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
Die erste Form durchläuft das in array_expression angegebene Array. Bei jedem Durchlauf wird der Wert des aktuellen Elementes der Variable $value zugewiesen und der interne Array-Zeiger um eins erhöht (womit im nächsten Durchlauf das nächste Element betrachtet wird). Beispiel:
<?php $prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît'); foreach($prenoms as $element) { echo $element . '<br />'; // affichera $prenoms[0], $prenoms[1] etc. } ?>
Die zweite Form schreibt zusätzlich den Schlüssel des aktuellen Elementes in jedem Durchlauf in die Variable $key. [1]
Beispiel:
<?php $letters = array( 'A' , 'B' , 'C' ) ; $numbers = array( 1 , 2 , 3 ) ; $matrix = array( 'Letter' => $letters , 'Number' => $numbers ) ; echo "<p>Start : {$matrix['Letter'][0]} </p>" ; foreach( $matrix as $array => $list ) { echo '<ul>' ; foreach( $list as $key => $value ) { echo "<li>$array [ $key ] = $value " ; } echo '</ul>' ; } ?>[2]
print_r
print_r wird für das Debugging verwendet.
Für eine übersichtliche Ausgabe ist das Tag pre erforderlich:
<?php $coordonnees = array ( 'prenom' => 'François', 'nom' => 'Dupont', 'adresse' => '3 Rue du Paradis', 'ville' => 'Marseille'); echo '<pre>'; print_r($coordonnees); echo '</pre>'; ?>
array_key_exists
Erst wird der zu suchende Schlüssel angegeben, dann das Array, in dem gesucht wird:
<?php $coordonnees = array ( 'prenom' => 'François', 'nom' => 'Dupont', 'adresse' => '3 Rue du Paradis', 'ville' => 'Marseille'); if (array_key_exists('nom', $coordonnees)) { echo 'La clé "nom" se trouve dans les coordonnées !'; } if (array_key_exists('pays', $coordonnees)) { echo 'La clé "pays" se trouve dans les coordonnées !'; } ?>
in_array
Prüfen, ob ein Wert im Array vorkommt:
<?php $fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise'); if (in_array('Myrtille', $fruits)) { echo 'La valeur "Myrtille" se trouve dans les fruits !'; } if (in_array('Cerise', $fruits)) { echo 'La valeur "Cerise" se trouve dans les fruits !'; } ?>
array_search
Den Schlüssel für einen bestimmten Wert ermitteln:
<?php $fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise'); $position = array_search('Fraise', $fruits); echo '"Fraise" se trouve en position ' . $position . '<br />'; $position = array_search('Banane', $fruits); echo '"Banane" se trouve en position ' . $position; ?>
array_rand
Ermittelt eine zufällige Indexnummer aus dem Array:
$zufallszahl = array_rand($arrayname);
Funktionen
strlen: Länge einer Zeichenkette
str_replace: ersetzt eine Zeichenkette durch eine andere. $ma_variable = str_replace('b', 'p', 'bim bam boum');
strtolower: wandelt alle Buchstaben in Kleinschreibung um.
strtoupper: wandelt alle Buchstaben in Großschreibung um.
Zeit
Zeitzonen legt man folgerndermaßen fest:
date_default_timezone_set('Europe/Berlin');
getdate
date_default_timezone_set('Europe/Berlin'); $d = getdate(); echo $d['hours'].":".$d['minutes']; echo '</p>';
date
Aktuelles Datum und Uhrzeit ausgeben:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Meine Website</title> </head> <body> <h1>Meine Website</h1> <p>Heute ist der <?php echo date('d/m/Y h:i:s'); ?>.</p> </body> </html>
date("Y")
gibt die aktuelle Jahreszahl aus.
Funktionen erstellen
Beispiel:
<?php // Ci-dessous, la fonction qui calcule le volume du cône function VolumeCone($rayon, $hauteur) { $volume = $rayon * $rayon * 3.14 * $hauteur * (1/3); // calcul du volume return $volume; // indique la valeur à renvoyer, ici le volume } $volume = VolumeCone(3, 1); echo 'Le volume d\'un cône de rayon 3 et de hauteur 1 est de ' . $volume; ?>
Datenbank
MySQL
mysqli
$mysqli = new mysqli('localhost', 'root', ''); if (!$mysqli) { die("Konnte die Datenbank nicht öffnen. Fehlermeldung: ". mysql_error()); } echo "Erfolgreich zur Datenbank verbunden!<br>";
PDO
phpMyAdmin
Installation
Troubleshooting: mcrypt
Bei der Aktivierung phpenmod mcrypt
kommt die Fehlermeldung WARNING: Module mcrypt ini file doesn't exist under /etc/php/7.0/mods-available.
Es muss folgendes Paket nachinstalliert werden:
php7.0-mcrypt
Troubleshooting: apache2.conf
Beim Aufruf im Browser kommt die Fehlermeldung " You don't have permission to access /phpmyadmin on this server."
==> In /etc/apache2/apache2.conf muss folgender Eintrag stehen:
<Directory /usr/share> AllowOverride None Require all granted </Directory>
Formulare
Beispiel
1. HTML-Datei "mwst.html" mit Formularstruktur:
<!doctype html> <html> <head> <meta charset = "utf-8"> <title>Mehrwertsteuer</title> <style type="text/css"> body {font-family: Arial;} fieldset { width: 300px; border: 3px solid black; } legend {font-weight: bold;} </style> </head> <body> <form method="post" action="mwst.php"> <fieldset> <legend>Bitte geben Sie den Brutto-Wert ein</legend> <input type="text" name="brutto"> <input type="submit" value="Berechnen"> </fieldset> </form> </body> </html>
2. PHP-Datei "mwst.php":
<?php define("MWST",19.00); // aktueller MwSt.-Satz $brutto = $_POST["brutto"]; // Formularauswertung $netto =$brutto/(100+MWST)*100; // Netto berechnen $mwst = $brutto-$netto; // MwSt. berechnen ?> <!doctype html> <html> <head> <charset = "utf-8"> <title>Mehrwertsteuer</title> </head> <body> <p>Netto: <?= $netto ?></p> <p>MwSt (<?= MWST ?> %): <?= $mwst ?></p> <p>Brutto: <?= $brutto ?></p> </body> </html>
Validierung
empty()
gibt TRUE zurück, wenn die übergebene Variabel leer ist oder null, NULL, FALSE.
is_numeric
gibt nur dann TRUE zurück, wenn der Wert eine Zahl ist.
preg_match()
nimmt als Variablen einen regulären Ausdruck und ein Argument entgegen, in dem das Muster gesucht wird. Beispiel:
$email = $_POST['email'] ; $pattern = '/\b[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}\b/' ; if ( !preg_match( $pattern , $email ) ) { $email = NULL ; echo 'E-Mail-Adresse in falschen Format' ; }
Sessions und Cookies
Die Codes für Sessions und Cookies müssen in der Datei ganz oben stehen, noch vor dem HTML-Code.
Sessions
Es gibt folgende Funktionen:
session_start()
session_destroy()
Die Sitzungsdaten werden in das Array $_SESSION
geschrieben.
<?php session_start(); // On démarre la session AVANT toute chose ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Titre de ma page</title> </head> <body> <p>Re-bonjour !</p> <p> Je me souviens de toi ! Tu t'appelles <?php echo $_SESSION['prenom'] . ' ' . $_SESSION['nom']; ?> !<br /> Et ton âge hummm... Tu as <?php echo $_SESSION['age']; ?> ans, c'est ça ? :-D </p> </body> </html>
Cookies
Um ein Cookie zu schreiben, verwendet man die PHP-Funktion setcookie
.
Man weist ihr normalerweise drei Parameter zu, in folgender Reihenfolge:
- Name des Cookies (ex. : pseudo ) ;
- Wert des Cookies (ex. : M@teo21 ) ;
- Ablaufdatum des Cookies, im Timestamp-Format (ex. : 1090521508 ).
<?php setcookie('pseudo', 'M@teo21', time() + 365*24*3600, null, null, false, true); ?>
Der Timestamp time() + 365*24*3600 bedeutet, dass das Cookie für ein Jahr gesetzt wird. Mit dem letzten Parameter true wird die Sicherheitsoption httpOnly
gesetzt. [6]
In Dateien lesen und schreiben
Beispiel: Seitenaufrufe ausgeben
<?php $datei = fopen('zaehler.txt', 'r+'); $aufrufe = fgets($datei); // Die erste Zeile wird eingelesen (Anzahl aufgerufener Seiten) $aufrufe += 1; // Anzahl wird um 1 erhöht fseek($datei, 0); // Cursor wird an den Anfang des Dokuments gesetzt. fputs($datei, $aufrufe); // Die neue Anzahl von Seitenaufrufen wird geschrieben. fclose($datei); echo '<p>Diese Seite wurde ' . $aufrufe . ' Mal aufgerufen!</p>'; ?>
Fehler und Debugging
Fehleranzeige einschalten:
- > /etc/php/7.0/apache2/php.ini > display_errors auf On stellen
Heredoc
echo <<<EOT My name is "$name". I am printing some $foo->foo. Now, I am printing some {$foo->bar[1]}. This should print a capital 'A': \x41 EOT;
curl
Es muss die Bibliothek libcurl
vorhanden sein und zusätzlich das Paket php-curl
installiert werden. Nach der Installation von php-curl muss Apache neu gestartet werden (in Ubuntu z. B. mit service apache2 restart).
Objektorientierung
Siehe Seite PHP - Objektorientierung
Links
| | |