Deutsche Ausgabe. Tipps & Techniken für dynamische Websites. Jack D. Herrington O REILLY. Deutsche Übersetzung von Jørgen W. Lang



Ähnliche Dokumente
TeamSpeak3 Einrichten

Informatik I Tutorial

WordPress lokal mit Xaamp installieren

Voraussetzungen und Installation

Installation/Einrichtung einer Datenbank für smalldms

Step by Step Webserver unter Windows Server von Christian Bartl

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

INSTALLATION VON INSTANTRAILS 1.7

FTP-Server einrichten mit automatischem Datenupload für

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Anleitung: Webspace-Einrichtung

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Computeria Solothurn

OP-LOG

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

1. Loggen Sie sich mit Ihrem Benutzernamen in den Hosting-Manager (Confixx) auf Ihrer entsprechenden AREA ein. Automatische Wordpress Installation

Microsoft Dynamics NAV 2013 R/2 Installationsanleitung. Inhalt: Begleitmaterial des ERP Übungsbuchs:

Nutzung der VDI Umgebung

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

! " # $ " % & Nicki Wruck worldwidewruck

Sichern der persönlichen Daten auf einem Windows Computer

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

WordPress installieren mit Webhosting

Informatik 1 Tutorial

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

Kleines Handbuch zur Fotogalerie der Pixel AG

Der einfache Weg zum CFX-Demokonto

Anleitungen zum KMG- -Konto

Programm GArtenlisten. Computerhinweise

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

SCHRITT FÜR SCHRITT ZU IHRER VERSCHLÜSSELTEN

Inhaltsverzeichnis. Vorwort... 3 Installation von XAMPP... 3 Installation von Joomla... 8 Schlusswort Copyright

Installieren von Microsoft Office Version 2.1

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Adminer: Installationsanleitung

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

Installation und Bedienung von vappx

Tipps und Tricks zu den Updates

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Installation Blockdruck WEB. Version 3.1.1

Diese Anleitung beschreibt das Vorgehen mit dem Browser Internet Explorer. Das Herunterladen des Programms funktioniert in anderen Browsern ähnlich.

Kurzeinführung Excel2App. Version 1.0.0

Tutorial -

ÖKB Steiermark Schulungsunterlagen

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -

PDF-Erzeugung mit PDFCreator (nur für Windows, installiert universellen PDF-Druckertreiber) v11/01

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Einrichtung eines -Kontos bei Mac OS X Mail Stand: 03/2011

Legen Sie nun dieses Verzeichnis mit dem Namen "joomla" hier an: C:xampphtdocs.

Lizenzen auschecken. Was ist zu tun?

Drägerware.ZMS/FLORIX Hessen

Installationsanleitungen

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Wir wünschen Ihnen viel Freude und Erfolg mit Ihrem neuen X-PRO-USB-Interface. Ihr Hacker-Team

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

SANDBOXIE konfigurieren

Anleitung. Lesezugriff auf die App CHARLY Termine unter Android Stand:

Bayerische Versorgungskammer

Workflow. Installationsanleitung

Einrichtungsanleitungen Hosted Exchange

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Installation KVV Webservices


Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Artikel Schnittstelle über CSV

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

Handbuch für Redakteure

INSTALLATION. Voraussetzungen

I. Travel Master CRM Installieren

Handbuch für Redakteure

CD einlegen (Moment warten) Die Aktion markieren, die durchgeführt werden soll. (in diesem Beispiel»Audio-CD-Wiedergabe)

Anleitung für Zugriff auf den LEM-FTP-Server

Konfiguration einer Sparkassen-Chipkarte in StarMoney

NAS 323 NAS als VPN-Server verwenden

Leichte-Sprache-Bilder

Die i-tüpfelchen: Favicons

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Demopaket FDFsolutions für Windows, Version 1.73, Voraussetzungen & Installation. (Stand )

Shellfire L2TP-IPSec Setup Windows XP

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Windows Verbindung mit WLAN BZPflege trennen Verbindung mit WLAN EDU-BZPflege automatisch erstellen... 30

System-Update Addendum

Installationsanleitung dateiagent Pro

FrogSure Installation und Konfiguration

TELIS FINANZ Login App

2. Installation unter Windows 8.1 mit Internetexplorer 11.0

Transkript:

Deutsche Ausgabe PHP HACKSTM Tipps & Techniken für dynamische Websites O REILLY Jack D. Herrington Deutsche Übersetzung von Jørgen W. Lang

TM Jack D. Herrington Deutsche Übersetzung von Jørgen W. Lang Beijing Cambridge Farnham Köln Paris Sebastopol Taipei Tokyo

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen. Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen. Kommentare und Fragen können Sie gerne an uns richten: O Reilly Verlag Balthasarstr. 81 50670 Köln Tel.: 0221/9731600 Fax: 0221/9731608 E-Mail: kommentar@oreilly.de Copyright der deutschen Ausgabe: 2006 by O Reilly Verlag GmbH & Co. KG 1. Auflage 2006 Die Originalausgabe erschien 2005 unter dem Titel PHP Hacks bei O Reilly Media, Inc. Die Darstellung eines Propeller Beanies im Zusammenhang mit dem Thema PHP ist ein Warenzeichen von O Reilly Media, Inc.»Hacks Books«und»The Hacks Series«und darauf basierende Warenzeichen und Logos sind Warenzeichen von O Reilly Media und dürfen nicht ohne schriftliche Genehmigung verwendet werden. Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar. Übersetzung und deutsche Bearbeitung: Jørgen W. Lang, Hamburg Lektorat: Alexandra Follenius, Köln Korrektorat: Sibylle Feldmann, Düsseldorf Satz: DREI-SATZ, Husby Umschlaggestaltung: Marcia Friedman, Sebastopol & Michael Oreal, Köln Produktion: Andrea Miß, Köln & Geesche Kieckbusch, Hamburg Belichtung, Druck und buchbinderische Verarbeitung: Druckerei Media-Print, Paderborn ISBN-10 3-89721-452-0 ISBN-13 978-3-89721-452-1 Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.

This book is dedicated to my wife, Lauren. You have supported me in everything I have done and said, and sometimes, in spite of it. I love you.

Inhalt Credits.................................................. XI Einleitung................................................ XV Kapitel 1. Installation und Grundlagen.......................... 1 1. PHP installieren 1 2. PEAR-Module installieren 13 Kapitel 2. Webdesign........................................ 18 3. Austauschbare Benutzeroberflächen (»Skins«) 18 4. Eine hierarchische Navigation 23 5. HTML-Kästen erstellen 26 6. Karteireiter für Ihr Web-Interface 31 7. Eigene Seitendesigns für Ihre Kunden mit XSL 35 8. Einfache HTML-Diagramme erstellen 38 9. Image-Tags mit korrekten Größenangaben 41 10. HTML-E-Mail verschicken 43 Kapitel 3. DHTML.......................................... 47 11. Interaktive Tabellenkalkulationen für Ihre Webseiten 47 12. Pop-up-Hinweise erstellen 50 13. Listen mit freier Reihenfolge per Drag-and-Drop 52 14. Dynamische HTML-Diagramme 56 15. Inhalte mit Drehpfeilen unterteilen 61 16. Digitale Notizzettel 65 17. Dynamische Navigationsmenüs 68 18. JavaScript-Code dynamisch verschleiern 71 19. Eine DHTML-basierte Binäruhr 74 VII

20. JSON zähmt Ajax 77 21. Eine Diashow mit DHTML 81 22. Vektorgrafiken mit PHP 84 23. Ein PHP-Farbwähler 87 24. Link-Graphen erzeugen 90 25. Ein interaktiver Kalender 93 26. Den Scrolling-Effekt von Google Maps nachbauen 99 Kapitel 4. Grafiken......................................... 107 27. Vorschaubilder erzeugen 107 28. Ansprechende Grafiken mit SVG erstellen 110 29. Grafiken mit Hilfe von Objekten vereinfachen 113 30. Ein Bild in mehrere Einzelbilder aufteilen 122 31. Diagramme mit PHP erstellen 126 32. Bilder überlagern 129 33. Mit PHP auf iphoto-bilder zugreifen 133 Kapitel 5. Datenbanken und XML.............................. 149 34. Bessere SQL-Schemata entwerfen 149 35. Datenbankzugriffe absichern 155 36. Dynamische Objekte für den Datenbankzugriff 157 37. Automatisches Erzeugen von CRUD-Datenbankcode 163 38. XML-Daten mit Hilfe von regulären Ausdrücken lesen 173 39. Ein Datenbankschema im XML-Format exportieren 176 40. Ein einfacher XML-basierter Abfrage-Handler für den Datenbankzugriff 179 41. SQL-Anweisungen für Datenbanken automatisch erzeugen 181 42. Code für Datenbankabfragen automatisch erzeugen 184 43. CSV-Daten nach PHP konvertieren 190 44. Daten direkt aus Webseiten auslesen (Screen Scraping) 194 45. Daten aus hochgeladenen Excel-Dateien lesen 199 46. Datenbanken mit Excel-Tabellen füttern 204 47. Microsoft Word-Dokumente durchsuchen 209 48. RTF-Dokumente dynamisch erzeugen 212 49. Excel-Tabellen dynamisch erzeugen 218 50. Eine Nachrichten-Warteschlange 223 VIII Inhalt

