PHP Schulungs Skript: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
= PHP – Einführung (Grundlagen) =
 +
 
== Install ==
 
== Install ==
 
* [[php Apache2 Modul]]
 
* [[php Apache2 Modul]]
  
 
== Grundlegendes ==
 
== Grundlegendes ==
* PHP steht für "Hypertext Preprocessor".
+
* PHP läuft auf dem Server (z. B. Apache)
* Ein wichtiger Mitgründer dieser Sprache war Rasmus Lerdorf.
+
* Der Browser sieht nur das erzeugte HTML
* Die Syntax ist an die Sprachen '''C''' und '''Perl''' angelehnt.
+
* PHP wird verwendet, um dynamische Webseiten zu erstellen
* PHP wird hauptsächlich für die Erstellung von dynamischen Webseiten oder Webanwendungen verwendet.
 
* PHP zeichnet sich durch große Datenbankunterstützung, Internet-Protokolleinbindungen und Verfügbarkeit vieler verschiedener Funktionsbibliotheken aus.
 
* PHP kann verschiedene Dateitypen wie Grafiken oder PDF-Dokumente erzeugen.
 
  
== Der Anfang: "Hallo Welt!" ==
+
== PHP im Web ==
PHP-Code steht immer zwischen '''<?php''' und '''?>'''. Dieser Bereich bildet den Rahmen.
+
* Ablauf:
 +
** Browser sendet Anfrage
 +
** PHP wird ausgeführt
 +
** PHP verarbeitet Daten
 +
** PHP erzeugt HTML
 +
** Browser zeigt Ergebnis
 +
 
 +
== Der Anfang ==
 +
PHP-Code steht zwischen <?php und ?>
 +
cat eins.php
 
<pre>
 
<pre>
 
<?php
 
<?php
 
+
echo "Hallo Welt";
 
?>
 
?>
 
</pre>
 
</pre>
  
Der Befehl '''echo''' gibt Texte aus, die in Anführungszeichen dahinter geschrieben sind. <br>
+
* echo gibt Text aus
Befehle werden immer mit einem Semikolon '''( ; )''' abgeschlossen.
+
* Jede Anweisung endet mit ;
 +
 
 +
== PHP und HTML ==
 +
cat zwei.php
 +
 
 
<pre>
 
<pre>
 +
<!DOCTYPE html>
 +
<html>
 +
<body>
 +
 +
<h1>Testseite</h1>
 +
 
<?php
 
<?php
echo "Hallo Welt\n";
+
echo "Hallo Welt";
 
?>
 
?>
 +
 +
</body>
 +
</html>
 
</pre>
 
</pre>
  
== Sonderzeichen maskieren ==
+
== Variablen ==
Um Anführungszeichen oder andere Sonderzeichen auszugeben, müssen sie maskiert werden.
+
 
 +
  sudo cat  /var/www/server/drei.php
 +
 
 
<pre>
 
<pre>
 
<?php
 
<?php
echo "Hallo \"Welt\" heute\n";
+
$name = "Server01";
 +
$os = "Linux";
 +
 
 +
echo "$name - $os";
 
?>
 
?>
 
</pre>
 
</pre>
  
== Auskommentieren ==
+
== Daten vom Benutzer ==
* PHP bietet drei Möglichkeiten, Code zu kommentieren:
+
* Formulare senden Daten an PHP
** '''/* */''' für mehrzeilige Kommentare
+
* Zugriff erfolgt über $_POST
** '''#''' für einzeilige Kommentare
+
 
** '''//''' für einzeilige Kommentare
+
sudo cat  /var/www/server/vier.php
  
Beispiel:
 
 
<pre>
 
<pre>
<?php
+
<!DOCTYPE html>
echo "Hallo Welt"; // Kommentar hinter einem Befehl
+
<html>
 +
<body>
  
/*
+
<form method="post">
* echo "Hallo Nichts";
+
Name: <input type="text" name="name">
* echo "Es kommt keine Ausgabe";
+
<input type="submit" value="Senden">
*/
+
</form>
  
