Benutzer-Werkzeuge

Webseiten-Werkzeuge


coding:php

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 Xampp

Linux

Installiert man einfach nur das Paket php, so wird der Webserver 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"] . "<br>";
    }
} 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"] . "<br>";
    echo "Alter: " . $row["alter"] . "<br>";
    echo "E-Mail: " . $row["email"] . "<br><br>";
}
 
$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

<?php
// Verbindung zur MSSQL-Datenbank herstellen
$serverName = "localhost";  // Servername
$connectionOptions = array(
    "Database" => "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'] . "<br />";
    echo "Spalte2: " . $row['Spalte2'] . "<br />";
}
 
// Verbindung schließen
sqlsrv_free_stmt( $stmt );
sqlsrv_close( $conn );
?>

PDO

<?php
// Verbindung zur MSSQL-Datenbank herstellen
$serverName = "localhost";  // Servername
$connectionOptions = array(
    "Database" => "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'] . "<br />";
        echo "Spalte2: " . $row['Spalte2'] . "<br />";
    }
} catch (PDOException $e) {
    echo "Verbindungsfehler: " . $e->getMessage();
}
?>

File Upload

<?php

if(isset($_POST["submit"])) {

    $target = basename($_FILES["file"]["name"]); 
    // check if its an actual image (optional), remove for other file types
    $check = getimagesize($_FILES["file"]["tmp_name"]);
    if($check) 
        move_uploaded_file($_FILES["file"]["tmp_name"], $target); 
  
}

?>

<form method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="file" id="file">
  <input type="submit" value="Upload Image" name="submit">
</form>

CMS

Hier ist ein einfacher Ansatz:

index.php:

<?php
 
// CMS-Konfiguration
$config = [
    'theme' => '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

<?php
 
class Theme
{
    public function renderHeader()
    {
        return '<header>Header des Themes</header>';
    }
 
    public function renderFooter()
    {
        return '<footer>Footer des Themes</footer>';
    }
}
 
?>

plugins/plugin1/plugin.php:

<?php
 
class Plugin
{
    // Hier können Plugin-spezifische Funktionen implementiert werden
}
 
?>

plugins/plugin2/plugin.php:

<?php
 
class Plugin
{
    // Hier können Plugin-spezifische Funktionen implementiert werden
}
 
?>
coding/php.txt · Zuletzt geändert: 2024/11/29 13:22 von jango