Kapitel 6. Applikationsdesign................................. 228 51. Modulare Schnittstellen 228 52. Unterstützung für Wiki-Text 233 53. Beliebige Objekte in Arrays umwandeln 236 54. XML auf die richtige Weise erzeugen 240 55. Doppeltes Abschicken von Formularen verhindern 242 56. Benutzerdefinierbare Berichte erstellen 247 57. Ein Login-System erstellen 249 58. Rollenbasierte Sicherheit 254 59. Auf MD5-Passwörter umstellen 263 60. Wiederverwendbare URLs mit mod_rewrite 267 61. Zufällige Werbeeinblendungen 272 62. Jetzt kaufen-buttons 277 63. Ermitteln, woher die Besucher Ihrer Site kommen 287 64. Informationen aus vcards importieren 289 65. vcard-dateien aus den Daten Ihrer Applikation erzeugen 291 66. Ein Shopping-Cart-Programm 293 Kapitel 7. Entwurfsmuster.................................... 302 67. Objekte beobachten mit dem Observer-Muster 303 68. Objekte mit dem Abstract-Factory-Muster erzeugen 306 69. Flexibles Erzeugen von Objekten mit dem Factory-Method-Entwurfsmuster 310 70. Abstrakter Konstruktionscode mit dem Builder-Muster 313 71. Das Strategy-Muster zum Trennen des Was und Wie 317 72. Zwei Module über einen Adapter verbinden 320 73. Portabler Code mit dem Bridges-Muster 324 74. Erweiterbare Verarbeitung durch Zuständigkeitsketten 327 75. Große Klassen durch Komposition aufteilen 331 76. APIs mit dem Façade-Muster vereinfachen 335 77. Konstante Objekte mit dem Singleton-Muster 339 78. Datenmanipulationen mit dem Visitor-Muster vereinfachen 342 Kapitel 8. Tests............................................ 348 79. Modultests zum Überprüfen Ihres Codes 348 80. Erstellung von Modultests automatisieren 350 81. Tote Links finden 355 Inhalt IX

82. Die Applikation mit simulierten Benutzern testen 357 83. Applikationen mit Robots testen 361 84. Websites mit einem Spider-Programm überprüfen 366 85. Automatisches Erzeugen von Dokumentationen 371 Kapitel 9. Alternative Benutzerschnittstellen...................... 375 86. Eigene Landkarten mit MapServer 375 87. Grafische Benutzerschnittstellen mit GTk 386 88. RSS-Feeds mit Jabber an Instant-Messaging-Programme schicken 390 89. Chatten Sie über IRC mit Ihrer Webapplikation 397 90. RSS-Feeds auf Ihrer PSP lesen 400 91. Google mit einem Link-Graphen durchsuchen 404 92. Eine neue Schnittstelle für Amazon.com 410 93. SMS-Nachrichten mit einem IM-Client verschicken 414 94. Flash-Filme nach Bedarf erstellen 417 Kapitel 10. Unterhaltsames................................... 428 95. Eigene Google Maps 428 96. Dynamische Playlists 434 97. Ein Upload-/Download-Bereich für Mediendateien 437 98. Den Status von Netzwerkspielen mit PHP überprüfen 441 99. Wikipedia auf Ihrer PSP 444 100. Ein Wettervergleich 453 Index.................................................... 457 X Inhalt

0 Credits Über den Autor Jack D. Herrington ist ein Programmierer, der bereits im Alter von 13 Jahren Applikationen entwickelte. Das liegt mittlerweile fast 25 Jahre zurück. Im Laufe der Zeit hat er in jeder großen Programmiersprache und für fast jede Umgebung Software entwickelt. Er ist Autor von drei Büchern: Code Generation in Action (Manning, 2002) behandelt die Verwendung von Programmen zum automatischen Erzeugen von Programmiercode. Viele Elemente aus diesem Buch finden sich im Datenbank-Teil dieses Buchs wieder. In Podcasting Hacks (O Reilly, 2005) ermutigt er seine Leser, mit Hilfe von Podcasts ein Bürgermedium zu schaffen. Sein drittes Buch, PHP Hacks, halten Sie gerade in Händen. Jack ist Autor von mehr als 30 Artikeln, die sich mit PHP, Codeerzeugung, Digitalfotografie und anderem befassen. In einem seiner Artikel für das O Reilly Network hatte Jack den Mut zu behaupten, PHP sei für Firmenanwendungen genauso gut geeignet wie Java oder.net. Die darauf folgende Kommentarschlacht dehnte sich bis auf die Slashdot-Website aus und ist, wenn auch in kleinerem Ausmaß, bis heute noch nicht zu Ende. Jack lebt mit seiner Frau Lori und seiner Tochter Megan in der Gegend um die San Francisco Bay. Er arbeitet für ein Startup-Unternehmen mit dem Namen Leverage Software, das sich auf Netzwerkprogramme spezialisiert hat. Davor arbeitete er einige Zeit für Macromedia. Er ist begeisterter Wanderer, Golfspieler, Hobbykoch, Tischler und (manchmal sogar) Origami-Künstler, sofern er nicht gerade mit dem Hacken von PHP beschäftigt ist. XI