# Ein weiterer Kommentar
+
<?php
 +
if (isset($_POST['name'])) {
 +
    echo "Hallo " . $_POST['name'];
 +
}
 
?>
 
?>
 +
 +
</body>
 +
</html>
 
</pre>
 
</pre>
  
== PHP und HTML mischen ==
+
== Typischer Ablauf ==
PHP-Code kann direkt in HTML eingebunden werden.
+
* Benutzer gibt Daten ein
 +
* Daten werden an PHP gesendet
 +
* PHP verarbeitet die Daten
 +
* Ergebnis wird im Browser angezeigt
 +
 
 +
== Arbeiten mit Dateien ==
 
<pre>
 
<pre>
<html>
 
<h1>HTML und PHP auf einer Seite</h1>
 
 
<?php
 
<?php
echo "Hallo Welt\n";
+
file_put_contents("test.txt", "Hallo Datei");
 +
echo file_get_contents("test.txt");
 
?>
 
?>
</html>
 
 
</pre>
 
</pre>
 +
'''Testen'''
  
== Variablen ==
+
== Shell-Zugriffe ==
 
<pre>
 
<pre>
 
<?php
 
<?php
$name = 'Poppe Desanex';
+
$ip = shell_exec("ip a s enp0s3 | grep 'inet\\>' | awk '{ print \$2 }'");
$zahlen = 33;
+
echo $ip;
 
 
echo "Ich bin $name und $zahlen Jahre jung";
 
 
?>
 
?>
 
</pre>
 
</pre>
  
== Übergabe von Parametern ==
+
* Achtung:
PHP kann Argumente über die Kommandozeile empfangen.
+
** Nur kontrolliert einsetzen
 +
** Keine Benutzereingaben ungeprüft übergeben
 +
 
 +
== PHP auf der Kommandozeile ==
 +
* PHP kann auch ohne Webserver genutzt werden
 +
 
 +
; Datei erstellen:
 +
    nano test.php
 +
 
 +
; Inhalt:
 
<pre>
 
<pre>
 
<?php
 
<?php
// Zugriff auf übergebene Argumente
 
 
print_r($argv);
 
print_r($argv);
 
// Beispielhafte Verwendung
 
if (isset($argv[1])) {
 
    echo "Erstes Argument: " . $argv[1] . PHP_EOL;
 
}
 
if (isset($argv[2])) {
 
    echo "Zweites Argument: " . $argv[2] . PHP_EOL;
 
}
 
 
?>
 
?>
 
</pre>
 
</pre>
; Beispiel-Aufruf:
+
 
* '''php parameter.php rot grün'''
+
; Aufruf:
 +
    php test.php hallo welt
 +
 
 
; Ausgabe:
 
; Ausgabe:
 
<pre>
 
<pre>
 
Array (
 
Array (
     [0] => parameter.php
+
     [0] => test.php
     [1] => rot
+
     [1] => hallo
     [2] => grün
+
     [2] => welt
 
)
 
)
Erstes Argument: rot
 
Zweites Argument: grün
 
 
</pre>
 
</pre>
  
== Kontrollstrukturen ==
+
* Unterschied:
 +
** Web → $_POST
 +
** Konsole → $argv
  
=== if ===
+
== Sicherheitsgrundlagen ==
 +
* Benutzereingaben niemals vertrauen
 +
* Ausgaben im Browser können Code enthalten
 +
 
 +
== Aufgaben (Web) ==
 +
* Erstelle eine PHP-Datei, die "Hallo Welt" im Browser ausgibt
 +
* Baue ein Formular und gib den eingegebenen Namen aus
 +
* Erzeuge Variablen und gib sie im HTML aus
 +
* Speichere einen Text in einer Datei und lies ihn wieder aus
 +
 
 +
== Aufgaben (Konsole) ==
 +
* Führe ein PHP-Skript auf der Konsole aus
 +
* Übergib Parameter und gib sie aus
 +
 
 +
