PHP (PHP Hypertext Preprocessor) und ist eine weit verbreitete serverseitige Skriptsprache, die hauptsächlich für die Entwicklung von Webanwendungen verwendet wird. PHP wird in der Regel in Verbindung mit einer Webserver-Software wie Apache, Nginx oder Microsoft IIS eingesetzt. =====Syntax===== php -r 'phpinfo();' ====Variablen==== $zahl = 10; // Integer $preis = 19.99; // Float $name = "John"; // String $istWahr = true; // Boolean $farben = array("Rot", "Grün", "Blau"); // Array ====Schleifen==== $zahl = 10; if ($zahl > 5) { echo "Die Zahl ist größer als 5."; } else { echo "Die Zahl ist kleiner oder gleich 5."; } $zahl = 1; while ($zahl <= 5) { echo $zahl; $zahl++; } for ($i = 1; $i <= 5; $i++) { echo $i; } $zahl = 1; do { echo $zahl; $zahl++; } while ($zahl <= 5); ====Funktionen==== function addiere($zahl1, $zahl2) { $summe = $zahl1 + $zahl2; return $summe; } $resultat = addiere(3, 5); echo $resultat; // Ausgabe: 8 $multipliziere = function($a, $b) { return $a * $b; }; $resultat = $multipliziere(5, 3); echo $resultat; // Ausgabe: 15 function berechne($zahl1, $zahl2, $zahl3 = 0) { return $zahl1 + $zahl2 + $zahl3; } $resultat1 = berechne(3, 5); $resultat2 = berechne(3, 5, 2); echo $resultat1; // Ausgabe: 8 echo $resultat2; // Ausgabe: 10 ====Klassen==== class Auto { public $marke; public $farbe; public function fahre() { echo "Das Auto fährt!"; } } // Objekt erstellen $meinAuto = new Auto(); // Eigenschaften setzen $meinAuto->marke = "BMW"; $meinAuto->farbe = "Blau"; // Eigenschaften ausgeben echo $meinAuto->marke; // Ausgabe: BMW echo $meinAuto->farbe; // Ausgabe: Blau // Methode aufrufen $meinAuto->fahre(); // Ausgabe: Das Auto fährt! =====Installation===== ====Windows==== Apache oder [[https://www.apachefriends.org/de/download.html|Xampp]] ====Linux==== Installiert man einfach nur das Paket php, so wird der Webserver [[:apache|Apache]] mitinstalliert und eine sofort lauffähige Apache PHP Umgebung geschaffen. apt install php // php + apache Die Anbindung an einen bestehenden Apache kann ansonsten mit folgendem Paket nachinstalliert werden. apt install libapache2-mod-php // nur php Wer PHP nicht mit Webservern einsetzen will kann auch nur die Kommandozeilentools installieren. apt install php-cli =====Array Funktionen===== ====asort==== sort an associative array based on its values $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); asort($age); ====ksort==== sort an associative array based on its keys $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); ksort($age); ==== array_flip ==== flip keys/values $input = array(0 => "Orange", 1 => "Apfel", 2 => "Birne"); print_r(array_flip($input)); ====array_filter==== execute a callback on each index function isOdd($var) return $var & 1; function isEven($var) { return !($var & 1); } $input = [1,2,3,4,5]; print_r(array_filter($input, 'isOdd')); ====array_map==== execute a callback on each index function cube($n) { return $n * $n * $n; } $a = array(1, 2, 3, 4, 5); print_r(array_map("cube", $a)); ====array_splice==== splice an array at a given point or range array_splice(array(input), int offset, int length, mixed array replacement) $input = array("rot", "grün", "blau", "gelb"); array_splice($input, 2); // $input ist nun array("rot", "grün") array_splice($input, 1, -1); // $input ist nun array("rot", "gelb") array_splice($input, -1, 1, array("schwarz", "braun")); // $input ist nun array("rot", "grün", "blau", "schwarz", "braun") ====array_diff==== give two arrays get the difference by default looking for values, to sort keys use [[#array_diff_key]] $array1 = array("a" => "grün", "rot", "blau", "rot"); $array2 = array("b" => "grün", "gelb", "rot"); print_r(array_diff($array1, $array2)); // array(1, 'blau') ====array_diff_key==== to get diff of values use [[#array_diff]] $array1 = array('blau' => 1, 'rot' => 2, 'grün' => 3, 'violett' => 4); $array2 = array('grün' => 5, 'gelb' => 7, 'türkis' => 8); print_r(array_diff_key($array1, $array2)); ====array_combine==== given 2 arrays it uses 1 as keys, 1 as values $a = array('gruen', 'rot', 'gelb'); $b = array('avokado', 'apfel', 'banane'); print_r(array_combine($a, $b)); =====Output Buffer===== // Output Buffering-Modus starten. ob_start(); echo "Inhalt im Buffer"; // gibt den Inhalt des Output Buffers zurück, ohne ihn zu leeren. ob_start(); echo "Inhalt im Buffer"; $content = ob_get_contents(); echo "Inhalt im Buffer: " . $content; // Output Buffer leeren, ohne den Inhalt an den Browser zu senden ob_start(); echo "Inhalt im Buffer"; ob_clean(); // leert den Output Buffer und beendet das Output Buffering. ob_start(); echo "Inhalt im Buffer"; ob_end_clean(); // gibt die Länge des Inhalts im Output Buffer zurück. ob_start(); echo "Inhalt im Buffer"; $length = ob_get_length(); echo "Länge des Inhalts im Buffer: " . $length; // gibt den Inhalt des Output Buffers an den Browser aus und beendet das Output Buffering ob_start(); echo "Inhalt im Buffer"; ob_end_flush(); =====Cross Domain Origin===== header("Access-Control-Allow-Origin: *"); =====Mail===== $from = "from@mail.at"; $to = 'to@mail.at'; $reply_to = "from@mail.at"; $subject = 'Ein Betreff'; $message = 'Ein Inhalt'; $header = 'From: ' . $from . "\r\n" . 'Reply-To: ' . $reply_to . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $header); =====Database===== ====MySQLi==== $servername = "localhost"; $username = "root"; $password = "dein-passwort"; $dbname = "deine-datenbank"; // Verbindung zur Datenbank herstellen $conn = new mysqli($servername, $username, $password, $dbname); // Beispielabfrage $sql = "SELECT * FROM benutzer"; $result = $conn->query($sql); // Überprüfen und Ausgeben der Ergebnisse if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "Name: " . $row["name"] . "
"; } } else { echo "Keine Ergebnisse gefunden."; } // Verbindung schließen $conn->close();
====pdo==== $servername = "localhost"; $username = "root"; $password = "dein-passwort"; $dbname = "deine-datenbank"; // Verbindung zur Datenbank herstellen $conn = new mysqli($servername, $username, $password, $dbname); $stmt = $conn->prepare("SELECT * FROM benutzer WHERE alter > ?"); $alterGrenzwert = 25; $stmt->bind_param("i", $alterGrenzwert); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo "Name: " . $row["name"] . "
"; echo "Alter: " . $row["alter"] . "
"; echo "E-Mail: " . $row["email"] . "