Gastautoren Die folgenden Personen haben Hacks zu diesem Buch beigetragen: Ross Shannon Ross Shannon ist ein Student aus Dublin, Irland, der gerade seinen Doktor der Informatik am University College Dublin macht. Ross ist Teilzeit-Webdesigner, der großes Interesse an Webtechnologien hat. Er ist Webmaster für die Website HTMLSource, eine Anleitung für das Webdesign (http://www.yourhtmlsource.com/). Matthew Terenzio Matt Terenzio besitzt mehr als zehn Jahre Erfahrung im Technologieund Medienbereich. Er hat einen Master-Abschluss in Internet Engineering und war der Hauptarchitekt von Projekten unterschiedlicher Organisationen. Hierzu gehört beispielsweise das Berkman Center for Internet and Society an der Harvard Law School. Fast fünf Jahre lang war er als Senior Web Producer für GreenwichTime. com und StamfordAdvocate.com tätig. Außerdem hat er bei einer Reihe hochkarätiger Nachrichten-Websites mitgearbeitet, so z.b. bei NYNewsday.com und OrlandoSentinel.com. Vor Kurzem hat Matt das Unternehmen BuddyBuilder LLC mitgegründet, das eine Reihe von Web 2.0-Diensten gestartet hat, darunter Buddy- Builder.com, SkinnyFarm.com und Newsmarks.com. Michael Mulligan Michael Mulligan (mtm26@cornell.edu) ist ein Softwareentwickler, der seinen Informatik-Master 2005 am College of Engineering der Cornell University gemacht hat. Er hat seither in einer Vielzahl verschiedener Firmen gearbeitet, in Kleinunternehmen, aber auch als Softwareentwickler bei Apple. Seine vornehmlichen Forschungsinteressen liegen im Bereich der Lern- und Sehfähigkeit von Maschinen. Im Sommer 2005 heiratete Mike seine wunderschöne Frau Dhipthi Devabose und ließ sich in Florida nieder. Er arbeitet jetzt in Vollzeit als Softwareentwickler bei Lockheed Martin. Außerdem ist Mike der Autor von myphoto (http://agent0068.dyndns.org/~mike/projects/myphoto/). In seiner Freizeit experimentiert er damit, neue Gerichte zu erfinden und verbringt eine Menge Zeit mit Siena, ihrem neuen Welpen. Dru Nelson Dru Nelson war schon 1988 im Internet unterwegs. Nach der Gründung eines ISP-Unternehmens zog er in die Gegend um die San Francisco Bay. Dort war er mit großen Infrastruktur-Projekten für das Internet beschäftigt und arbeitete für Firmen wie Four11 (Yahoo! Mail), Diva, egroups XII Credits

(Yahoo! Groups), Danger und Blue6. Momentan arbeitet er für Plaxo. com, wo er mit der Entwicklung von Win32-Programmen beschäftigt ist. Unter der Adresse http://www.xxeo.com/ betreibt Dru einen Blog. Tyler Mitchell Tyler Mitchell schrieb 2005 das Buch Web Mapping Illustrated (O Reilly). Er arbeitet als Geographic Information Systems-(GIS-)Manager für Timberline Forest Inventory Consultants und lebt im wunderschönen British Columbia in Kanada. Er ist außerdem ein regelmäßiger Redner, Moderator und Workshop-Leiter bei GIS-Konferenzen. Sein Vorstoß in die Open Source-Welt begann, als er nach Alternativen zu proprietären Kartografiewerkzeugen suchte. Mittlerweile ist er ein starker Befürworter von Open Source-basierter GIS-Software. Peter Lavin Peter Lavin leitet eine Firma für Website-Entwicklung in Toronto. Seine Artikel wurden in einer Reihe von Zeitschriften und Onlinemagazinen veröffentlicht, darunter UnixReview.com und Dr. Dobb s Journal. Momentan arbeitet er an einem Buch über objektorientierte PHP-Programmierung, das bald bei No Starch Press veröffentlicht werden soll. Nähere Informationen finden Sie unter http://softcoded.com/. Über den Übersetzer Jørgen W. Lang lebt als freier Übersetzer, Webdesigner, Programmierer, Dozent und Musiker in Hamburg. Mit dem Web kam er 1996 zum ersten Mal in Kontakt. Im Laufe der folgenden Jahre eignete er sich im Selbststudium ein umfassendes Wissen rund um die Webprogrammierung und das Design von Webseiten an. Seine Übersetzertätigkeit begann im Jahr 2000 mit dem Buch CGI-Programmierung mit Perl und umfasst mittlerweile ein Dutzend Titel rund um das Web und zu verwandten Themen. Neben seiner Arbeit als Übersetzer steht Jørgen auch als Dozent zu den Themen Webdesign und Webprogrammierung zur Verfügung. Während seiner übrigen Zeit widmet sich Jørgen meistens dem einen oder anderen Musikprojekt. Zu erreichen ist Jørgen unter der E-Mail-Adresse jwl@worldmusic.de. Credits XIII

0 Einleitung Im Laufe der letzten Jahre hat sich PHP mehr und mehr einen Namen als hervorragende Skriptsprache für das Web gemacht, die sowohl in kleinen Skripten als auch in großen objektorientierten Firmenanwendungen zum Einsatz kommt. Dieses Buch deckt das gesamte Spektrum ab und bietet Ihnen dabei eine Themenvielfalt von HTML und Ajax über automatische Codeerzeugung bis hin zu datenbankbasierte Nachrichten-Warteschlangen. Der in diesem Buch benutzte Code und die Auswahl der Autoren geben den aktuellen Stand in der Web- und Applikationsentwicklung sowie im Grafikund Multimedia-Bereich wieder. Sie finden eine ausführliche Behandlung des dynamischen HTML (DHTML), mit dem Sie Benutzer Ihrer Website ohne erneutes Laden der Seite eine interaktive Benutzung ermöglichen können; Sie werden lernen, Flash-Filme nach Bedarf zu erzeugen, und wir zeigen Ihnen auch, wie Sie PHP für Datenbankzugriffe, Webservices und vieles, vieles mehr einsetzen können. In diesem Buch finden Sie nicht einfach Lösungen von der Stange. Hier finden Sie Ideen und Techniken, die Sie sofort in Ihren eigenen Programmen verwenden können. Und als wäre das nicht schon genug, wollen wir Sie darüber hinaus ermutigen, sich die hier gezeigten Ideen zu Eigen zu machen und zu erweitern. Hacken Sie unsere Hacks und geben Sie Ihren Skripten und Klassen eine neue Dimension. Warum heißt dieses Buch PHP»Hacks«? Der Begriff»Hacker«hat in der Presse einen eher schlechten Ruf. Dort steht es für jemanden, der in Rechnersysteme einbricht oder mit Computern als Waffe Unheil anrichtet. Unter Programmierern bedeutet ein»hack«dagegen eine schnell zusammengebaute Lösung für ein Problem oder eine schlaue Art, eine gestellte Aufgabe zu erledigen. Das Wort Hacker ist in diesem Zusammenhang also eher ein Kompliment, steht es doch für jemanden, der kreativ XV

ist und die nötigen technischen Kenntnisse hat, um seine Arbeit zu erledigen. Die Hacks-Buchreihe ist ein Versuch, dieses Wort wieder mit dem richtigen Inhalt zu füllen. Zu diesem Zweck dokumentieren wir, wie man auf positive Weise hacken kann, und versuchen, die Hacker-Tugend der kreativen Teilnahme an die noch nicht Eingeweihten weiterzugeben. Oft lernen Sie eine neue Technologie am schnellsten durch einfaches Abgucken und Ausprobieren kennen und verstehen. Wie Sie dieses Buch verwenden Wenn Sie wollen, können Sie dieses Buch von vorne bis hinten durchlesen. Allerdings können die meisten Hacks (bis auf wenige Ausnahmen) auch unabhängig voneinander gelesen und benutzt werden. Sie können also einfach herumstöbern und direkt zu den Abschnitten springen, die Sie am meisten interessieren. Wird bestimmtes Wissen vorausgesetzt, zeigt ein Querverweis Ihnen den Weg zum richtigen Hack. Wie dieses Buch aufgebaut ist Dieses Buch ist in mehrere thematisch getrennte Kapitel unterteilt: Kapitel 1, Installation und Grundlagen In diesem Kapitel geht es um die Grundlagen der Installation von PHP und MySQL sowie um die Benutzung der hervorragenden PEAR-Bibliothek. Kapitel 2, Webdesign Hier geht es um die Verbindung von HTML-Tricks mit PHP, mit denen Sie Ihre Benutzerschnittstelle aufpeppen können. Kapitel 3, DHTML In diesem Kapitel benutzen wir die mächtige Verbindung von HTML, CSS und JavaScript (das berühmte dynamische HTML bzw. kurz DHTML) zusammen mit PHP und zeigen, was man so alles mit einem Webbrowser anstellen kann. Kapitel 4, Grafiken Dieses Kapitel zeigt eine Reihe von Methoden zur Darstellung von Daten in grafischer Form. Kapitel 5, Datenbanken und XML Datenbanken bilden das Rückgrat vieler PHP-Anwendungen. Hier zeigen wir Ihnen, wie Sie flexible Datenbankobjekte erstellen können. Außerdem erfahren Sie, wie sich die Datenbankschicht mit Hilfe von dynamischer Codeerzeugung sogar automatisch aufbauen lässt. XVI Einleitung

Kapitel 6, Applikationsdesign In diesem Kapitel gehen wir etwas mehr in die Tiefe und diskutieren Techniken, mit denen Sie auf schnelle und zuverlässige Weise Ihre Programme entwickeln können. Kapitel 7, Entwurfsmuster C++-, C#- und Java-Programmierer verwenden Entwurfsmuster bereits seit Jahren. Das geht selbstverständlich auch in PHP. In diesem Kapitel zeigen wir Ihnen, wie Sie anhand verschiedener Muster aus dem Buch Entwurfsmuster von Erich Gamma, Richard Helm, Ralph Johnson und John M. Vlissides (Addison-Wesley) bessere PHP-Programme schreiben können. Kapitel 8, Tests Sollten Sie auch manchmal nachts wach liegen und sich fragen, ob Ihr PHP-Programm wohl noch läuft, kann dieses Kapitel Ihre Nächte vielleicht etwas ruhiger gestalten. Hier geht es um Testverfahren, die Programmierfehler für Sie aufspüren und die fortlaufend den Betrieb Ihrer Site überwachen können. Kapitel 9, Alternative Benutzerschnittstellen In diesem Kapitel zeigen wir Ihnen die Verwendung verschiedener Benutzerschnittstellen, die mit Ihrem PHP-Code eingesetzt werden können. So können Sie PHP-Programme von Ihrem Desktop aus steuern, von Ihrem Mobiltelefon oder auch von einem Instant Messenging-Programm. Kapitel 10, Unterhaltsames An dieser Stelle geben wir noch einmal so richtig Gas. Wir zeigen, wie Sie die Dinge aus dem Web einsetzen können, um Multiplayer-Spiele zu beobachten, wie Sie Google-Maps in Ihren Programmen verwenden können und vieles mehr. Häufig auftretende Probleme Einige Probleme mit PHP-Programmen begegnen einem immer wieder. Daher werden ein paar davon auch in diesem Buch angesprochen: Schlechtes Datenbankdesign Die meisten PHP-Programme stützen sich auf eine relationale Datenbank, normalerweise MySQL. Vielen Entwicklern, die hauptsächlich in traditionellen Programmiersprachen ausgebildet sind, fällt der Entwurf von Datenbanken aber nicht immer leicht. Der erste Schritt beim Aufräumen eines Programms besteht daher in einem guten Datenbank-Design [Hack #34]. Einleitung XVII

Schlechte Verwendung der Datenbank PHP kann auf sehr unterschiedliche Arten auf eine Datenbank zugreifen. Schnell kann hierbei ein Fehler zu Sicherheitsproblemen führen. Eine Migration zu PEAR DB oder PDO [Hack #35] kann der erste Schritt zur Verbesserung der Datenbankschicht sein. Danach können Sie außerdem feststellen, ob es vielleicht möglich ist, den SQL-Code [Hack #41], den SELECT- Code [Hack #42] oder den CRUD-Code [Hack #37] automatisch zu erzeugen. In die Seite eingebetteter PHP-Code Besonders kritisch sind hierbei direkt in den Code der Seite eingebaute Datenbankzugriffe. Die Hacks zum Erstellen von SELECT-Code [Hack #42] und CRUD-Code [Hack #37] demonstrieren die Verwendung von korrektem zweischichtigem Design mit PHP. Der Hack für dynamische SQL- Objekte [Hack #36] kann ebenfalls helfen, überflüssigen Code von der Seite zu fern zu halten. Verarbeitung von Anweisungen während des Seitenaufbaus Ein weiterer Punkt, der einem in Programmen öfter begegnet, ist die übermäßige Verarbeitung von Anweisungen durch den Webserver, bevor die Seiten an den Browser zurückgegeben werden. Dies kann beispielsweise passieren, wenn ein Programm auf Grund einer Benutzereingabe mehrere E-Mails verschicken muss. Die Anweisungen hierfür befinden sich oft im Code der zurückgegebenen Seite, wodurch der Benutzer unnötig lange auf den Seitenaufbau warten muss, bis alle Anweisungen abgearbeitet sind. Eine elegantere Lösung für dieses Problem ist die Verwendung einer Nachrichten-Warteschlange [Hack #50]. Keine Tests Die wenigsten Programme, die ich zu sehen bekomme, enthalten Testcode. Dabei sind automatische Tests die erste und beste Möglichkeit, abends ohne flaues Gefühl nach Hause gehen zu können, besonders wenn Sie eine Webapplikation schreiben müssen, die rund um die Uhr laufen muss. In diesem Buch finden Sie Informationen zu Modultests [Hack #79] und wie Sie diese automatisch erstellen können [Hack #80]. Außerdem finden Sie in diesem Buch Code zur Überprüfung der Site mit Hilfe von Robots [Hack #83] und für die Automatisierung des Internet Explorer [Hack #82], mit dem Sie sogar Ihren JavaScript-Code testen können. Mehr Sicherheit für die Benutzer Die meisten Menschen benutzen das gleiche Passwort für alle ihre Benutzerkonten. Wird ein Programm kompromittiert, das Passwörter im Klartext speichert, kann theoretisch die ganze Welt darauf zugreifen. Verwenden Sie MD5-Prüfsummen, um die Benutzerpasswörter zu verschlüsseln [Hack #59], und verwenden Sie ein rollenbasiertes Sicherheitssys- XVIII Einleitung

tem [Hack #58], damit die Benutzer nur Dinge sehen, die sie auch sehen sollen. Bessere Verwendung von Entwurfsmustern Zugegeben: Der Begriff Entwurfsmuster (Design Patterns) wurde in letzter Zeit etwas zu häufig benutzt. Dennoch gibt es in diesem Bereich viel Gutes, das in PHP noch nicht genügend zum Einsatz kommt. Daher haben wir das gesamte Kapitel 7 diesem Thema gewidmet. Hier zeigen wir Ihnen, wie Sie Entwurfsmuster pragmatisch und effektiv für die Verbesserung Ihrer PHP-Programme einsetzen können. Das waren nur ein paar Ideen dazu, wie Sie bestehende Programme verlässlicher und sicherer machen können. Wie macht man Programme aber»cooler«? Erstellen einer coolen Webapplikation Mit Hilfe von Browsern und Browser-Plugins, DHTML und Ajax ist es nicht schwer, eine coole Anwendung zu schreiben, die einfach zu benutzen ist und die neuesten Technologien verwendet. Hier ein paar Ideen aus den verschiedenen Teilen dieses Buchs: PHP-Programme direkt vom Desktop ausführen Auch wenn Sie es vielleicht nicht glauben, Sie können mit PHP Desktop- Programme erstellen [Hack #87], wodurch der gleiche Code, der auch auf dem Webserver benutzt wird, direkt vom Desktop aus zugänglich ist. Hinzu kommt, dass dieser Code mit nur wenigen Anpassungen (wenn überhaupt) zwischen Mac OS X, Windows und Linux portierbar ist. Landkarten verwenden Die Verwendung von Landkarten ist in letzter Zeit recht beliebt geworden. Zwei relativ einfache Methoden, Karten zusammen mit PHP zu verwenden, basieren auf dem Einsatz von MapServer [Hack #86] und Google Maps [Hack #95]. Dynamisch erzeugte Diagramme Grafiken und Diagramme waren schon immer sehr populär. Daher gibt es in PHP auch eine ganze Reihe von Möglichkeiten, Diagramme zu erstellen. Hierfür können Sie einfaches HTML [Hack #8], SVG [Hack #28], DHTML [Hack #22] und die GD-Bibliothek [Hack #31] einsetzen. Außerdem finden Sie in diesem Buch Informationen zum Erstellen einer objektorientierten Applikationsschicht, die auf der Grafikbibliothek aufbaut [Hack #29]. Einleitung XIX

Zusammenarbeit mit Benutzerprogrammen Eine weitere Möglichkeit, ansprechendere Programme zu schreiben, besteht darin, auf die Benutzer zuzugehen. Sehr beliebt ist hierfür die Verwendung von RSS [Hack #88]. Ich werde Ihnen zeigen, wie Sie RSS sogar auf einer PlayStation Portable [Hack #90] einsetzen können. Natürlich können Sie auch traditionellere Methoden wie etwa E-Mail [Hack #10] einsetzen. Außerdem zeige ich Ihnen, wie Sie RTF-Dokumente [Hack #48] und Excel- Tabellen [Hack #49] dynamisch erzeugen und wie Sie Word- [Hack #47] und Excel-Dokumente [Hack #45] als Eingabequelle verwenden können. Die Webschnittstelle aufwerten Des Weiteren finden Sie in diesem Buch ein paar Ideen zum Erstellen von dynamischen Menüs [Hack #17]. Dazu kommen Möglichkeiten zum einfachen Erzeugen von Brotkrümel-Navigationen [Hack #4], Registerkarten [Hack #6], Schnittstellen mit austauschbarem Aussehen (Skins) [Hack #3], Pop-ups [Hack #12], digitalen Notizzetteln [Hack #16], Drag-and-Drop-Schnittstellen [Hack #13], Kalendern [Hack #25], Linkdiagrammen [Hack #24] und vielen anderen Dingen, mit denen Sie das Beste aus Ihrer Webschnittstelle machen können. Dies sind nur ein paar Ideen, die Sie in diesem Buch finden können. Viel Spaß beim Entdecken neuer Wege, auf denen Sie Ihre PHP-Kenntnisse auf den neuesten Stand bringen können. Typografische Konventionen In diesem Buch werden die folgenden typografischen Konventionen verwendet: Kursivschrift Kennzeichnet URLs, Dateinamen und Dateierweiterungen sowie Verzeichnis- und Ordnernamen. Ein Pfad im Dateisystem könnte beispielsweise als /Developer/Applications dargestellt werden. Nichtproportionalschrift Kennzeichnet Codebeispiele, den Inhalt von Dateien und Ausgaben auf der Konsole sowie die Namen von Variablen, Befehlen und anderen Codeabschnitten. Nichtproportionalschrifft fett Kennzeichnet Codeabschnitte, typischerweise neue Einfügungen in bestehenden Code. Nichtproportionalschrift kursiv Kennzeichnet Codebeispiele und Tabellen mit Beispieltext, der durch Ihre eigenen Eingaben ersetzt werden muss. XX Einleitung

Graue Schrift Diese Schriftfarbe wird verwendet, um einen Querverweis innerhalb des Texts zu kennzeichnen. Sie sollten besonders auf Hinweise achten, die mit folgenden Symbolen im Text hervorgehoben werden: Hierbei handelt es sich um einen Ratschlag, eine Anregung oder eine allgemeine Anmerkung. Hier finden Sie nützliche Zusatzinformationen zum gerade behandelten Thema. Dies ist eine Warnung oder ein Warnhinweis, der oft darauf aufmerksam macht, dass Ihr Geld oder Ihre Privatsphäre gefährdet sein könnte. Die Thermometer-Symbole, die neben den Hacks stehen, geben die Komplexität des jeweiligen Hacks an: leicht mittel schwer Benutzung der Codebeispiele Dieses Buch soll Ihnen bei Ihrer Arbeit helfen. Es ist allgemein erlaubt, diesen Code in Ihren Programmen und Dokumentationen weiterzuverwenden. Hierfür ist es nicht notwendig, uns um Erlaubnis zu fragen, es sei denn, es handelt sich um eine größere Menge Code. So ist es beim Schreiben eines Programms, das einige Codeschnipsel dieses Buchs verwendet, nicht nötig, sich mit uns in Verbindung zu setzen; beim Verkauf oder Vertrieb einer CD-ROM mit Beispielen aus O Reilly-Büchern dagegen schon. Das Beantworten einer Frage durch das Zitat von Beispielcode erfordert keine Erlaubnis. Verwenden Sie einen erheblichen Teil des Beispielcodes aus diesem Buch in Ihrer Dokumentation, ist dagegen unsere Erlaubnis nötig. Eine Quellenangabe ist zwar erwünscht, aber nicht obligatorisch. Hierzu gehört in der Regel die Erwähnung von Titel, Autor, Verlag und ISBN, zum Beispiel:»PHP Hacks von Jack D. Herrington. Copyright 2006 O Reilly Verlag, ISBN 3-89721-452-0.«Falls Sie sich nicht sicher sind, ob die Nutzung der Codebeispiele außerhalb der hier erteilten Erlaubnis liegt, nehmen Sie bitte unter der Adresse permissions@oreilly.com Kontakt mit uns auf. Einleitung XXI

Die Codebeispiele zu diesem Buch Zu den PHP Hacks gibt es eine deutsche und eine amerikanische Website von O Reilly, auf der Sie die Codebeispiele sowie Errata und weitere Informationen finden. Die Adressen lauten: http://www.oreilly.de/catalog/phphksger/ http://www.oreilly.com/catalog/phphks/ Weitere Informationen zu diesem und anderen Büchern finden Sie auf der O Reilly-Website unter: http://www.oreilly.de XXII Einleitung

Kapitel 1 K A P I T E L E I N S Installation und Grundlagen Hacks 1 2 Bevor Sie damit anfangen, PHP zu hacken, müssen Sie PHP entweder selbst installieren oder sich ein Benutzerkonto auf einem Rechner besorgen, auf dem PHP bereits installiert ist. Dieses Kapitel behandelt die Grundlagen der Installation von PHP sowie der zweiten wichtigen Komponente, des MySQL- Datenbanksystems, das oftmals die Daten für die PHP-Programme bereitstellt. Außerdem behandeln wir in diesem Kapitel die Installation der PEAR- Open-Source-Module, die Sie kostenlos in Ihren eigenen PHP-Programmen benutzen dürfen. HACK #1 Hack PHP installieren Dieser Hack behandelt die Installation der Programmiersprache PHP unter Windows, Mac OS X und Linux für Apache und den Internet Information Server. #1 Der erste Schritt zur Benutzung dieses Buchs besteht in der Installation von PHP, der auf den meisten Betriebssystemen recht einfach durchzuführen ist. Die Installation beginnt mit einem Besuch auf der PHP-Website (http://www. php.net/), von der Sie sich entweder den Quellcode oder die Binärdateien und die dazugehörige Dokumentation herunterladen können. Die Installation von PHP unter Windows Unter Windows beginnt die Installation von PHP mit dem Herunterladen der Binärdateien für PHP Version 5. Wenn Sie es sich leicht machen wollen, benutzen Sie die.msi-installationspakete, die vom Windows Installer verwendet werden. Als Installationsverzeichnis geben Sie c:\php5 an. Sobald die Installation abgeschlossen ist, können Sie den PHP-Interpreter von der DOS- Kommandozeile aus starten: 1

HACK #1 PHP installieren C:\> php -v PHP 5.0.4 (cli) (built: Mar 31 2005 02:45:00) Copyright 1997-2004 The PHP Group Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies Kann der php-interpreter nicht gefunden werden, müssen Sie den Pfad um c:\php5\bin erweitern. Wählen Sie hierfür Start Systemsteuerung System. Nach einem Klick auf die Registerkarte Erweitert haben Sie die Möglichkeit, die Umgebungsvariablen anzupassen. Ergänzen Sie hier die Variable path um den Eintrag c:\php5\bin. Damit die Änderungen wirksam werden, müssen Sie zunächst alle offenen Befehlsfenster schließen und dann ein neues Fenster öffnen. Zwar ist der Zugriff auf PHP über die Kommandozeile nicht schlecht, allerdings wollen Sie PHP vermutlich eher zusammen mit einem Webserver benutzen. Unter Windows haben Sie für diese Integration zwei Möglichkeiten: Die erste ist die Installation des Webservers Apache und dessen Einrichtung für die Verwendung von PHP, die zweite Möglichkeit besteht in der Installation des Internet Information Server (IIS) und der Installation von PHP in dieser Umgebung. In beiden Fällen müssen Sie die Datei php.ini in Ihr Windows-Verzeichnis c:\windows kopieren. Öffnen Sie die Kopie unter c:\windows\php.ini nun in einem einfachen Texteditor und ändern Sie die Zeile extension_dir so, dass diese nun folgendermaßen lautet: extension_dir = "c:\php5\ext" Des Weiteren müssen Sie die Kommentarzeichen aus Zeilen wie dieser entfernen: extension=php_mysql.dll Diese Zeile aktiviert den Zugriff auf die MySQL-Datenbank. Eventuell wollen Sie noch weitere Bibliotheken aktivieren, um den Zugriff darauf zu ermöglichen. Nähere Informationen hierzu finden Sie in der Dokumentation zu PHP. Gehen Sie nun zurück zur PHP-Website (http://www.php.net/) und laden Sie die PECL-Module herunter. Speichern Sie die Module im Verzeichnis c:\php5\ ext (dies ist das Verzeichnis, das Sie gerade eben in php.ini angegeben haben). Diese Erweiterungen sind beispielsweise für den Zugriff auf MySQL und 2 Kapitel 1: Installation und Grundlagen