PHP UND MYSQL AUF DER HOMEPAGE - ISBN 87-91364-36-1 VON JOHANN-CHRISTIAN HANKE 64 SEITEN FÜR 4,40 EURO
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
PHP und MySQL auf der Homepage von Johann-Christian Hanke 64 Seiten für 4,40 Euro ISBN 87-91364-36-1 Dieses Heft ist die Fortsetzung von „PHP für Einsteiger“ vom gleichen Autor! Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
2 Hinweise zum Lesen dieser PDF-Datei Bildqualität Wir versuchen die Dateigröße zu reduzieren, um die Downloadzeit zu verkür- zen. Daher ist die Bildqualität in dieser Download-Datei nicht in allen Fällen optimal. Im Druck tritt dieses Problem nicht auf. Acrobat Reader: Wie komme ich klar? F5/F6 öffnet/schließt die Ansicht Lesezeichen Strg+F sucht Im Menü Ansicht stellst du ein, wie die Datei angezeigt wird STRG+0 = Ganze Seite STRG+1 = Originalgröße STRG+2 = Fensterbreite Im selben Menü kannst du folgendes einstellen: Einzelne Seite, Fort- laufend oder Fortlaufend - Doppelseiten ... Probiere es aus, um die Unterschiede zu sehen. Navigation Pfeil Links/Rechts: eine Seite vor/zurück Alt+ Pfeil Links/Rechts: Wie im Browser: Vorwärts/Zurück Strg++ vergrößert und Strg+– verkleinert Bestellung und Vertrieb für den Buchhandel KnowWare-Vertrieb, Postfach 3920, D-49029 Osnabrück Tel.: +49 (0)541 33145-20 Fax: +49 (0)541 33145-33 bestellung@knowware.de www.knowware.de Autoren gesucht Der KnowWare-Verlag sucht ständig neue Autoren. Hast du ein Thema, dass dir unter den Fingern brennt? - ein Thema, das du anderen Leu- ten leicht verständlich erklären kannst? Schicke uns einfach ein paar Beispielseiten und ein vorläufiges In- haltsverzeichnis an folgende Adresse: lektorat@knowware.de Wir werden uns deinen Vorschlag ansehen und dir so schnell wie mög- lich eine Antwort senden. www.knowware.de © KnowWare.de
Inhaltsverzeichnis 3 Inhaltsverzeichnis Willkommen in der Welt der Bilderalbum: Dateien hochladen auf die dynamischen Websites! ...........................5 Homepage ............................................... 25 Worum dreht sich das Heft? ..................................5 Optimiert für Grafiken .......................................... 25 Lehrgang zu MySQL und SQL...............................5 Formular zum Hochladen .................................... 27 Über den Autor ......................................................5 Das Array $_FILES.............................................. 27 Apache und PHP installieren mit XAMPP 6 Eigenschaften von $_FILES ................................ 27 XAMPP, der neue Shooting-Star ...........................6 Dateityp und -größe ermitteln .............................. 28 Alte Installationen entfernen ..................................7 Funktion move_uploaded_file() ........................... 28 Welches XAMPP darf’s denn sein? .......................7 Auslesen des Verzeichnisses .............................. 29 XAMPP Lite herunterladen ....................................8 Gib das Verzeichnis frei!...................................... 29 XAMPP Lite installieren .........................................8 Domainfactory oder Neuer Ärger mit dem chmod!................................................................. 30 Apache und MySQL starten...................................8 Übungsteil E: Anregungen für Verbesserungen! . 30 Die neue Syntax von PHP seit Version 4.1 Komfort für MySQL – Die grafische bzw. 4.2.....................................................10 Oberfläche phpMyAdmin ....................... 31 Infos über PHP ....................................................10 phpMyAdmin beim Dienstleister .......................... 31 Das steckt dahinter: safety first!...........................10 Weitere Neuerungen............................................12 Datenbank und Tabellen: Die Adressliste Übungsteil A zur neuen Syntax............................13 aufbauen.................................................. 33 Datenbank anlegen ............................................. 33 Einrückungen nach PEAR: Guter Code Tabelle für Kategorien ......................................... 33 im Zeichen der Birne...............................14 Das Schlüsselfeld ................................................ 34 Guter Code = lesbarer Code................................14 SQL-Befehl eingeben .......................................... 34 Wo setzt du Leerzeichen? ...................................15 Daten eintragen ................................................... 35 Wo setzt du kein Leerzeichen?............................15 Adresstabelle anlegen ......................................... 35 Einrückungen mit vier Leerzeichen ......................15 Geschweifte Klammern setzen ............................15 Die wichtigsten Felddatentypen von MySQL ..................................................... 36 PHPEdit – PHP-Editor der Superlative ..16 Freeware-Variante PHPEdit 0.8...........................16 Daten eintragen, updaten und löschen. 37 Code automatisch verschönern ...........................16 Daten eintragen: INSERT INTO .......................... 37 Übungsteil B zur Codeeinrückung .......................16 Daten updaten: UPDATE..................................... 37 Daten löschen: DELETE...................................... 37 Notationstricks, mit denen PHP wieder Spaß macht! .............................................17 Daten ausgeben, filtern, sortieren und Der Trick mit den Arrays ......................................17 verknüpfen .............................................. 38 Ein zweiter Trick mit den Arrays ..........................17 Alle Datensätze ausgeben................................... 38 Lange Passagen mit echo, Trick 1.......................18 Filtern mit WHERE............................................... 38 Lange Passagen mit echo, Trick 2.......................18 Der Operator LIKE ............................................... 39 Passagen in Heredoc-Syntax ..............................18 Auswahlkriterien verknüpfen................................ 39 Endlich alle Fehler finden!....................................19 Sortieren .............................................................. 39 Mehr Komfort und Sicherheit: Code Zwei Tabellen gleichzeitig abfragen – auslagern mit include() ...........................20 durch einen JOIN .................................... 40 Syntax der Funktion include() ..............................21 Zwei Tabellen sind verbunden............................. 40 HTML-Datei einbinden .........................................22 Join zwischen den Tabellen................................. 40 Übungsteil C ........................................................22 Das Herz schlägt links – mit einem LEFT So schreibst du eigene Funktionen.......23 JOIN ......................................................... 41 Grundsyntax von Funktionen ...............................23 Übungsteil F ........................................................ 41 Ein Beispiel: Brutto- in Nettowert .........................24 Übungsteil D ........................................................24 Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
4 Inhaltsverzeichnis Mit PHP und MySQL: Daten als HTML- Weitere interessante KnowWare-Titel Seite ausgeben ........................................42 Vorname und Name anzeigen .............................42 Verbindung aufnehmen........................................42 KnowWare bringt jeden Monat 2–3 Abfrage ausführen ...............................................43 neue Computerhefte auf den Markt. Aber auch wenn die Titel am Zeitschriftenkiosk längst ver- Noch schicker: Datensätze in griffen sind, halten wir sie alle zum Nachbestel- Tabellenform darstellen ..........................44 len bereit. Und zwar stets aktuell – da wir immer Anzahl der Felder und Spalten ............................45 wieder aktualisieren und nachdrucken! Ausgeben der Feldnamen....................................45 Ausgeben der Datensätze ...................................45 Insgesamt bieten wir dir mehr als 100 preiswerte Kategorie im Klartext ausgeben...........................45 Hefte an, siehe www.knowware.de! Noch ein- mal: Sie sind allesamt sofort lieferbar! Mehr Sicherheit für die MySQL- Verbindung...............................................46 Folgende Hefte legen wir dir ganz besonders ans Fehlermeldungen unterdrücken ...........................46 Herz, sie kosten übrigens jeweils nur 4,- Euro: Abbruchsteuerung mit: or die() ............................46 • PHP für Einsteiger Zugriffsdaten auslagern .......................................46 2. aktualisierte Ausgabe von 2003 mit 88 Seiten Dateneingabe mit Komfort: Formular mit Autor: Johann-Christian Hanke Nachschlagefeld......................................47 Der Quelltext kurz erklärt .....................................47 Es handelt sich um das verständlich geschriebe- Formularvalidierung .............................................47 ne Grundlagenheft zu PHP, es ist einer unserer Daten einfügen: INSERT INTO............................48 Bestseller und der Vorgänger zu diesem Titel. Die Reload-Falle: Vermeide sie! ..........................49 • PHP und MySQL für Einsteiger Datenbanktabellen sichern und auf letzter Nachdruck vom Mai 2003 mit 72 Seiten andere Rechner übertragen ...................50 Autorin: Petra Bilke Offline: Bei lokalen PCs .......................................50 Petra erklärt dir ganz genau, wie Datenbanken Online: Übertragen per SQL-Dump .....................50 miteinander verknüpft werden und wie man auf Übungsteil G ........................................................50 deren Inhalte zugreift. Für Anspruchsvolle! Das Projekt: Gästebuch, CMS oder • Homepages mit HTML und CSS Fototagebuch? ........................................51 Gestaltung per CSS-Datei ...................................51 2. Ausgabe vom August 2003 mit 88 Seiten Die Module des Gästebuchs................................51 Autor: Johann-Christian Hanke Steuervariablen der edit.inc.php ..........................52 Noch keinen Schimmer von HTML und CSS, al- Die Datenbanktabelle gb_tabelle .........................52 so dem attraktiven Aufbau von Webseiten? Die- Der komplette Quelltext der Datei index.php .......53 ser Titel kommt ohne viel Einsteiger-Blabla so- Anzeigen der Datensätze.....................................55 fort auf den Punkt. Gästebucheintrag vornehmen..............................56 Eingabeformular erzeugen: Kompletter Quelltext • Homepages für Einsteiger der eingabe.inc.php .............................................56 5. neu bearbeitete Ausgabe 2004 mit 80 Seiten Zurück zur gleichen Stelle bitte!...........................59 Autor: Johann-Chrisitan Hanke Administrationsbereich: Lästige Seit Jahren der Klassiker für den Einstieg in das Datensätze einfach löschen! ..................60 Schreiben von Webseiten mit HTML, jetzt in ei- Quelltext der admin.inc.php .................................60 ner 5., komplett überarbeiteten Neuausgabe! Eintrag löschen: loeschen.inc.php .......................61 Übungsteil H ........................................................61 KnowWare gibt neuerdings auch Titel zum Stichwortverzeichnis ..............................62 Thema Lebenshilfe heraus: Arbeitslosen- geld II, BAföG, Hartz IV usw.: www.life21.de Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Willkommen in der Welt der dynamischen Websites! 5 Willkommen in der Welt der dynamischen Websites! Es geht weiter mit PHP, liebe Leserin und lieber Abfragen von Datenbanktabellen. Anhand einer Leser. Endlich ist sie da – die lang ersehnte schicken Adressliste zeige ich dir Folgendes: Fortsetzung meines Titels „PHP für Einsteiger“. • Datenbanktabellen anlegen Ich begrüße dich ganz herzlich und freue mich, • Daten eintragen dass du wieder „zugeschnappt“ hast. • Ermitteln der gewünschten Datensätze Worum dreht sich das Heft? • Einbinden der SQL-Befehle in PHP Es geht – nomen est omen – natürlich um PHP Und die Praxis? Hier habe ich mir gedacht, dass und MySQL auf der Homepage. Das klingt nach dir ein wirklich komfortables Gästebuch gut ge- viel Praxis und so soll es auch sein! fallen wird – mit Foto-Feld, Reloadsperre und Aber wie immer folgt vor der Praxis leider erst seitenweiser Ausgabe der Daten! eine gehörige Portion Theorie. Auch als Content-Management-System, Weblog oder Fototagebuch verwendbar! Fortgeschrittene PHP-Techniken Im ersten Teil des Heftes besprechen wir daher Die Grenzen des Heftes einige fortgeschrittene Programmiertechniken. … liegen beim relationalen Datenbankdesign, Es geht u. a. um Folgendes: also dem Verknüpfen von mehreren Tabellen, • neue Syntax seit PHP 4.2 um das Speichern von Daten effektiver zu ge- stalten. Da schnuppern wir natürlich auf didak- • Schreiben eigener Funktionen tisch-verständliche Art hinein! Danach „treibe“ • Auslagern von Modulen durch include() ich dich allerdings „in die Fänge“ meiner Auto- • Methoden, den Code lesbarer zu machen renkollegin Petra Bilke. Grund: Petra bietet dir Ich zeige dir bei dieser Gelegenheit auch, wie du in ihrem anspruchsvollen Titel „PHP und My- die neuesten Versionen von PHP (und MySQL) SQL“ eine ausführliche Einführung in diese Ma- für den Offline-Betrieb einrichtest – mit dem terie und eine Wiederholung dieses Wissens hie- genialen Installations-Paket XAMPP. ße „Eulen nach Athen tragen“. Natürlich probieren wir diese Neuerungen dann Über den Autor in der Praxis aus – du wirst Dateien über ein Ich bin kein genialer Programmierer, sondern Formularfeld hochladen und auf deiner Webseite Autodidakt. Programmieren ist allerdings mein speichern. Außerdem lernst du die Funktionen Hobby, für das ich viele, viele Nächte und an einfachen Beispielen kennen. Wochenenden opfere. Ein Beispiel dafür findest du unter www.phpkid.de, meiner ersten Nachdem wir uns damit vergnügt haben, geht es ausschließlich mit Datenbanktabellen ans Eingemachte! Es folgt der lang ersehnte … gesteuerten Seite. Mein „Gesellenstück“ kannst du dagegen unter Lehrgang zu MySQL und SQL www.knowware.de bewundern – ein Projekt, bei Wir schauen uns an, wie du MySQL bei deinem dem ich mich fast überhoben hätte. Seit März Dienstleister „scharf schaltest“ und dort mit dei- 2004 läuft die KnowWare-Homepage nun auf nen Datenbanken jonglierst – oder mit der Da- Datenbankbasis. Beim „Stemmen“ dieses Portals tenbank, denn viele Dienstleister bieten dir nur habe ich wieder viel gelernt und bin froh, dass eine einzelne an. ich dieses Wissen nun weitergeben kann! Du lernst die grafische Oberfläche Ich wünsche auch dir viel Spaß und Erfolg mit phpMyAdmin ausführlich kennen! „PHP und MySQL auf der Homepage“! Die Bei- spieldateien für das Heft findest du übrigens un- Und dann folgen die Beispiele! Doch ehe wir ter http:// knowware.de/?book=phpmysql uns an das erste Datenbank-Praxisexempel wa- gen können, ist auch hier Theorie gefragt. Lerne Johann-Christian Hanke, SQL, die Sprache zum Einrichten, Pflegen und Berlin im August 2004 Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
6 XAMPP, der neue Shooting-Star Apache und PHP installieren mit XAMPP Du willst PHP und MySQL offline ausprobie- XAMPP, der neue Shooting-Star ren? Dazu benötigst du lediglich einen lokalen Doch du musst nicht die Flinte ins Korn werfen, Webserver, der mit PHP und MySQL ideal zu- denn ich habe XAMPP für dich aufgespürt! sammenarbeitet – den Apache-Webserver! Lesern von „PHP für Einsteiger“ ist das nicht neu – deshalb will ich dich nicht mit Einzelhei- ten langweilen. Schließlich hatte ich dir dort ge- zeigt, wie du den Apachen und PHP installierst. In Ausgabe 1 mussten wir das noch in Handar- beit erledigen – inklusive manueller Anpassung von Konfigurationsdateien. Die Fehlerquote be- trug nach meinen Erfahrungen 10-20% – relativ viel, wie ich heute finde. Und nicht jeder hat Lust und Nerven, in unzähligen Konfigurations- dateien „herumzumanschen“. In Ausgabe 2 von 2003 konnte ich dich vom In- stallationspaket FoxServ (www.foxserv.net) be- XAMPP findest du unter www.apachefriends.org geistern. Dieses Installationspaket richtete Apa- Auch XAMPP ist ein kostenloses Installations- che, PHP und MySQL in 90-95% aller Fälle er- tool für PHP, MySQL, phpMyAdmin, Perl und folgreich ein und machte die ersten „lokalen viele andere Zusatzprogramme. Schritte“ mit PHP zum angenehmen Erlebnis. Im Gegensatz zu FoxServ besitzt es jedoch ent- Leider gab es immer wieder einige hartnäckige scheidende Vorteile: Fälle, bei denen weder die „Handarbeits-Varian- • XAMPP ist stets aktuell, da es alle paar Wo- te“ noch FoxServ funktionierten. Die betroffe- chen aktualisiert und angepasst wird. Fast nen Computerfreunde mussten mit dem Online- zeitgleich mit der neuen PHP-Version 5 er- Test beim Dienstleister vorlieb nehmen. schien z. B. auch ein XAMPP mit PHP 5! Ein weiterer Wermutstropfen: Die mit FoxServ • XAMPP ist leicht einzurichten und ziemlich mitinstallierte Version von phpMyAdmin (ein zuverlässig. grafischer Aufsatz für das Datenbanksystem • XAMPP ist schlank und trägt sich nicht in die MySQL) ist schlicht und einfach unbrauchbar. Registry ein. Zur Deinstallation musst du den entsprechenden XAMPP-Ordner einfach lö- Man kann mit dieser Version nicht vernünftig schen und fertig. arbeiten, da die Daten in der Browseransicht nicht korrekt aktualisiert werden. Der Browser XAMPP stammt von meinem Autorenkollegen zeigt nach Eingeben und Löschen von Datensät- Kai Oswald Seidler aus Berlin und seinem Mit- zen meist alte Versionen aus dem Cache an. Oft streiter Kay Vogelgesang. Kai, Kay und weitere hilft nicht einmal das einfache Aktualisieren „Friends“ sind also die „Apachefriends“. Sie för- durch Druck auf [F5]. dern mit ihrem genialen Tool die Verbreitung des Dieser sehr nervige Fehler ist mit neueren Versi- Apache-Webservers. Das unterstütze ich gerne! onen von phpMyAdmin zum Glück behoben. Soviel vorweg: Ich verspreche eine Erfolgsquote Doch hier muss FoxServ leider passen, denn seit von 98%. (Das bedeutet aber, dass es in 2% aller 2003 wurde das Programm nicht mehr aktuali- Fälle aus welchen Gründen auch immer trotz- siert. Für diesen Kurs benötigen wir aber eine dem nicht klappen wird.) neue Version von phpMyAdmin! Genug geschwafelt, jetzt schaufeln wir uns die- ses XAMPP erst einmal auf die Platte. Wie das Aus diesem Grund ist inzwischen auch geht? Und was du vorher beachten solltest? Auf FoxServ keine Empfehlung mehr wert! der nächsten Seite kläre ich dich auf! Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Alte Installationen entfernen 7 Alte Installationen entfernen Es handelt sich um die Konfigurationsdateien Zuerst ein paar wichtige Hinweise, wenn du für MySQL und PHP. In der Regel findest du schon Frust mit vorhandenen Installations- diese Dateien unter C:\Windows. Versuchen hattest und nun XAMPP probieren Putze die Teile runter von der Festplatte, da sie möchtest. eine Neuinstallation evtl. behindern können! (Falls XAMPP jedoch deine erste Begegnung Wirf auch Winsqladmin aus dem Autostart des mit dem Apachen ist, überspringst du diesen Ab- Startmenüs heraus – diese „grafische Statusan- schnitt und liest frech in der Nachbarspalte wei- zeige“ für die Datenbank MySQL. Sicher ist dir ter bei „Welches XAMPP darf’s denn sein?“) Winsqladmin schon aufgefallen. Dieses Tool Achte darauf, dass alle alten Apache-, PHP- sorgt schließlich dafür, dass rechts unten im Sys- und MySQL-Installationen von deinem tembereich die Ampel erscheint. Bei XAMPP Computer gelöscht werden! benötigst du diese Ampel nicht, sie wird dich nur verwirren. Zum Entfernen rufst du das AUTO- Besonders als FoxServ-Freund musst du deine START-Menü unter (ALLE) PROGRAMME auf und Festplatte erst „beräumen“: Gehe z.B. über Sys- rechtsklickst auf den Eintrag. Wähle den LÖ- temsteuerung in den Bereich Software und SCHEN-Befehl und Winsqladmin wird dich nun deinstalliere den „Fuchsdienst“. (Keine Sorge, nicht mehr „belästigen“. Im Zweifelsfalle kannst deine evtl. schon vorhandenen MySQL-Tabellen du das Tool immer noch von Hand starten. unter mysql/data und natürlich alle Daten un- ter dem Root-Ordner www bleiben erhalten!) Alles deaktiviert und entfernt? Dann starte den Rechner neu und prüfe unbedingt noch einmal, Dienste deaktivieren ob die Dienste auch deaktiviert sind und ob we- Deaktiviere die evtl. vorhandenen Dienste in der der der Apache noch Mysql läuft! Erst wenn die Verwaltungskonsole bei Windows 2000 bzw. XP. Platte sauber ist, sollte das neue XAMPP drauf! Denn zumindest unter Windows 2000/XP hat FoxServ Apache und MySQL als so genannte Welches XAMPP darf’s denn sein? Dienste eingerichtet. Ich empfehle dir das Paket XAMPP Lite (früher XAMPP Mini). Es umfasst nur 10 MB Down- Verwaltungskonsole aufrufen loadgröße und beherbergt dabei immerhin PHP, Rechtsklicke auf den Arbeitsplatz und wähle MySQL und phpMyAdmin in neuen Versionen. VERWALTEN. Gehe zum Zweig Dienste und Ein- Für unsere Zwecke vollkommen ausreichend stellungen, Unterzweig Dienste. Hier findest du und geeignet für Windows ab Version 98! zum einen den „Apachen“ und zum anderen MySQL. Rechtsklicke auf den entsprechenden Dienst und wähle den EIGENSCHAFTEN-Befehl. Wähle im Listenfeld bei Starttyp den Eintrag DEAKTIVIERT. Warum empfehle ich das Deaktivieren? Leider werden diese Dienste auch nach Deinstallation von FoxServ nicht in jedem Fall sauber entfernt! Aber wie gesagt – diese Dienste müssen nur dann weg, wenn sie nach der Deinstallation von FoxServ noch in der Verwaltungskonsole „her- umgeistern“. Auch für Linux haben die „Apachefriends“ ein Herz Alte Einstellungen löschen Das „große XAMPP“ dagegen kommt in einer Zur Sicherheit empfehle ich noch eine weitere Basisversion daher und kann mit Add-Ons wie Maßnahme: Perl, Python, Java Tomcat, Cocoon und was Lösche die Dateien my.ini und php.ini. weiß ich nicht noch allem „aufgewertet“ werden. Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
8 XAMPP Lite herunterladen XAMPP Lite herunterladen Wenn das Entpacken geklappt hat, entsteht dann Ich nehme einmal an, dass du dich für die Win- direkt unter C: ein Extra-Ordner namens xampp- dows-Variante von XAMPP interessierst. lite. Das ist so ähnlich wie mit FoxServ, nur dass der Ordner bei XAMPP eben anders heißt. Surfe zu www.apachefriends.org/wampp.html bzw. apachefriends.org/de/xampp-windows.html Der Ordner wird im Windows Explorer sehr und suche nach XAMPP lite 1.4.x (oder höher). weit unten in der Ordnerstruktur aufgeführt Du brauchst wirklich nur diese Lite-Version, al- – du findest ihn so schnell wieder! Kunst- les andere wäre für uns Platzverschwendung. stück, schließlich beginnt xampp mit „x“. (Falls du jedoch die Linux-Version suchst, wirst Gehe in diesen neuen Ordner xampplite und du unter apachefriends.org/de/xampp-linux.html doppelklicke auf die Datei setup_xampp.bat. fündig.) Ein DOS-Fenster erscheint. Warte kurz, die In- stallation geht vonstatten. Nach erfolgreicher Einrichtung drückst du eine beliebige Taste, da- mit das DOS-Fenster verschwindet. Das System ist schon eingerichtet – ich empfeh- Die Lite-Version genügt völlig und ist nur 10 MB groß le einen Neustart deines Rechners. Du hast auf den Link geklickt? Dann musst du Apache und MySQL starten ein wenig nach dem Download suchen. Es gibt Nun kannst du vergnügt den Apachen und keinen direkten Link zu der Datei. Gehe in der MySQL starten. Gehe dafür in den Ordner Tabelle bei den Apachefriends zum Punkt C:\xampplite und lege los: XAMPP Lite 1.4.x und klicke auf EXE (7-zip). • Wähle apache_start.bat, um nur den Web- Nun gelangst du zu einer Auswahlseite. Dort server zu starten und wähle dann klickst du eines der vielen Symbole unter Down- mysql_start.bat für MySQL. load an und nach wenigen Sekunden „wird dir die Datei automatisch auf den Rechner gescho- • Oder – das ist noch besser – wähle gleich ben“. xampp_start.exe, um beides auf einen Schlag aufzurufen. XAMPP Lite installieren Alles klar? Die heruntergeladene Datei xamppli- te-win32-1.4.x.exe o.ä. liegt bereit? Im Beispiel soll das neue System unter C:\xampplite ein- gerichtet werden. Entpacke diese Exe-Datei direkt unter C:! Doppelklicke dafür auf die Datei xampplite- Die xampp_start.exe startet Apache, PHP und MySQL win32-1.4.x.exe und wähle den Entpack-Ordner Tippe nun http://localhost in deinen im folgenden Dialogfenster aus: Wie schon er- Browser. XAMPP begrüßt dich mit einer ganz wähnt: Ich empfehle dir, nur C:\ in diesem Ent- eigenen index.html-Startseite (die du später ger- pack-Dialogfenster stehen zu lassen, den Rest ne entfernen kannst)! Der lokale Apache-Web- löschst du einfach. server funktioniert und die XAMPP-Startseite zeigt dir auch ein paar Demos an. Sagenhaft, wie einfach sich XAMPP einrichten lässt! Wenn du XAMPP Lite beenden möchtest, wählst du xampp_stop.exe! Das oder die von XAMPP geöffnete(n) DOS- Fenster darfst du übrigens auf keinen Fall Hier sollte nur C:\ stehen – Klicke dann auf EXTRACT schließen! Lasse sie offen, da sie die Funktion von „Apache“ und MySQL sichern! Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Apache und MySQL starten 9 Tipp: Lege dir einfach eine Verknüpfung zu die- Der Root-Ordner für dein Projekt sem xampplite-Ordner auf den Desktop. So Wo steckt der Root-Ordner des Webservers? kommst du schnell an die Dateien zum Starten Woher nimmt XAMPP die Dateien? Ganz ein- und Beenden heran! fach: der Root-Ordner heißt htdocs und befindet sich direkt unter xampplite. Lege also alle deine Probleme mit XAMPP lösen PHP- und HTML-Dateien hier hinein bzw. in Wenn du das Prinzip der Installation erst einmal selbst zu erstellende Unterordner. „geschnappt“ hast, wirst du merken: XAMPP ist zuverlässig und macht kaum Probleme. Das Ein- richten irgendwelcher Konfigurationseinstellun- gen ist (meist) nicht nötig, da alles optimal vor- konfiguriert wurde. Optimal bedeutet nicht sicher! Die Vorein- stellungen sind für Offline-Testzwecke ge- eignet, nicht für den Produktionseinsatz! Doch nun zu den Problemen, denn auch mir ist Der Root-Ordner von XAMPP heißt htdocs es schon passiert, dass der Apache partout nicht Daten übertragen von FoxServ starten wollte. Das kann folgende Gründe haben: • Ein anderer lokaler Webserver ist aktiv, z. B. Du steigst um von FoxServ? Wie überträgst du der IIS (Internet Information Server) von deine Daten, die bisher z. B. noch unter fox- Windows 2000 bzw. XP Professional. Den serv/www liegen? Ganz einfach, den gesamten musst du vor dem Start von XAMPP runter- Inhalt des Ordners www legst du einfach in den fahren. neuen Stammordner xampplite/htdocs. Auch evtl. schon vorhandene MySQL-Tabellen über- • Einer dieser hartnäckigen und eigentlich im- trägst du ganz einfach: Kopiere die unter fox- mer störenden Virenscanner arbeitet im Hin- serv/mysql/data befindlichen Ordner nach tergrund und blockiert XAMPP. Im Zweifels- xampplite/mysql/data. Das war es schon! falle gilt: Abschalten. • Eine lokale Firewall verträgt sich nicht mit Zugriffsdaten zu MySQL XAMPP. Versucht macht klug. Schnell noch eine Information vorab für die • Du telefonierst mit Skype (www.skype.com), ganz Eiligen. Wie lauten eigentlich die Zugriffs- dem coolen „Kostenlostelefonierprogramm“. daten von XAMPP in der Grundinstallation? Leider blockiert Skype den Port 80 und muss • MySQL-Benutzername: root erst komplett heruntergefahren werden. • Passwort: (kein Passwort) Dein Problem ist damit immer noch nicht ge- Das sind automatisch auch die Daten für php- löst? Dann besuche die XAMPP-FAQ unter MyAdmin, das Datenbank-Verwaltungstool. apachefriends.org/de/faq-xampp-windows.html und lies dir die Fragen und Antworten durch. Klappt der Zugriff auf phpMyAdmin? Probiere es aus, rufe das Programm auf über http://localhost/phpmyadmin. Gib root und nichts in das Passwortfenster ein. phpMyAdmin produziert eine Fehlermeldung? Gehe in den Ordner C:\xampplite\phpmyadmin und öffne die Datei config.inc.php. Gehe zur Stelle $cfg['Servers'][$i]['controluser'] = 'pma'; und lösche das pma. Bei mir klappte es Hilfreiche FAQ zu allen XAMPP-Versionen nach dieser Aktion. Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
10 Die neue Syntax von PHP Die neue Syntax von PHP seit Version 4.1 bzw. 4.2 Was für ein Pech! So würde ich das Erscheinen Infos über PHP der ersten Ausgabe von „PHP für Einsteiger“ be- Wie ist register_globals bei dir bzw. bei deinem schreiben. Redaktionsschluss war im April 2002. Dienstleister eingestellt? Überprüfe es: Verwen- Die zu dieser Zeit aktuelle PHP-Version hieß 4.1 de dazu die bekannte Funktion phpinfo(). und bei Abgabe des Hefts schien die Welt noch in Ordnung zu sein. Zur Erinnerung: Erzeuge ein Dokument mit fol- gendem Inhalt, speichere es als info.php und le- Kurz vor Erscheinen des Titels (Juni 2002) kam ge es im Root des lokalen Webservers oder ir- jedoch eine brandneue Version von PHP auf den gendwo auf deiner Homepage ab: Markt: die berühmt-berüchtigte Version 4.2. nieren würden. Was war geschehen? Die Macher von PHP hatten kurzerhand ei- ne Servervariable in der Konfigurationsdatei php.ini verstellt. Statt register_globals = On lautete die XAMPP setzt register_globals auf On Voreinstellung register_globals = Off. Mein Tipp: Gewöhne dich (so langsam) an das Ergo: Viele Skripte funktionierten nicht mehr. Off. Denn Sicherheit geht vor Komfort. Auch Zumindest gilt bzw. galt diese Weisheit bei einer ich programmiere inzwischen ausschließlich in Offline-Installation, z. B. in Handarbeit bzw. der neuen Syntax. durch das FoxServ-Paket. Außerdem werden auch die Dienstleister sicher Ich konnte meine Leser bald beruhigen: Alle irgendwann einmal nachziehen und Schritt für Beispiele im Heft waren und sind brauchbar, Schritt diesen „Variablenschalter“ auf Off schal- wenn man diese Variable einfach wieder um- ten. Und dann solltest du vorbereitet sein. stellt: In der zweiten Ausgabe von Anfang 2003 machte ich auf die Problematik aufmerksam. Ich Zeit zum Umlernen! Ich verrate dir zuerst, wa- empfahl, diese Variable unter C:\Windows\ rum die neue Syntax Sinn macht. Dann führe ich php.ini (vorläufig) wieder auf On zu setzen: dir die Sicherheitslücke an einem Beispiel vor. Danach pflichtest du mir sicher bei, dass die un- geprüfte automatische Erzeugung von globalen Variablen gesperrt werden muss. Das steckt dahinter: safety first! Was heißt es eigentlich, dass plötzlich „globale Variablen“ (register_globals) nicht mehr zuge- lassen sind? Was sind globale Variablen? Die php.ini lag bzw. liegt in der Regel unter C:\Windows Exkurs: globale Variablen Online, also beim Dienstleister, droht nach wie Hinter registrierten globalen Variablen verbergen vor keine „Gefahr“. Selbst heute noch haben die sich die Informationen aus „GET“ und „POST“, meisten Dienstleister noch nicht auf register_ „COOKIE“ und „SERVER“ – praktisch der ge- globals = Off umgeschaltet. samte Bereich externer Variablenquellen. Diese Werte stehen nicht mehr global zur Verfügung. Und selbst XAMPP setzt auf Komfort statt Si- Einfacher ausgedrückt: Alle Inhalte aus dieser cherheit und will die Nutzer nicht verärgern. Quelle können jetzt nicht mehr einfach per Auch hier ist man daher beim „On“ geblieben. „$Variablenname“ ausgelesen werden. Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Das steckt dahinter: safety first! 11 Beispiel Formularauswertung Verwechslungen kommen. Du erzeugst ein For- Die Erklärung war zu technisch? Dann zeige ich mularfeld, welches Name heißt? Und zufälliger- dir das Prinzip nun Schritt für Schritt am Bei- weise steckt ein gleichnamiges Cookie in dei- spiel! Fangen wir mit dem Musterfall Formular- nem Quellcode? Dann stehen sowohl der Inhalt auswertung und dem Array $_POST an! des Formularfelds als auch der Wert des Cookies über $Name zur Verfügung. Wer gewinnt? Das Bisher war PHP ganz einfach gestrickt. Der Na- hängt von deinem Skript ab! me eines Formularfelds wurde automatisch zur Variablen. Den Wert eines Formularfelds wie Einverstanden, diese Schwierigkeiten könntest diesem du durch eine konsequente Variablenbenennung von Anfang an ausschließen. Denke dir kleine Kürzel aus, die nur für Cookies oder nur für konntest du folgendermaßen auslesen: Formularfelder gelten. echo "$Name", herzlich willkommen!\n"; Schlimmer sind die Sicherheitsmängel dieser Schreibweise bei schlampig programmiertem Vergleiche mit dem ersten Beispiel aus Code. Solch einen Sicherheitsmangel zeige ich Kapitel 5 in „PHP für Einsteiger“. dir jetzt! Dabei spielte es keine Rolle, ob du das Formular per method="post" oder method="get" Quelltext der Datei unsicher.php abgeschickt hattest. Selbst die Werte von Coo- Schaue dir das unten stehende Listing genau an. kies konntest du anhand ihres Namens ganz ein- Schreibe den Code ab und speichere ihn unter fach ermitteln. Ein Cookie namens Name wurde dem Namen unsicher.php! Rufe die Datei auf! zu einer Variablen namens $Name. Findest du die schwere Sicherheitslücke? Diese Schreibweise war und ist bequem, das ge- be ich zu. Zu bequem! Zum einen kann es zu (Ich gehe natürlich davon aus, dass register _globals bei dir noch auf On steht!) Das große Sicherheitsloch Sicherheitslücke bei register_globals = On
12 Weitere Neuerungen Der Quelltext im Überblick register_globals auf Off setzen Ich arbeite mit der „Flag-Variablen“ $login. Nur In diesem Kurs empfehle ich dir dringend, mit bei Kenntnis des richtigen Passworts soll diese abgeschaltetem register_globals zu arbeiten. auf true gesetzt werden. Setze diesen Schalter in der php.ini auf Off. Wie if ($pass == "abc_xyz_123") { machst du das? $login = true; } Dummerweise habe ich diese Variable im Bei- spiel am Anfang nicht mit false initialisiert. 1. Prüfe zuerst, wo deine php.ini liegt. Durch diese kleine Code-Schlamperei kann ein Denn XAMPP nutzt nicht den Pfad Angreifer ganz leicht ohne Kenntnis des Pass- C:\Windows, sondern verwendet wortes eintreten. Wie? einen abweichenden Speicherplatz. Sie oder er muss einfach nur ?login=true oder 2. XAMPP nutzt im Beispiel den Pfad ?login=1 an die URL anhängen. Denn eine 1 C:\xampplite\apache\bin\php.ini. Stoppe steht für true. Schon wird die Variable $login auf XAMPP und rufe diese php.ini auf. true geschaltet und das „Tor“ zum geheimen Be- 3. Suche die Zeile register_globals = On (es reich steht sperrangelweit offen. darf kein Semikolon davor stehen, ein Semi- Probiere es aus: Rufe die Datei unsicher.php auf, kolon gilt als Kommentarzeichen). indem du tippst: unsicher.php?login=1! 4. Ersetze On durch Off und speichere die Ini- Datei. 5. Starte XAMPP erneut und überprüfe die Konfigurationseinstellung. Probiere den Login-Trick erneut. Er klappt nicht mehr – die Sicherheitslücke ist geschlossen! Weitere Neuerungen Da wurde nun schon seit 2003 ein riesiges Ge- Nachschlüssel: Ohne Passwortkenntnis eintreten! wese um PHP 5 gemacht. PHP 5-Bücher er- schienen lange bevor es PHP 5 gab. Dramatisch, findest du nicht auch? Die verbesserten (aber nicht unbedingt ausrei- Die Arrays $_POST und $_GET chenden) Fähigkeiten in Hinblick auf objektori- Dieses Sicherheitsproblem haben auch die Ma- entierte Programmierung sind aber nur für wirk- cher von PHP erkannt und mit Einführung von liche Könner interessant. PHP ist eine Skript- PHP 4.1 gelöst. Es gilt: sprache. Objektorientiert arbeiten hieße in unse- rem Falle mit Kanonen auf Spatzen zu schießen. • Alle über method="post" versendeten For- Und da die meisten Dienstleister bei den Versio- mulardaten sind im Array $_POST gespei- nen sowieso um Monate oder Jahre hinterher- chert. hinken, wäre ich hier erst einmal vorsichtig. • Die per method="get" erhältlichen Daten da- gegen im Array $_GET. Dazu gehören auch Die für den Programmieranfänger wirklich inte- die an die URL gehängten Parameter. ressanten Neuerungen steckten dagegen in PHP 4.1! Denn mit dieser Version wurden neben den Wenn du den Wert des URL-Anhangs „?log- schon erwähnten Arrays $_POST und $_GET in=true“ erfassen möchest, gelingt das nur noch auch weitere assoziative Arrays eingeführt: über: $_GET['login']. $_COOKIE Nur das ist also die Variante, die höchste Sicher- Dieses Array enthält alle Cookie-Variablen. Mit heit bietet! $_COOKIE['besuch'] ermittelst du z. B. den Und nun schalte bitte register_globals auf Off! Wert des Cookies besuch.. Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Übungsteil A zur neuen Syntax 13 $_REQUEST Übungsteil A zur neuen Syntax Dieses Array spielt eine Sonderrolle. Es enthält Übung macht den Meister, deshalb folgen nun alle Werte aus $_POST, $_GET und $_COOKIE. ein paar „Excerzisen“! Das ist dann praktisch, wenn dein Skript sowohl Daten empfängt, die zum einen aus einem For- Übung 1: Servervariable mular stammen, zum anderen aber auch über ei- Baue die eben besprochene Servervariable nen URL-Parameter von der vorigen Webseite $_SERVER['PHP_SELF'] in die Datei unsi- übergeben werden. cher.php ein und ersetze die Variable $pass Du kannst also den Wert aus dem Formularfeld durch die entsprechende $_POST-Variante. Mei- ne Lösung findest du in der Datei unsicher2.php. in jedem Fall auffangen, egal ob du das Formu- Übung 2: Vergleich im Quelltext lar mit method="post" oder method="get" Vergleiche beide Varianten miteinander; die mit abgeschickt hattest. der direkten Angabe des Dateinamens und die Ich bin bei der Verwendung von $_REQUEST mit der Servervariablen. Schaue dir den Quell- jedoch vorsichtig, da es die Bemühungen um text der vom Webserver generierten Seite an. mehr „Ordnung“ ein wenig einschränkt. Damit wird die eben als vorteilhaft herausgearbeitete eindeutige Trennung wieder aufgehoben – zu- mindest teilweise. Mit diesen neuen Variablen entfallen übrigens auch die bis PHP-Version 4.1 gültigen sperrigen Der Webserver sendet stets eine HTML-Datei an den Browser – PHP-Befehle suchst du vergeblich! und langen Array-Bezeichnungen: Welchen Unterschied stellst du fest? $HTTP_POST_VARS Übung 3: Variable initialisieren $HTTP_GET_VARS Bügle meine kleine Programmierschlamperei $HTTP_COOKIE_VARS aus dem „Unsicher-Beispiel“ aus. Sorge dafür, Gewöhne dich an $_POST, $_GET und dass auch bei eingeschalteten register_globals $_COOKIE! kein Hintertürchen für den Angreifer offen bleibt! Die Lösung zeige ich dir in der Datei un- Neu sind auch die Array-Variablen $_SERVER, sicher3.php. $_ENV und $_SESSION. Dabei ist $_ENV für Umgebungsvariablen und $_SESSION für das Alle Download-Dateien liegen auf der De- Session-Management verantwortlich. Die Sessi- tailseite für dieses Heft. Surfe zu ons schauen wir uns in einem 3. PHP-Heft an! www.knowware.de/?book=phpmysql und Versprochen! lade das Archiv phpkurs_teil2.zip herunter. Die Variable $_SERVER Formular-Know-how für Fortgeschrittene Am interessantesten ist sicher die Array-Variable Auch wenn sich viele Leser immer wieder eine $_SERVER. Denn sie enthält alle Servervariab- Neuauflage von „PHP für Einsteiger“ wünschen: len, also alle die Variablen, die der Webserver So veraltet ist die 2. Ausgabe von 2003 über- übergibt. Und der übergibt so allerhand, wie du haupt noch nicht! Denn über die neue Syntax mit der Funktion phpinfo() erkennen kannst. Uns und die Arrays $_POST und $_GET hatte ich interessieren vor allem Dateiname und Pfad! dich schon ab S. 42 aufgeklärt. Erinnerst du dich an die Beispiele aus dem Ein- steigerheft (bis 2. Auflage)? Wenn du dort Pfad Dort findest du sogar ein Beispiel, das die Unter- und Dateinamen ermitteln wolltest, schriebst du schiede zwischen alter und neuer Syntax zeigt. $PHP_SELF. Nach der neuen Syntax jedoch Solltest du also stolze Besitzerin bzw. stolzer greifst du per $_SERVER['PHP_SELF'] auf die- Besitzer dieses Titels sein, lies das entsprechen- sen Wert zurück. de Kapitel bitte noch einmal gründlich durch! Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
14 Guter Code = lesbarer Code Einrückungen nach PEAR: Guter Code im Zeichen der Birne Neulich fragte mich ein Leser, warum ich denn Guter Code = lesbarer Code nicht nach PEAR eingerückt hätte. Wonach? Soviel schon vorweg: Dem PHP-Parser (also Nach PEAR, der Birne? Es handelte sich keines- deinem Webserver mit PHP, der den Code inter- falls um einen späten Verehrer von Altbundes- pretiert) ist es im Prinzip egal, wie du deinen kanzler Kohl: Mein freundlicher Feedback- Code schreibst. Alles untereinander oder neben- Schreiber meinte den PEAR-Coding-Standard einander? Gequetscht auf eine einzige lange Zei- für Einrückungen und wollte wissen, warum ich le? Solange du die Semikolons am „Zeilenende“ den ignoriert hätte. nicht vergisst und keine anderen Programmier- Exkurs: PEAR fehler machst, ist das statthaft. Die Frage ist, ob du durch derart schlecht gegliederten Code selber noch durchblickst! Ich empfehle dir, deinen Code zu gliedern. Da- für steht dir ein großes Repertoire an „white spaces“ zur Verfügung, z. B. Leerzeichen, Tabsprüngen oder Leerzeilen. PHP stört das nicht, der Parser ignoriert diese Hinter PEAR verbirgt sich das „PHP Extension Zeichen. Und da diese zusätzlichen Leerräume and Application Repository“, eine riesige Biblio- auch die Performance (Ausführgeschwindigkeit) thek von PHP-Erweiterungen und Anwendun- nur geringfügig beeinträchtigen, kannst du diese gen, die du dir herunterladen und nutzen kannst. Weißräume schamlos nutzen. Derzeit (Sommer 2004) existieren über 250 ver- Warum bin ich eigentlich so ein Einrückmuffel? schiedene Programm-Pakete, auch als „Packa- Der Grund ist einfach: Seit Jahren programmiere ges“ bezeichnet, und zwar von A wie Authenti- ich zum größten Teil für Zeitschriftenbeiträge fizierung bis X wie XML. Eine Übersicht findest und musste mir dafür eine ganz eigene Schreib- du auf http://pear.php.net, bei manchen PHP- weise angewöhnen – ohne Einrückungen. Denn Distributionen (nicht bei XAMPP Lite) ist die Einrückungen gingen beim Satz in den engen PEAR gleich mit dabei. Spalten entweder kaputt oder wurden falsch um- brochen. Wo doch oft noch nicht einmal die ge- Aber darauf wollte ich nicht hinaus, denn für raden "Gänsefüßchen" im Quellcode überleben! Programmier-Analphabeten wie mich war die erste Beschäftigung mit PEAR sehr frustrierend. Mein Motto lautete daher stets: Hier empfängt dich eine „geballte Ladung“ Eng- • viel mit Kommentaren zu arbeiten und lisch, gepaart mit „heavy Tech-Talk“ und ehe ick • zusätzlich durch leere Zeilen gliedern. Dusselkopp da durchjestiegen bin, programmia Doch nun schreite ich mit gutem Beispiel voran ick mia den Dreck lieba alleene. Und auch dir und kodiere „im Zeichen der Birne“. Da ich bei empfehle ich, erst die Grundlagen zu trainieren, diesem Heft auch das Layout übernommen habe, ehe du die Höhen von API und CVS* erklimmst. geht der Umbruch garantiert nicht kaputt! (*Keine Ahnung, was das genau ist.) Aber ein wenig habe ich doch begriffen: Wer zur PEAR-Bibliothek etwas beisteuern möchte, muss sich an einheitliche Programmierstandards halten, z. B. in Bezug auf Einrückungen und das Setzen von Leerzeichen. Hinter den PEAR-Coding-Standards verber- gen sich also strenge Regeln für das Schreiben von gut lesbarem Code. Der Code-Knigge im Handbuch von PEAR, downloadbar auf http://pear.php.net, allerdings schwer verdaulich Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Wo setzt du Leerzeichen? 15 Wo setzt du Leerzeichen? Einrückungen mit vier Leerzeichen Schauen wir uns zuerst an, wo du zusätzliche Und wo solltest du den Code nun einrücken? Bei Leerzeichen einfügen solltest! Kontrollstrukturen wie if oder switch. Und bei Zuweisungsoperator Schleifen wie while, for, do while oder foreach. Setze je ein Leerzeichen vor und nach einem Dabei wird der Code innerhalb eines ge- Zuweisungsoperator: schweiften Klammernpaares um je vier $login = true; Leerzeichen eingerückt. Du nimmst mehrere Variablenzuweisungen un- if ($pass == "abc_xyz_123") { tereinander vor, z. B. am Anfang eines Skripts? $login = true; Dann kannst du auch mehrere Leerzeichen set- } zen, um alle Gleichheitszeichen ordentlich un- tereinander auszurichten. oder $lange_variable = "Teststring"; for ($i = 0; $i < $max; $i++) { $kurz = 12; echo "Tue was"; } $noch_eine = true Bei einer switch-Fallunterscheidung jedoch sieht Du kannst es so machen, musst es aber nicht. die Einrückung folgendermaßen aus, zusätzlich Vergleichsoperatoren setzt du nach jedem break eine Leerzeile: Platziere auch je ein Leerzeichen vor und nach switch (Bedingung) { einem Vergleichsoperator, z.B. in Kontrollstruk- Fall 1: turen. Schau dir dafür noch einmal unser erstes action1; Code-Beispiel an: break; if ($pass == "abc_xyz_123") { Fall 2: In diesem Beispiel steckt auch gleich die nächste action2; Regel: break; Kontrollstrukturen und Schleifen default: Setze ein Leerzeichen bei Kontrollstrukturen wie defaultaction; if und switch oder bei Schleifen mit for bzw. break; while. Platziere es nach dem Schlüsselwort und vor der öffnenden runden Klammer. } if ($pass == "abc_xyz_123") { Das Schöne an dieser Einrückgeschichte: Du Wo setzt du kein Leerzeichen? kommst nicht mehr mit den öffnenden und Wo setzt du nun kein Leerzeichen? schließenden geschweiften Klammern durchein- ander. Du erkennst ineinander verschachtelte Funktionsaufrufe Strukturen prima durch die entsprechende Ein- Du willst eine Funktion aufrufen bzw. definie- rückung. Dadurch findest du z. B. die passende ren? Dann folgt zwischen Funktionsnamen und schließende Klammer ganz leicht. rundem Klammernpaar kein Leerzeichen: setcookie("besuch", "ja") Geschweifte Klammern setzen Damit unterscheidest du Funktionen von Kon- Apropos geschweifte Klammern: Die „PEAR- trollstrukturen und zeigst, dass Funktionsname Leute“ empfehlen die Klammerung, die ich dir und Argument(e) dicht zueinander gehören. auch schon in „PHP für Einsteiger“ gezeigt habe und in diesem Heft natürlich weiterhin propagie- Mehrere Argumente jedoch sollten durch ein re. Und sie ermuntern dich, stets Klammern zu Leerzeichen voneinander abgerückt werden. setzen, auch wenn du sie weglassen könntest. Setze also nach dem Komma je ein Leerzeichen. (Aber da ich dir solche „klammerfreien“ Fälle setcookie("besuch", "ja") nie empfohlen hatte, spielt das keine Rolle.) Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
16 Freeware-Variante PHPEdit 0.8 PHPEdit – PHP-Editor der Superlative Jawoll, ich gestehe: Ich bin ein bekennender Code automatisch verschönern Weaverslave-Freak. Schon in Ausgabe 1 und 2 Doch die herrliche Code-Verschönerungs- von „PHP für Einsteiger“ habe ich dir von die- funktion entschädigt für die Mühe. sem tollen Programm vorgeschwärmt. Für die fünfte komplette Neuausgabe von „Homepages 1. Rufe ein vorhandenes PHP-Dokument auf. für Einsteiger“ konnte ich sogar einen kleinen 2. Wähle TOOLS|CODE BEAUTIFIER|BEAUTIFY Weaverslave-Workshop verfassen. CURRENT DOCUMENT. Der Weberknecht von Thomas Weinert 3. Beim ersten Aufruf musst du einen Namen (www.weaverslave.ws) ist und bleibt mein Favo- für ein Profil vergeben und die Voreinstel- rit für PHP, HTML, JavaScript und XML! Das lung abnicken. Programm ist einfach Klasse, nicht nur wegen Hier kannst du im Prinzip die Voreinstellun- der tollen Code-Farbhervorhebung! Das Beste: gen übernehmen. PHPEdit nutzt automatisch Der Weaverslave ist nach wie vor Freeware! den Einrückungs-Standard nach PEAR. Le- diglich die Einrückung nach switch ist „zu- Aber der Mensch ist ja bekanntlich nie zufrie- viel des Guten“. Das Entfernen des Häk- den. Ich war auf der Suche nach einem Editor chens vor Space after switch zeigte aller- mit „Beautifying-Funktion“; also einer automa- dings keine Wirkung tischen Code-Verschönerungs- und Einrückau- tomatik. Und irgendwann wurde ich fündig: Zum einen gibt es Zend Studio, www.zend.com. Für 249,- Dollar, muss man fairerweise hinzufü- gen. Wenn du magst, kannst du eine Probeversi- on herunterladen und 30 Tage lang testen. Um einiges preisgünstiger ist da schon PHPEdit von Sébastien Hordeaux. Auch Sébastiens Tool 4. Nach Aufruf des Befehls wird dein Code wie darfst du 30 Tage lang testen: www.phpedit.com, von Geisterhand ordentlich ausgerichtet. für kommerzielle Nutzung musst du eine Lizenz für 75,- Euro erwerben, die „private Edition“ ist Übungsteil B zur Codeeinrückung kostenfrei. Wenn du auch mit einer älteren Ver- Nun folgen ein paar Übungen zum Thema sion zufrieden bist, suche doch mal nach der … „schönerer Code“. Freeware-Variante PHPEdit 0.8 Übung 1: PEAR-Manual lesen Du findest diese Ausgabe z. B. auf der Seite Surfe zu http://pear.php.net und lade dir das www.soft-ware.net – fahnde dort nach PHPEdit. PEAR-Manual im HTML-Help-Format herunter. Lies den Abschnitt zur Codeeinrückung. Übung 2: Datei von Hand einrücken Nimm eine Beispieldatei zum Thema Schleifen, z. B. aus Kapitel 7 in Einsteigerheft. Formatiere PHPEdit in der Freeware-Version den Quellcode so, dass er den Richtlinien von Du hast den Download gefunden? Beachte, dass PEAR entspricht, rücke die Passagen ein – setze der Download evtl. nur den Webinstaller enthält. dafür die entsprechenden Leerzeichen. Während der Installation musst du online blei- Übung 3: Einrücken mit PHPEdit ben und unzählige Module nachinstallieren. PHPEdit erlaubt dir, so viele Dokumente zu öff- Geduld, das hat bei meinen Tests sehr lange nen, wie du willst. Finde den Befehl, mit dem du gedauert! alle gleichzeitig automatisch einrücken kannst. Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Der Trick mit den Arrays 17 Notationstricks, mit denen PHP wieder Spaß macht! Darf ich dir etwas gestehen? In der Schule galt Ausgegeben wird nicht der Inhalt der Variablen, ich früher als Sonderling. Statt zur Schuldisko sondern der String $_POST['Vorname']. Dabei ging ich zum Musikunterricht und statt für Fuß- nützt es auch nichts, wenn du die Regel beher- ball interessierte ich mich für Architektur, Lite- zigst, bei der Verschachtelung von Gänsefüß- ratur und Fotografie. Wenn alle übereinstim- chen nur ungleiche Gänsefüßchen zu verwen- mend der Meinung waren, dass nur A richtig den. sein konnte, suchte ich hartnäckig nach einer Al- Ich habe für den Array-Schlüssel also bewusst ternative, die B oder C hieß und im Endeffekt einfache Gänsefüßchen und nur außen die dop- auch ganz prima funktionierte. pelten verwendet. Doch das hilft alles nichts. Es So ähnlich fühlte ich mich bei PHP, z.B. bei die- muss offenbar verkettet werden! ser „register_globals = Off“-Geschichte und der echo "Hi " . $_POST['Vorname'] . neuen Syntax. Ich konnte mich einfach nicht "!"; damit abfinden, dass die Notation durch diese Wie umständlich! Denn gerade bei umfangrei- $_POST-, $_GET- oder $_REQUEST-Arrays chen Auswertungen mit vielen Variablen wird es nun um so vieles komplizierter werden würde. dadurch schnell unübersichtlich und kompliziert. Ich zeige dir ein paar Tipps, die ich durch Pro- Der Trick lautet: bieren und Recherchieren herausgefunden habe. In Einsteiger-Büchern oder Musterskripten aus Lasse die normalerweise üblichen Gänse- dem Internet wirst du sie selten finden – da über- füßchen um den Array-Key herum weg. wiegt meist die „komplizierte“ Schreibweise. Das sieht dann so aus: Aber meine Tricks sind, soweit ich das beurtei- echo "Hi $_POST[Vorname]!"; len kann, zulässig und vor allem – sie funktio- Diese Gänsefüßchen-freie Schreibweise ist im- nieren ganz wunderbar! Sie produzieren auch mer dann möglich, wenn sich die Array-Variable keine Fehlermeldungen. selber innerhalb eines doppelten Gänsefüßchen- Apropos Fehlermeldungen! Zwei Seiten Paars befindet. In allen anderen Fällen musst du weiter hinten schalten wir ein „strenges“ den Key je nach Geschmack stets mit einfachen Fehlermanagement ein! bzw. doppelten Gänsefüßchen umkleiden. Und zwar so, wie ich es z.B. bei $_POST['Vorname'] Der Trick mit den Arrays gezeigt habe. Auf den ersten Blick wird die Schreibweise Es macht übrigens auch einen Unterschied, ob durch diese neue „Array-Syntax“ verkompli- eine Passage hinter echo in einfachen oder dop- ziert. So konntest du folgendes Formularfeld pelten Gänsefüßchen steht! Denn nur bei Ver- wendung der doppelten werden Variablen inner- im PHP-Code nach der alten Schreibung sehr halb dieser Passage als Variablen interpretiert. unkompliziert auslesen und weiterverarbeiten: echo "Hi $Vorname!"; Ein zweiter Trick mit den Arrays Das Verketten des umgebenden Strings mit der Es gibt noch einen weiteren Trick: Platziere die Variablen war nicht nötig. Die Idylle war per- Variable innerhalb von geschweiften Klammern. fekt: Text, HTML-Tags und Variable friedlich Dann kannst du für den Key weiterhin die einfa- vereint innerhalb eines einzigen Gänsefüßchen- chen oder doppelten Gänsefüßchen verwenden: Paars! echo "Hi {$_POST['Vorname']}!"; Nach der neuen Syntax geht das leider offenbar Im Heft werden wir stets eine dieser Schreibwei- nicht mehr so leicht. Versuche doch einmal das sen verwenden, und zwar nicht nur bei $_POST, hier und du wirst dich wundern: $_GET oder $_REQUEST, sondern auch bei an- echo "Hi $_POST['Vorname']!"; deren Arrays. Hanke: „PHP u. MySQL a. d. Homepage“: Probeseiten von www.knowware.de
Sie können auch lesen