Benutzer:Misericordia/Experimente

Aus Wikibooks

Websiteentwicklung: PHP: Praxisorientiert[Bearbeiten]

  • Zielgruppe: Neulinge in der PHP-Programmierung. Kenntnisse von einfachem XHTML (Abschnitt Grundlagen), später auch SQL (Grundlagen und JOIN) und XML („Aufbau eines XML-Dokumentes“ reicht) werden vorausgesetzt.
  • Lernziele: Nach den praxisorientierten Kapiteln sollen grundlegende PHP-Kenntnisse vorhanden sein. Der Leser muss nicht jede Raffinesse von PHP kennen, sondern sollte die am häufigsten gebrauchten Aspekte verständig anwenden können. Er weiß, wie er sich selbstständig weiterführende Informationen beschaffen und auf häufig auftretende Fehlermeldungen reagieren kann, verwendet Best Practices und hält sich an einen Coding Standard (vorzugsweise PEAR). Er weiß über mögliche Angriffsvektoren Bescheid und ergreift Gegenmaßnahmen.
  • Buchpatenschaft/Ansprechperson: N.n.
  • Sind Co-Autoren gegenwärtig erwünscht? Wiki-Prinzip: Alle können sich beteiligen. Sobald die Inhaltsangaben der einzelnen Kapitel (auf den Diskussionsseiten) feststehen, kann auch nichtlinear gearbeitet werden.
  • Richtlinien für Co-Autoren:
    • Anrede: Du
    • Rechtschreibung: Neu
    • Nicht-PHP-Elemente (XHTML, Design, Bilder, Beispieldaten) des Beispielprojektes werden zum Download angeboten, da hier nicht HTML erlernt werden soll
  • Projektumfang und Abgrenzung zu anderen Wikibooks: Vorgeschalteter Abschnitt zu Websiteentwicklung: PHP im Tutorial-Stil.
  • Themenbeschreibung: Grundlagen der PHP-Programmierung, erklärt anhand eines Beispielprojekts (dynamische Website mit Benutzerinteraktion).
  • Aufbau des Buches: Es gibt zwei Modultypen: Kapitel und Exkurse.
    • Kapitel sind das Herzstück des Tutorials. Sie behandeln jeweils einen anderen Aspekt von PHP, z.B. Variablen, Funktionen oder Kontrollstrukturen. Sie unterteilen sich wiederum in Einführung, Beispiele, Anwendung und Übungen:
      • Einführung: Was ist das und wozu braucht man es?
      • Beispiele: Abstrakte Beispiele, um die Teilaspekte zu beleuchten. Beim Array etwa numerische, assoziative und multidimensionale Arrays.
      • Anwendung: Anwendung des Gelernten innerhalb des Beispielprojektes. Im Kapitel include z.B. das Auslagern des Header und Footer der Website.
      • Übungen: Aufgaben, um unter Anwendung des Gelernten das Beispielprojekt um weitere Funktionen zu erweitern. Ist die Übung mit einem Symbol (Lupe?) gekennzeichnet, ist u.U. das Wikibook oder die PHP-Dokumentation nach seltener gebrauchten Schreibweisen/Parametern/Funktionen zu durchsuchen.
    • Exkurse führen Besonderheiten von PHP aus, z.B. Sprachkonstrukte, PHPDoc-Kommentare oder die Schwache Typisierung.
  • Gliederung:

Einleitung[Bearbeiten]

Einführung in das Beispielszenario[Bearbeiten]

Eine bestehende Website, die Bücher aus Wikibooks bespricht, soll um interaktive Elemente erweitert werden. Dazu soll

  • im ersten Schritt Code und Design voneinander getrennt,
  • auf der Startseite ein zufälliges Buch angezeigt,
  • ein Kommentarsystem mit Captcha implementiert,
  • die Möglichkeit zum Login und Schreiben von eigenen Reviews gegeben
  • und die Wikibooks-API verwendet werden.