<!---
 +
== Lösungen (Web) ==
 +
 
 +
; Aufgabe 1
 
<pre>
 
<pre>
 
<?php
 
<?php
if ($argv[1] < 39) {
+
echo "Hallo Welt";
    echo "Du bist " . $argv[1] . PHP_EOL;
 
}
 
 
?>
 
?>
 
</pre>
 
</pre>
  
=== else ===
+
; Aufgabe 2
 
<pre>
 
<pre>
<?php
+
<!DOCTYPE html>
if ($argv[1] < 39) {
+
<html>
    echo "Du bist " . $argv[1] . " Jahre alt." . PHP_EOL;
+
<body>
} else {
 
    echo "Du bist 39 Jahre oder älter." . PHP_EOL;
 
}
 
?>
 
</pre>
 
  
=== while ===
+
<form method="post">
<pre>
+
Name: <input type="text" name="name">
<?php
+
<input type="submit" value="Senden">
$i = 0;
+
</form>
while($i < 10) {
 
  echo "$i, ";
 
  $i++;
 
}
 
?>
 
</pre>
 
  
=== for ===
 
<pre>
 
 
<?php
 
<?php
for($i = 0; $i < 10; $i++) {
+
if (isset($_POST['name'])) {
  echo "$i, ";
+
    echo "Hallo " . $_POST['name'];
 
}
 
}
 
?>
 
?>
</pre>
 
  
== Arrays ==
+
</body>
<pre>
+
</html>
<?php
 
$wochentage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
 
echo $wochentage[1];
 
?>
 
 
</pre>
 
</pre>
  
== Funktionen in PHP ==
+
; Aufgabe 3
PHP ermöglicht die Definition eigener Funktionen.
 
 
<pre>
 
<pre>
 
<?php
 
<?php
function begruessung($name) {
+
$name = "Server01";
    return "Hallo " . $name . "!";
+
$os = "Linux";
}
 
  
echo begruessung("Max");
+
echo "$name - $os";
 
?>
 
?>
 
</pre>
 
</pre>
  
== Integrierte Funktionen ==
+
; Aufgabe 4
PHP bietet viele vordefinierte Funktionen.
 
* String-Funktionen:
 
 
<pre>
 
<pre>
 
<?php
 
<?php
echo strtoupper("hallo welt"); // HALLO WELT
+
file_put_contents("test.txt", "Test");
echo strtolower("HALLO WELT"); // hallo welt
+
echo file_get_contents("test.txt");
echo strlen("Hallo"); // 5
 
 
?>
 
?>
 
</pre>
 
</pre>
  
* Array-Funktionen:
+
== Lösungen (Konsole) ==
<pre>
 
<?php
 
$zahlen = array(1, 2, 3, 4, 5);
 
echo count($zahlen); // 5
 
echo array_sum($zahlen); // 15
 
?>
 
</pre>
 
  
== Arbeiten mit Dateien ==
+
; Aufgabe 5
* Datei erstellen und schreiben:
 
 
<pre>
 
<pre>
 
<?php
 
<?php
$file = fopen("test.txt", "w");
+
print_r($argv);
fwrite($file, "Hallo Datei!");
 
fclose($file);
 
 
?>
 
?>
 
</pre>
 
</pre>
  
* Datei lesen:
+
; Aufruf:
<pre>
+
    php test.php test1 test2
<?php
+
--->
$file = fopen("test.txt", "r");
 
echo fread($file, filesize("test.txt"));
 
fclose($file);
 
?>
 
</pre>
 
 
 
== Module in PHP ==
 
* PHP kann mit Modulen erweitert werden.
 
* Module prüfen:
 
<pre>
 
php -m
 
</pre>
 
* Wichtige Module:
 
** ''pdo_mysql'' – MySQL-Datenbankzugriff
 
** ''gd'' – Grafikerstellung
 
** ''curl'' – Webanfragen über HTTP/S
 
** ''mbstring'' – Multibyte-String-Unterstützung
 
 
 