"; } $stmt->close(); $stmt = $conn->prepare("UPDATE benutzer SET email = ? WHERE id = ?"); $id = 1; $email = "neue-email@example.com"; $stmt->bind_param("si", $email, $id); $stmt->execute(); if ($stmt->affected_rows > 0) { echo "Datensatz erfolgreich aktualisiert."; } else { echo "Fehler beim Aktualisieren des Datensatzes."; } $stmt->close(); $stmt = $conn->prepare("DELETE FROM benutzer WHERE id = ?"); $id = 1; $stmt->bind_param("i", $id); $stmt->execute(); if ($stmt->affected_rows > 0) { echo "Datensatz erfolgreich gelöscht."; } else { echo "Fehler beim Löschen des Datensatzes."; } $stmt->close();
=====MSSQL===== ====SQLSRV==== "deine_datenbank", // Datenbankname "Uid" => "dein_benutzername", // Benutzername "PWD" => "dein_passwort" // Passwort ); // Verbindung herstellen $conn = sqlsrv_connect( $serverName, $connectionOptions ); // Überprüfen, ob die Verbindung erfolgreich war if( !$conn ) { die( print_r(sqlsrv_errors(), true)); } // SQL-Abfrage $query = "SELECT * FROM deine_tabelle"; // Abfrage ausführen $stmt = sqlsrv_query( $conn, $query ); // Überprüfen, ob die Abfrage erfolgreich war if( !$stmt ) { die( print_r(sqlsrv_errors(), true)); } // Ergebnisse anzeigen while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) { echo "Spalte1: " . $row['Spalte1'] . "
"; echo "Spalte2: " . $row['Spalte2'] . "
"; } // Verbindung schließen sqlsrv_free_stmt( $stmt ); sqlsrv_close( $conn ); ?>
====PDO==== "deine_datenbank", // Datenbankname "Uid" => "dein_benutzername", // Benutzername "PWD" => "dein_passwort" // Passwort ); try { // Mit PDO verbinden $conn = new PDO("sqlsrv:Server=$serverName;Database=" . $connectionOptions['Database'], $connectionOptions['Uid'], $connectionOptions['PWD']); // Fehlerbehandlung aktivieren $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // SQL-Abfrage $query = "SELECT * FROM deine_tabelle"; // Abfrage ausführen $stmt = $conn->query($query); // Ergebnisse anzeigen while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "Spalte1: " . $row['Spalte1'] . "
"; echo "Spalte2: " . $row['Spalte2'] . "
"; } } catch (PDOException $e) { echo "Verbindungsfehler: " . $e->getMessage(); } ?>
=====File Upload=====
Select image to upload:
=====CMS===== Hier ist ein einfacher Ansatz: index.php: 'default', 'plugins' => ['plugin1', 'plugin2'] ]; // Aktives Theme und Plugins laden $theme = loadTheme($config['theme']); $plugins = loadPlugins($config['plugins']); // CMS-Inhalt generieren $content = generateContent(); // CMS-Layout anzeigen renderLayout($theme, $content); // Aktives Theme laden function loadTheme($themeName) { $themePath = 'themes/' . $themeName . '/'; if (file_exists($themePath . 'theme.php')) { include($themePath . 'theme.php'); return new Theme(); } else { die('Theme nicht gefunden'); } } // Plugins laden function loadPlugins($pluginNames) { $plugins = []; foreach ($pluginNames as $pluginName) { $pluginPath = 'plugins/' . $pluginName . '/'; if (file_exists($pluginPath . 'plugin.php')) { include($pluginPath . 'plugin.php'); $plugins[] = new Plugin(); } } return $plugins; } // CMS-Inhalt generieren function generateContent() { $content = ''; // Hier wird der CMS-Inhalt generiert // Zum Beispiel aus einer Datenbank abrufen oder statischen Inhalt generieren return $content; } // CMS-Layout anzeigen function renderLayout($theme, $content) { echo $theme->renderHeader(); echo $content; echo $theme->renderFooter(); } ?> themes/default/theme.php Header des Themes'; } public function renderFooter() { return ''; } } ?> plugins/plugin1/plugin.php: plugins/plugin2/plugin.php: