Jörg Krause PHP 4 Grundlagen und Profiwissen Webserver-Programmierung unter Windows und Linux 2., überarbeitete Auflage HANSER
f У Inhaltsverzeichnis Vorwort zur zweiten Auflage 5 Schnellübersicht Kapitel 7 Inhaltsverzeichnis 9 Teil I - Einführung und Grundlagen 21 1 Einführung 23 1.1 Was ist PHP? 25 1.2 Zielgruppe 27 1.3 Wie dieses Buch zu lesen ist 28 1.3.1 Aufteilung 28 1.3.2 Kapitelübersicht 29 1.3.3 kons und Symbole 29 1.3.4 Schreibweisen und Satz 30 1.4 Die Buch-CD und Website 32 1.4.1 Allgemeines 32 1.4.2 Quellen im Internet 34 1.5 Dynamische Webseiten 36 1.6 Linux oder Windows? 37 1.7 Was ist Open Source? 42 1.8 Tipps zum sauberen Programmieren 43 2 Vorbereitung und Installation 45 2.1 Netzwerkgrundlagen 47 2.1.1 Rückblick 47 2.1.2 Ausblick 48 2.1.3 Grundbegriffe 49 2.1.4 Die Internet-Protokolle und ihr Ursprung 53
10 Inhaltsverzeichnis 2.1.5 Die Organisationen ICANN und IANA 53 2.1.6 Das ISO/OSI-Modell und die Internet-Protokolle 54 2.1.7 Request For Comments (RFC) 57 2.1.8 Internetprotokolle im Detail 59 2.2 Höhere Netzwerkprotokolle 72 2.2.1 HTTP 72 2.2.2 File Transfer Protocol (FTP) 77 2.2.3 Protokolle für E-Mail-Verkehr 84 2.2.4 Grundlagen der E-Mail-Programmierung 89 2.2.5 Network News Transfer Protocol (NNTP) 104 2.3 Vorbereitung der Installation 106 2.3.1 Beschaffung der Kompontenen 106 2.4 Installation unter Windows NT/2000 107 2.4.1 WAMP 107 2.4.2 WIMP HO 2.4.3 WXMP 113 2.5 Installation unter Linux 114 2.5.1 Vorhandenes System nutzen 114 2.6 PHP konfigurieren 119 2.6.1 DieDateiphp.ini 119 2.7 Sicherheit 135 2.7.1 Sicherheitsprobleme 135 2.7.2 Angriffsszenarien 136 2.8 PHP im Webspace 137 2.8.1 Vorgegebene Daten 138 2.8.2 Überprüfen der Konfiguration 139 3 Erste Schritte mit PHP 145 3.1 Aufbau der Skripte 147 3.1.1 Wo wird programmiert? 147 3.1.2 PHP und HTML 147 3.1.3 Dateien einschließen 150 3.1.4 PHP und JavaScript 151 3.2 Eine kompakte Einführung in PHP 151 3.2.1 Ausgabe von Daten an den Browser 152
Inhaltsverzeichnis 11 3.2.2 Kommentare 154 3.2.3 Variablen 157 3.2.4 Datentypen 161 3.2.5 Konstanten 168 3.2.6 Operatoren 170 3.2.7 Arrays 173 3.2.8 Zeichenkettenverarbeitung 189 3.2.9 Formatierfunktionen 201 3.2.10 Mathematische Funktionen 204 3.2.11 Zeit-und Datumsfunktionen 207 3.2.12 Reguläre Ausdrücke 217 3.2.13 Webspezifische Funktionen 228 3.3 Programmieren mit PHP 230 3.3.1 Blöcke und Strukturen 230 3.3.2 Bedingungen 231 3.3.3 Schleifen 238 3.3.4 Benutzerdefinierte Funktionen 245 3.4 Objektorientierte Programmierung 254 3.4.1 Einführung 254 3.4.2 Definition einer Klasse 256 3.4.3 Erweiterte Techniken für Objekte 258 3.4.4 Spezielle Funktionen 259 3.4.5 Praktischer Umgang mit Klassen 264 3.4.6 COM-Objekte 268 3.5 Fehlerbehandlung 271 3.5.1 Abbruchsteuerung 271 3.5.2 Das Fehlerkonzept in PHP 272 3.5.3 Umgang mit Laufzeitfehlern 273 3.5.4 Benutzerdefiniertes Fehlermanagement 274 3.5.5 Fehler vermeiden 278 3.5.6 Hilfe bei der Fehlersuche 285 3.5.7 Debugging-Tipps 286 3.6 Hilfsfunktionen 294 4 Interaktive Webseiten 299 4.1 Formulare auswerten 301
12 Inhaltsverzeichnis 4.1.1 GET und POST 301 4.1.2 Daten aus einem Formular ermitteln 303 4.1.3 Formularelemente auf Existenz testen 307 4.1.4 Formulare und JavaScript 308 4.1.5 Komplexe Formulare 314 4.2 Daten per URL weiterreichen 318 4.2.1 Wie werden Daten weitergereicht? 318 4.2.2 Probleme 320 4.3 Cookies 324 4.3.1 Einführung in Cookies 324 4.3.2 Cookies in PHP 329 4.3.3 Cookies und JavaScript 333 4.4 Verbindungssteuerung 333 4.4.1 Funktionsübersicht 333 4.4.2 Einführung 334 4.4.3 Ausführungssteuerung 336 4.5 Sessionverwaltung 336 4.5.1 Einführung in die Sessionverwaltung 336 4.5.2 Sessions mit versteckten Feldern 338 4.5.3 Sessions mit URI 340 4.5.4 Sessions mit Cookies 340 4.5.5 Textdateien und Datenbanken 342 4.5.6 Sicherung der Client-Techniken 342 4.5.7 PHP-Sessionfunktionen 345 4.6 Zugriff auf das Dateisystem 350 4.6.1 Einführung 350 4.6.2 Dateien lesen und schreiben 356 4.6.3 Dateienoperationen 365 4.6.4 Umgang mit Verzeichnissen 367 4.6.5 Dateiupload 372 4.7 Verbindungen zu Servern im Internet 378 4.7.1 Die Umgebungsvariablen des Webservers 379 4.7.2 HTTP-und FTP-Verbindungen 381 4.7.3 CURL-Funktionen 386 4.7.4 FTP-Funktionen 393
Inhaltsverzeichnis 13 4.8 Sicherheit 400 4.8.1 Warum absichern? 400 4.8.2 Grundlagen der Authentifizierung 401 4.8.3 Seiten mit PHP schützen 406 4.8.4 Sicherheitsmethoden der Webserver 409 4.9 Bilderzeugung 411 4.9.1 Grundlegende Informationen 411 4.9.2 Prinzipielle Arbeitsweise 413 4.9.3 Praktischer Umgang mit Bildfunktionen 420 5 Praxis I - Lösungen für den Alltag 423 5.1 Lösung I: Mathematische Funktionen 425 5.1.1 Logarithmus mit unterschiedlichen Basen 425 5.1.2 Fakultät 425 5.1.3 Größter gemeinsamer Teiler 426 5.1.4 Finanzmathematische Funktionen 426 5.2 Lösung II: Dateioperationen 431 5.2.1 Ersetzen in Dateien 431 5.2.2 Umgang mit Verzeichnissen 432 5.2.3 Universeller Dateiupload 433 5.3 Lösung III: Counter 439 5.3.1 Textbasierter Counter 439 5.3.2 Bildbasierter Counter 440 5.4 Lösung IV: E-Mail-Abruf 443 5.4.1 Problemstellung 443 5.4.2 Code und Erläuterungen 444 5.5 Lösung V: Skripte für die Website 448 5.5.1 Minigästebuch 448 5.5.2 Bilderverwaltung 449 5.5.3 Bilderalbum mit Upload-Funktionen 450 Teil II - Datenbankprogrammierung 453 6 Grundlagen der Datenbanktechnik 455 6.1 Installation von MySQL 457 6.1.1 Installation unter Windows 457 6.1.2 Der MySQL-Monitor 458
14 Inhaltsverzeichnis 6.2 Standardwerkzeuge für Windows 459 6.2.1 winmysqladmin 460 6.2.2 MySQLManager 461 6.3 Der MySQL-Dialekt 463 6.3.1 MySQL versus Standard-SQL 463 6.3.2 Erweiterungen gegenüber ANSI SQL92 463 6.3.3 Fehlende Funktionen 465 6.3.4 Ausblick auf MySQL 4 465 6.3.5 Hinweise für die Portierbarkeit 466 6.3.6 Technische Daten 467 6.4 Einführung in SQL 468 6.4.1 Grundsätzliche Konzepte 468 6.4.2 Theorie der SQL-Sprache 474 6.4.3 Literale 475 6.4.4 Datentypen 478 6.4.5 Datenbanken und Tabellen erzeugen 482 6.4.6 Mit den Daten arbeiten 487 6.4.7 Auswahlbedingungen für Abfragen 491 6.4.8 Operatoren und Funktionen 497 6.4.9 Erweiterte SQL-Programmierung 507 6.5 MySQL-Sicherheit 514 6.5.1 Einführung 514 6.5.2 Die Usertabellen in MySQL 517 6.6 ODBC 518 6.6.1 Einführung in ODBC 518 6.6.2 ODBC unter Windows einrichten 521 6.6.3 Datenbankzugriff mit Access 524 6.6.4 MySQL und ODBC 527 6.6.5 ODBC-Funktionen 528 7 Datenbankprogrammierung 529 7.1 MySQL-Funktionen 531 7.1.1 Funktionsübersicht 531 7.1.2 Erste Schritte mit MySQL und PHP 533 7.1.3 Wichtige Funktionen 535 7.1.4 Persistente Verbindungen 544
Inhaltsverzeichnis 15 7.2 Umgang mit Datenbanken 545 7.2.1 Datenbankcursor 545 7.2.2 Eigenschaften der Ergebnisliste 546 7.2.3 Die Ergebnisliste auslesen 546 7.2.4 Informationen über die Datenbank 548 7.3 Ein Datenbankprojekt entsteht 552 7.3.1 Vorbereitung 553 7.3.2 Die Stammfunktionen 558 7.3.3 Realisierung 565 7.4 Zugriff auf ODBC-Quellen 570 7.4.1 Grundlagen 570 7.4.2 Beispielapplikation 573 7.5 MySQL über Access bedienen 582 7.5.1 Einrichtung 582 7.5.2 Nutzung 583 7.6 Administration mit phpmyadmin 586 7.6.1 Einführimg 586 7.6.2 Funktionsübersicht 590 8 Praxis II - Datenbanklösungen 597 8.1 Kleine Dienstprogramme 599 8.1.1 Übersicht 599 8.1.2 Tabellen anzeigen 599 8.1.3 Datumsbehandlung 601 8.1.4 Eine SELECT-Liste aus MySQL erstellen 603 8.1.5 Kreditkartencheck 604 8.1.6 Generierung einer WHERE-Bedingung 607 8.2 Gästebuch 609 8.2.1 Datenbankstruktur 609 8.2.2 Der Code des Gästebuches 610 8.2.3 Beschreibung 612 8.3 Authentifizierung mit Datenbank 612 8.3.1 Datenbankstruktur 612 8.3.2 Funktionsweise und Code 613 8.4 Umfrage 614 8.4.1 Funktionsweise 614
16 Inhaltsverzeichnis 8.4.2 Datenbankstruktur 614 8.4.3 Der Code der Umfrage 615 8.4.4 Erläuterung der Arbeitsweise 621 Teil III - PHP professionell programmieren 627 9 Fortgeschrittene Programmierung 629 9.1 Netzwerkprogrammierung 631 9.1.1 Netzwerkfunktionen 631 9.2 E-Mail-Programmierung 635 9.2.1 POP3 und SMTP programmieren 636 9.2.2 E-Mail unter Windows NT/2000 646 9.2.3 E-Mail aus Skripten versenden 649 9.2.4 NNTP - für Newsserver programmieren 650 9.3 Portable Document Format - PDF 654 9.3.1 Grundlagen PDF 655 9.3.2 Einführung in die pdflib 655 9.3.3 PDF-Funktionen praktisch verwenden 660 9.4 Ausgabesteuerung 666 9.4.1 Grundlagen der Pufferung 666 9.4.2 Umgang mit den Pufferfunktionen 666 9.5 Reguläre Ausdrücke 668 9.5.1 Einführung 669 9.5.2 Unterschiede zu Perl 669 9.5.3 Übersicht 671 9.5.4 Die Suchmuster im Detail 671 9.5.5 Die PCRE-Funktionen im Detail 692 9.5.6 Ersetzungen mit regulären Ausdrücken 694 9.6 Extensible Markup Language - XML 697 9.6.1 Was ist XML? 697 9.6.2 Auswahl des XML-Parsers 700 9.6.3 Die Funktionsdeklarationen 701 9.6.4 Funktionsübersicht XML-Funktionen 703 9.6.5 XML-Anwendungen in der Praxis 704 9.6.6 Das XML-Projekt 711 9.7 Wireless Markup Language - WML 724
Inhaltsverzeichnis 17 9.7.1 Grundlagen WML 724 9.7.2 Praxis: WAP-Telefondatenbank 726 9.7.3 Praktischer Einsatz von WAP/WML 732 9.8 Web Distributed Data Exchange - WDDX 733 9.8.1 WDDX im Detail 733 9.8.2 WDDX-Elemente 737 9.8.3 WDDX-Funktionen in PHP 741 10 Zusatzprogramme 747 10.1 Editoren 749 10.1.1 Editoren für Windows 749 10.1.2 Editoren für Unix 750 10.2 ZendIDE 750 10.2.1 Vorbereitung 751 10.2.2 Installation 751 10.2.3 Grundfunktionen 753 10.2.4 Die Fenster der IDE 756 10.2.5 Verwendung der Debuggerfunktionen 758 10.3 Zend-Hilfsprogramme 762 10.3.1 Zend Optimizer 762 10.3.2 Zend Cache 764 10.3.3 Zend Encoder Unlimited 764 10.3.4 Zend Launch Pad 765 11 Praxis III - Das PHP-Projekt 767 11.1 phptemple - Die Idee 769 11.1.1 Templates: Trennung von Code und Design 769 11.1.2 Templatesysteme für PHP 770 11.1.3 Die Idee: phptemple 772 11.2 Definition des Leistungsumfanges 772 11.2.1 Grundsätzlicher Aufbau 773 11.2.2 Variablen in Vorlagen 775 11.2.3 Das Sitemanagement 777 11.2.4 Das Formularmanagement 777 11.2.5 Zugriff auf Daten aus Datenbanken 785 11.2.6 Steuerung in der Vorlage 792 11.2.7 Zugriff auf PHP 794
18 Inhaltsverzeichnis 11.2.8 HTML-spezifische Funktionen 795 11.3 Installation und Administration 800 11.3.1 Aufbau der Konfigurationsdatei 801 11.3.2 Administration 802 11.4 Grundlegende Hinweise zum Prinzip 804 11.4.1 Prinzip der Linkauflösung 804 11.4.2 Einschränkungen 805 11.5 Anwendungsbeispiele 805 11.5.1 Eine Navigation aufbauen 805 11.5.2 Grafiken dynamisch erzeugen 806 11.6 Realisierung: So funktioniert es! 808 11.6.1 Startdatei 808 11.6.2 Sessionverwaltung 810 11.6.3 Das Kernstück: der Parser 816 11.6.4 Formularsteuerung 835 11.6.5 Datenbankzugriff 839 11.6.6 Installation und Administration 840 11.7 phptemple-projekte im Web 840 11.7.1 Mauerfotos 841 11.7.2 Weitere Projekte 844 11.8 phptemple für professionellen Einsatz 845 11.8.1 Lizenzrechtliche Fragen 845 11.8.2 Programmtechnische Modifikationen 845 11.8.3 Weitere Eigenschaften 846 11.8.4 Kontaktadresse 846
Inhaltsverzeichnis 19 Teil IV - Anhänge und Referenz 847 A Glossar 849 В Kurzreferenz 883 B.l Vorbemerkungen 883 B.2 Alphabetische Übersicht 884 B.3 Befehlsreferenz 907 B.4 Funktionsreferenz 912 B.5 Datenbankfunktionen 1032 B.6 Systemnahe Funktionen 1068 B.7 MySQL-Referenz 1080 С Server-Variablen und Statuscodes 1093 C.l Server-Variablen 1093 C.2 HTTP-Statuscodes 1097 C.3 Die Codes im Detail 1098 D Index 1105 D.l Erläuterungen zum Index 1105 D.2 Globaler Index 1106 E An den Autor 1125