== Aufgaben ==
 
* Erstelle eine eigene Funktion zur Berechnung der Summe zweier Zahlen.
 
* Schreibe eine Datei und lies sie wieder aus.
 
* Teste verschiedene String- und Array-Funktionen.
 
  
== Warum ist PHP wichtig? ==
+
== Ziel ==
* Ermöglicht die serverseitige Verarbeitung für dynamische Webseiten.
+
* Verständnis für den Ablauf von PHP im Web
* Große Community und viele verfügbare Bibliotheken.
+
* Vorbereitung auf die weitere Anwendung
* Unterstützt zahlreiche Datenbanken und externe APIs.
 

Aktuelle Version vom 24. März 2026, 10:29 Uhr

PHP – Einführung (Grundlagen)

Install

Grundlegendes

  • PHP läuft auf dem Server (z. B. Apache)
  • Der Browser sieht nur das erzeugte HTML
  • PHP wird verwendet, um dynamische Webseiten zu erstellen

PHP im Web

  • Ablauf:
    • Browser sendet Anfrage
    • PHP wird ausgeführt
    • PHP verarbeitet Daten
    • PHP erzeugt HTML
    • Browser zeigt Ergebnis

Der Anfang

PHP-Code steht zwischen <?php und ?>

cat eins.php
<?php
echo "Hallo Welt";
?>
  • echo gibt Text aus
  • Jede Anweisung endet mit ;

PHP und HTML

cat zwei.php 
<!DOCTYPE html>
<html>
<body>

<h1>Testseite</h1>

<?php
echo "Hallo Welt";
?>

</body>
</html>

Variablen

 sudo cat  /var/www/server/drei.php
<?php
$name = "Server01";
$os = "Linux";

echo "$name - $os";
?>

Daten vom Benutzer

  • Formulare senden Daten an PHP
  • Zugriff erfolgt über $_POST
sudo cat  /var/www/server/vier.php
<!DOCTYPE html>
<html>
<body>

<form method="post">
Name: <input type="text" name="name">
<input type="submit" value="Senden">
</form>

<?php
if (isset($_POST['name'])) {
    echo "Hallo " . $_POST['name'];
}
?>

</body>
</html>

Typischer Ablauf

  • Benutzer gibt Daten ein
  • Daten werden an PHP gesendet
  • PHP verarbeitet die Daten
  • Ergebnis wird im Browser angezeigt

Arbeiten mit Dateien

<?php
file_put_contents("test.txt", "Hallo Datei");
echo file_get_contents("test.txt");
?>

Testen

Shell-Zugriffe

<?php
$ip = shell_exec("ip a s enp0s3 | grep 'inet\\>' | awk '{ print \$2 }'");
echo $ip;
?>
  • Achtung:
    • Nur kontrolliert einsetzen
    • Keine Benutzereingaben ungeprüft übergeben

PHP auf der Kommandozeile

  • PHP kann auch ohne Webserver genutzt werden
Datei erstellen
   nano test.php
Inhalt
<?php
print_r($argv);
?>
Aufruf
   php test.php hallo welt
Ausgabe
Array (
    [0] => test.php
    [1] => hallo
    [2] => welt
)
  • Unterschied:
    • Web → $_POST
    • Konsole → $argv

Sicherheitsgrundlagen

  • Benutzereingaben niemals vertrauen
  • Ausgaben im Browser können Code enthalten

Aufgaben (Web)

  • Erstelle eine PHP-Datei, die "Hallo Welt" im Browser ausgibt
  • Baue ein Formular und gib den eingegebenen Namen aus
  • Erzeuge Variablen und gib sie im HTML aus
  • Speichere einen Text in einer Datei und lies ihn wieder aus

Aufgaben (Konsole)

  • Führe ein PHP-Skript auf der Konsole aus
  • Übergib Parameter und gib sie aus


Ziel

  • Verständnis für den Ablauf von PHP im Web
  • Vorbereitung auf die weitere Anwendung