PHP UND MYSQL AUF DER HOMEPAGE - ISBN 87-91364-36-1 VON JOHANN-CHRISTIAN HANKE 64 SEITEN FÜR 4,40 EURO

Die Seite wird erstellt Thorben Wittmann
 
WEITER LESEN
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