Was ist PHP?[Bearbeiten]

  • Skriptsprache, serverseitige Verarbeitung
  • Was PHP nicht ist

Erste Schritte[Bearbeiten]

  • Einrichtung von XAMPP / LAMPP als einfachste Möglichkeit der Installation
  • echo 'Hello World';

Kommentare[Bearbeiten]

  • Einzeilige und mehrzeilige Kommentare
  • Exkurs: PHPDoc-Kommentare

Funktionen I[Bearbeiten]

  • Aufrufen von PHP-eigenen Funktionen
  • Parameter
  • Praxis: Anzeigen von Datum und Uhrzeit

(Skalare) Variablen[Bearbeiten]

Was sind Variablen?[Bearbeiten]

  • Variablen als Container
  • Typen von Variablen
  • var_dump()
  • Exkurs: Typisierung und Typenumwandlung in PHP

Strings[Bearbeiten]

  • Unterschied einfache und doppelte Anführungszeichen
  • Stringfunktionen
  • Exkurs: Heredoc/Nowdoc

Operatoren: . - + * /[Bearbeiten]

  • Automatisches Casting
  • Exkurs: Vollständige Operatorenübersicht

Die Verwendung der PHP-Dokumentation[Bearbeiten]

  • Funktionen nachschlagen
  • Methodensignatur verstehen
  • Übung: Zufallszahlen ausgeben

include und require[Bearbeiten]

  • Code aufteilen

eigene Funktionen definieren[Bearbeiten]

Funktionen definieren[Bearbeiten]

  • Namenskonventionen
  • Gültigkeitsbereich
  • Praxis: Funktion für das zufällige einbinden einer Seite

Parameter und Rückgabe[Bearbeiten]

  • Parameter definieren
  • Standardwerte festlegen
  • return
  • Exkurs: Funktionen überladen

Arrays[Bearbeiten]

Einführung in Arrays[Bearbeiten]

  • Nutzen
  • Numerische und assoziative Arrays
  • mehrdimensionale Arrays

foreach[Bearbeiten]

  • Iterieren ohne und mit Schlüssel

Arrayfunktionen[Bearbeiten]

  • Sortieren
  • explode/implode

Benutzereingaben[Bearbeiten]

Möglichkeiten der Benutzereingabe[Bearbeiten]

  • GET, POST und COOKIE
  • Weitere Benutzerinhalte: User-Agent, Referrer...

Sicherheit[Bearbeiten]

  • Grundregel: Niemals Benutzereingaben trauen
  • Name sagt nichts über die wahre Herkunft der Daten aus
  • Clientseitige (Formulare/Javascript) Einschränkungen: Nutzlos und benutzerunfreundlich
  • Cross-Site-Scripting (XSS)

Beispielanwendungen[Bearbeiten]

  • Einfache Formularverarbeitung
  • Übung: Taschenrechner

Kontrollstrukturen: Bedingungen[Bearbeiten]

if/elseif/else[Bearbeiten]

  • Boolsche Operatoren und Logik
  • Exkurs: Kurzschreibweise von Kontrollstrukturen

switch[Bearbeiten]

  • Praxis: Front-Controller, erste Lösungsmöglichkeit mit case
  • Praxis: Bessere Lösung mit if(isset($pages[$pagename]))

Fehlerbehandlung[Bearbeiten]

Konstanten[Bearbeiten]

  • hier für Debug-Level

Fehler auslösen und reagieren[Bearbeiten]

  • trigger_error und set_error_handler

Logger und Debugger[Bearbeiten]

  • Mit dem Dateisystem arbeiten

Fehler beheben[Bearbeiten]

  • Fehlermeldung verstehen
  • Typische Fehler: Parse Error, "headers already sent"

Mit der Datenbank arbeiten[Bearbeiten]

Verbindung herstellen[Bearbeiten]

Sicherheit[Bearbeiten]

Informationen aufbereiten[Bearbeiten]

  • while-Schleife

Praxis: Benutzerauthentifizierung[Bearbeiten]