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=====
=====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: