9
Philipp Rieber PHP 5 und MySQL 5 Das Kochbuch Rezepte, Lösungen, Best Practices mitp

PHP 5 und MySQL 5 Das Kochbuch - GBV

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PHP 5 und MySQL 5 Das Kochbuch - GBV

Philipp Rieber

PHP 5 und MySQL 5 Das Kochbuch

Rezepte, Lösungen, Best Practices

mitp

Page 2: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzeichnis

Einleitung 13

Teil I PHP 21

i Datentypen, Variablen, Konstanten und Funktionen 23 I.I Datentyp feststellen 23 1.2 Datentyp ändern 26 1.3 Informationen zu Variablen ausgeben 28 1.4 Mehrere Variablen mit dem gleichen Wert initialisieren 31 1.5 Mehrere Variablen auf einmal löschen 31 1.6 Variablen vertauschen 32 1.7 Dynamische Variablen 33 1.8 Konstanten auf Existenz prüfen 35 1.9 Dynamische Konstanten 36 1.10 »Magische« Konstanten 37 1.11 Dynamische Funktionen und Methoden 39 1.12 Variable Parameteranzahl bei Funktionen und Methoden 41 1.13 Mehrere Rückgabewerte in Funktionen und Methoden

realisieren 41 1.14 Übersicht über definierte Sprachelemente verschaffen 43

2 Sprachfeatures 45 2.1 Identität von Variablen prüfen 45 2.2 Parameterdatentyp in Funktionen und Methoden

vorbestimmen: Type Hints 47 2.3 Wert einer lokalen Funktionsvariablen beibehalten 49 2.4 Kompakte for-Schleifen 50 2.5 if-else-Anweisungen oder tiefe if-Verschachtelungen vermeiden.... 51 2.6 Höher liegende Schleife oder switch-Anweisung abbrechen 55 2.7 Kommandozeilenbefehle ausfuhren 57 2.8 Skriptoptimierung mit bitweisem Arbeiten 59 2.9 Strings inkrementieren 64 2.10 Zeichenkette als PHP-Code ausführen 65

Page 3: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzeichnis

3 Strings 67 3.1 Übersichtlichen XHTML-Code generieren 67 3.2 Lange Strings übersichtlich gestalten: Heredoc-Syntax 68 3.3 Zeichenweiser Zugriff auf Strings 70 3.4 Strings zeichenweise in Arrays überfuhren. 71 3.5 Aufzählung generieren 71 3.6 Eindeutige IDs erzeugen 72 3.7 Passwörter erzeugen 73 3.8 printf() mit Argumententausch und mehrfacher

Argumentenverwendung 75 3.9 Benutzereingaben formatieren (bbCode) 77

4 Zahlen 81 4.1 Zufallszahlen erzeugen 81 4.2 Mathematische Konstanten 82 4.3 Zwischen Zahlensystemen konvertieren 83 4.4 Formatierte Zahlen ausgeben 85 4.5 Gerade und ungerade Zahlen unterscheiden 88 4.6 Zahlenungenauigkeiten begegnen 89

5 Arrays 91 5.1 Arrays vereinigen 91 5.2 Nicht-nullbasiertes Array erstellen 92 5.3 Array mit ganzen Zahlen oder mit Buchstaben erzeugen 92 5.4 Arrays mischen 93 5.5 Zufällige Arrayschlüssel oder -werte auswählen 94 5.6 Arraywerte direkt in foreach-Schleifen bearbeiten 95 5.7 Funktion rekursiv auf alle Elemente eines Arrays anwenden 96

6 Objektorientierte Programmierung 99 6.1 Dynamische Objekte 99 6.2 Dereferenzierung für Rückgabeobjekte 99 6.3 Klassendateien organisieren und geschickt einbinden 100 6.4 Callback-Methode statt Callback-Funktion angeben 103 6.5 Objekte serialisieren und deserialisieren 104 6.6 Objekte iterieren 108 6.7 Getter- und Setter-Methoden zusammenfassen 111

Page 4: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzeichnis

6.8 Design Pattern: Factory 114 6.9 Design Pattern: Singleton 117 6.10 Design Pattern: Observer 118 6.11 Design Pattern: Strategy 120

7 Datum und Zeit. 123 7.1 Datums-String auf Gültigkeit prüfen 123 7.2 Datum auf Vergangenheit/Zukunft prüfen 124 7.3 Osterabhängige Feiertage bestimmen 126 7.4 Anzahl eines Wochentages zwischen zwei Daten bestimmen 128

8 Dateien und Verzeichnisse 131 8.1 Metainformationen über Dateien gewinnen 131 8.2 Dateiinhalte lesen 133 8.3 Dateiinhalte schreiben 137 8.4 Mit beliebiger Zeile einer Datei arbeiten 140 8.5 Dateien sperren 141 8.6 Temporäre Dateien 143 8.7 Verzeichnisse iterieren 144 8.8 Datei- und Verzeichnisoperationen 146 8.9 PHP-Quellcode farbig darstellen 147 8.10 Konfigurationsdateien im »php.ini-Stil« parsen 149 8.11 CSV-Dateien einlesen 151

9 PHP mit XHTML, CSS und JavaScript 153 9.1 Meta-Tags auslesen 153 9.2 Dynamisches CSS 154 9.3 Dynamisches JavaScript 157 9.4 Ausgabepufferung (Output Buffering) 159 9.5 XHTML-Tags aus Strings entfernen 161 9.6 Umgang mit XHTML-Entitäten 162 9.7 Eigene Templates 164

10 PHP und Formulare 171 10.1 Auswahlfelder mit Mehrfachauswahl verarbeiten 171 10.2 Dateiuploads 172

Page 5: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzeichnis

ii HTTP, E-Mail und Cookies 179 II.I HTTP-Header sichtbar machen und manipulieren 179 II.2 Authentifizierung mit dem HTTP-Header WWW-Authenticate.... 184 11.3 Downloads starten 190 11.4 E-Mails unter Windows versenden 192 11.5 E-Mails professionell versenden: Der PHPMailer 196 11.6 Mehrere Werte in einem Cookie speichern 201

12 Grafik und Bildbearbeitung 203 12.1 Unterstützte Bildformate ermitteln 203 12.2 Dynamische Schmuck-Überschriften 205 12.3 Grafiken proportional skalieren 215 12.4 Rahmen um Grafiken zeichnen 218 12.5 Grafischer Besucherzähler 220 12.6 Grafische CAPTCHAs erzeugen 224

13 Sicherheit 231 13.1 GET-Parameter validieren 231 13.2 Whitelists 234 13.3 Die Konfigurationsdirektive register_globals 237 13.4 Benutzereingaben für Datenbankabfragen maskieren 239 13.5 Magic Quotes 243 13.6 Automatische Formularvervollständigung verhindern 244 13.7 Sicherheitscheck 246

14 Konfiguration 249 14.1 PHP konfigurieren 249 14.2 Wichtige PHP-Direktiven 257 14.3 PEAR auf einem Shared Host installieren 281

Teil II MySQL 287

15 MySQL auf der Kommandozeile und phpMyAdmin 289 15.1 Der Kommandozeilen-Client mysql 289 15.2 Parameter des mysql-Clients 292 15.3 MySQL-Konfigurationsdateien 300 15.4 Optionen bei der Verwendung des mysql-Clients 304

Page 6: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzei

15.5 Der MySQL-Backup-Client mysqldump 309

15.6 phpMyAdmin: Authentifizierungsmethoden verwenden 317

15.7 phpMyAdmin: Mehrere MySQL-Server verwalten 320

15.8 phpMyAdmin: Die mbstring-Erweiterung 321

16 Die Benutzerverwaltung von MySQL einsetzen 323

16.1 Ausgangssituation in einer frischen MySQL-Installation 323

16.2 Überflüssige Benutzerkonten löschen 327

16.3 Benutzer anlegen 329

16.4 Benutzer umbenennen 333

16.5 Benutzer klonen 334

16.6 Unterstützung für altes Authentifizierungs-Protokoll 336

16.7 Vergessenes root-Passwort 337

16.8 Versehentlich entzogene Rechte wiederherstellen 339

16.9 Benutzer auf anderen MySQL-Server kopieren 340

17 Datenstrukturen, Datenspeicherung und Indizes 343

17.1 Richtigen Tabellentyp wählen oder Tabellentyp konvertieren 343

17.2 Richtige Sortierordnung (Kollation) für Textspalten wählen 347 17.3 Tabellen leeren 350

17.4 Zufällig ausgewählte Datensätze sortieren 351

17.5 Namen von zwei Tabellen vertauschen 353

17.6 Tabelle in andere Datenbank verschieben 354

17.7 Tabelle kopieren 354

17.8 Geschwindigkeitsvorteil von Indizes überprüfen 355

17.9 Fremdschlüssel-Bedingungen festlegen 356

17.10 Volltextsuche 359

17.11 Zwei Spaltenwerte vertauschen 369

17.12 Binärdaten speichern 372

17.13 Daten aus BLOB-Spalten verarbeiten 373

17.14 Metainformationen des MySQL-Servers gewinnen 376

18 Daten abfragen 387

18.1 Tabellen mit sich selbst vergleichen (Self-Joins) 387

18.2 Spaltenwerte nach komplexen Kriterien sortieren 389

18.3 Duplikate bei einer Datensatzzählung ausfiltern 395 18.4 NULL-Werte vergleichen 396

Page 7: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzeichnis

18.5 Gruppierte Ergebnisdatensätze einschränken. 397 18.6 Skalares Ergebnis einer Abfrage in einer anderen

Abfrage verwenden 400 18.7 Datensatzauswahl vom Spaltenwert einer anderen

Tabelle abhängig machen 402

19 Ablaufsteuerung, Funktionen, Strings und Zahlen 407 19.1 Werte als »Unbekannt« speichern und abfragen 407 19.2 Abgefragte Werte kategorisieren 409 19.3 Länge von Zeichenketten bestimmen 411 19.4 Abgefragte Werte kommasepariert darstellen 412 19.5 E-Mail-Adressen zerlegen 412 19.6 Beliebige gleichartige Zeichen am Anfang oder Ende

eines Strings entfernen 413 19.7 Zufällige Ganzzahl aus einem Intervall erzeugen 413 19.8 Byte-Angaben in lesbare Einheiten (kB, MB) umwandeln 414 19.9 Überlange Zeichenketten kürzen 416 19.10 Währungen speichern und umrechnen 417 19.11 Letzte eingefügte ID ermitteln 418 19.12 Zeichenketten verschlüsseln 420 19.13 Datensätze zählen 425 19.14 Summe und Durchschnitt von Spaltenwerten berechnen 429 19.15 Gesamt- und Durchschnittsalter an Hand von Geburtsdaten

berechnen 430 19.16 Minimum und Maximum von Spaltenwerten bestimmen 432 19.17 Wert einer Spalte ermitteln, die in einer anderen Spalte

ein Maximum aufweist 433 19.18 Viele-zu-Viele-Tabellenbeziehung auflösen und anzeigen 433

20 Datum und Zeit 437 20.1 Eigene Datumsformate 437 20.2 Spezielle Datumsbestandteile extrahieren 440 20.3 Daten mit Stringfunktionen zerlegen 441 20.4 Beliebig formatierte Daten in ISO-Daten umwandeln 443 20.5 Deutsche Wochentags- und Monatsnamen 444 20.6 Aktuelles Datum und/oder Uhrzeit herausfinden 446

Page 8: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzeichnis

20.7 Zeiträume addieren und subtrahieren 447 20.8 Datum oder Zeit extrahieren 456 20.9 Datumsangaben vergleichen 456 20.10 Datumsvergleiche mit unbekanntem Bezugsdatum 459 20.11 Aktuelle Geburtstage ermitteln 459 20.12 Differenzen von Datumsangaben oder Terminen berechnen 460 20.13 Jahreslänge bestimmen 466 20.14 Berechnung von Schaltjahren 467 20.15 Monatsersten und Monatsletzten ermitteln 468 20.16 Den folgenden Montag eines Tages berechnen 469 20.17 Besonderheiten von TIMESTAMP-Spalten 469 20.18 Letzten Änderungszeitpunkt eines Datensatzes festhalten 470 20.19 Automatische Aktualisierung einer TIMESTAMP-Spalte

verhindern . . ; . . . . . 472 20.20 Alte TIMESTAMP-Spaltenwerte in neues Format konvertieren 473

21 Fortgeschrittenes MySQL 475 21.1 Nutzen von Transaktionen 475 21.2 Tränsaktiönsfähigkeit prüfen 476 21.3 Transaktionen ausführen 478 21.4 SELECT-Kommandos speichern: Sichten (Views) 479 21.5 Routineaufgaben speichern: Gespeicherte Prozeduren

(Stored Procedures) 484 21.6 i-zu-n-Tabellenbeziehung mit gespeicherter Prozedur verwalten.... 501 21.7 Hierarchische Datenstrukturen mit gespeicherter

Prozedur darstellen 507 21.8 Routineaufgaben speichern: Gespeicherte Funktionen

(Stored Functions) 511 21.9 Daturrisoperationen mit gespeicherten Funktionen kapseln 512 21.10 Byte-Angaben mit gespeicherter Funktion in lesbare

Einheiten (kB, MB) umwandeln 513 21.11 Überlange Zeichenketten mit gespeicherter Funktion kürzen 514 21.12 SQL-Kommandos automatisch ausführen lassen: Trigger 516 21.13 Besucherzähler mit Gesamt-, Tages- und Monatsstand

mit Hilfe eines Triggers 521

11

Page 9: PHP 5 und MySQL 5 Das Kochbuch - GBV

Inhaltsverzeichnis

Teil IM PHP und MySQL 525

22 Die Erweiterung mysqli 527 22.1 mysqli-Unterstützung prüfen 527 22.2 MySQL-Verbindung herstellen, Metainformationen abrufen

und Verbindung trennen 530 22.3 Einzelne SQL-Abfragen ausführen 532 22.4 Mehrere SQL-Abfragen gleichzeitig ausführen 536 22.5 Vorbereitete Abfragen (Prepared Statements) 538 22.6 MySQL-Wrapper erstellen 542 22.7 Mit gespeicherten Prozeduren arbeiten 550 22.8 Mehrsprachige Websites 551

23 RSS-Feeds 557 23.1 Einstieg in RSS-Feeds 557 23.2 Aufbau einer RSS-Feed-Datei 559 23.3 RSS-Feed direkt mit PHP erzeugen 563 23.4 RSS-Feed indirekt mit PHP erzeugen 567

Teil IV AJAX und PHP 571

24 Einstieg in AJAX 573 24.1 AJAX-Wrapper erstellen 573 24.2 Zufallsbild mit AJAX anzeigen 582 24.3 Bildergalerie mit AJAX 586

Stichwortverzeichnis 593