php 5 mysql - gbv

17
Das große Buch PHP 5 & MySQL Elena Hirte Daniel Koch Jens und Dieter Ferner GBR DATA BECKER

Upload: others

Post on 21-Jan-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Das große Buch

PHP 5&

MySQLElena HirteDaniel Koch

Jens und Dieter Ferner GBR

DATA BECKER

Inhalt

1« Einleitung 21

1.1 Wie unterscheidet sich PHP von anderen Sprachen? 22

1.2 Neuerungen von PHP 5 gegenüber PHP 4 23

1.3 Bedeutung von Zend 24

1.4 Informationen zur GPL 25

1.5 Editoren zur Arbeit mit PHP 26

2 * Einrichten und Installieren derEntwicklungsumgebung 29

2.1 Zusammenspiel von Webserver und PHP 30

2.2 Installation von Apache und PHP unter Linux 30

2.3 Installation von Apache und PHP unter Windows 31

PHP installieren 33

2.4 Installation von IIS & PHP unter Windows 34

2.5 Konfiguration von Webserver und PHP 35

2.6 Testen und Einsehen der Konfiguration mit phpinfo() 36

Die Datei php.ini 37

2.7 Installation von MySQL 42

2.8 Bedienung von MySQL 43

2.9 Tools unter Windows 45

phpMyAdmin 45MySQL-Front 47MicroWeb - PHP auf CD-ROM 48

2.10 One-Click-Installationspakete für Windows 49

EasyPHP 49Andere Installations-Pakete 51

3« Einstieg in die PHP-Programmierung 53

3.1 PHP & HTML 54

3.2 PHP & JavaScript 55

3.3 Sprachelemente & Syntax 56

3.4 Definieren und Nutzen von Konstanten und Var iablen .... 57Die Daten-Typen 58Variable Variablen 59Konstanten 60Operatoren & Ausdrücke 61

3.5 Eigene Funktionen programmieren 62

3.6 Bedingungen & Schleifen 66if 66switch 67for ...'. 68

while 69exit -- 70

3.7 Referenzen 70

3.8 Arrays und ihre Funktionen 71Mehrdimensionale Arrays 73Konvertieren von Arrays 73Arbeiten mit zwei Arrays 74Arrays nach Elementen durchsuchen 75Sortieren von Arrays 75Durchlaufen von Arrays 75

3.9 Reguläre Ausdrücke 76

3.10 Fehler in PHP-Skripten 79Fehler durch Safe Mode 81

4« Grundlegende Funktionen 83

4.1 Funktionen rund um Zeichenketten 84Analyse-Funktionen 84Bearbeitungsfunktionen 85Vergleichsfunktionen 98Ausgabefunktionen 101Zeichenfunktionen 104

4.2 Mathematische Funktionen 105Berechnungsfunktionen 105Trigonometrische Funktionen 109Konvertierungsfunktionen 111Zufallsgeneratoren 114Formatfunktionen 116

4.3 Datum und Uhrzeit 118Datum- und Uhrzeit-Funktionen 118Kalenderfunktionen 128

4.4 HTTP-Funktionen 129

5* Dateien und Verzeichnisse 133

5.1 Zugriff auf Dateisystem 134Datei- und Dateisystem-Analyse 134Zugriff auf Dateieigenschaften 137Ändern der Eigenschaften der Dateien 142Dateien manipulieren 144

5.2 Lesen und Schreiben 145Dateien öffnen 145

Schreiben in die Datei 147Schließen einer Datei 149Lesen aus einer Datei 150Navigation innerhalb der Datei 156Verriegelung einer Datei 157

5.3 Arbeiten mit Verzeichnissen 158Erstellen, Navigieren und Löschen 158Öffnen, Lesen, Schließen 160

5.4 Sicherheit gewährleisten 162

6* Interaktive Webseiten 163

6.1 HTML-Elemente zur Formulargestaltung 164

6.2 HTML-Formulare und PHP 171

6.3 Datenübergabe mit dem Query-String 179

7 . Sessions und Cookies 183

7.1 Vorzüge der Speicherung von Daten 184

7.2 Setzen und Lesen von Cookies 184Setzen von Cookies 185Cookies wieder auslesen 187

7.3 Wie arbeiten Sessions? 189

7.4 Variablen in Sitzungen speichern und lesen 190Grundlegendes zur Arbeit mit Sessions 190

Funktionen zur Arbeit mit Variablen in Sessions 192Sitzungsdaten speichern 193Einstellungen in der php.ini 194

7.5 Login-Funktion 194

7.6 Cookies, Datenschutz - P3P und Browserprobleme 196Browser und Cookies 196Datenschutz und die eigene Homepage 198P3P •. 199

8 * MySQL-Anwendungen mit PHP 205

8.1 Schnellübersicht über SQL 206Schreibweisen und Namenskonventionen 207

Datentypen 208

8.2 Der MySQL-Monitor 210Datenbanken und Tabellen 210

Tabellenstruktur ändern 213Mit Datenbanken arbeiten 216Erweiterte Bedingungen mit WHERE 222

8.3 PHP und MySQL 222Verbindung zur Datenbank herstellen 223Datensätze auswählen 224Abfragen verfeinern 226Neue Datensätze erzeugen 227Vorhandene Datensätze in Formularen anzeigen 229Datensätze ändern 230Datensätze löschen 230

8.4 MySQL-Funktionen in PHP 231Anzahl der betroffenen Reihen (mysql_affected_rows) 231Benutzer wechseln (mysql_change_user) 232Standard-Zeichensatz (mysql_client_encoding) 232

Verbindung schließen (mysql_close) 233Verbindung herstellen (mysql_connect) 233Datenbank erzeugen (mysql_create_db) 234Datensatz-Zeiger bewegen (mysql_data_seek) 234Anfrage an Datenbank (mysql_db_query) 235Datenbanken löschen (mysql_drop_db) 235Fehlernummern anzeigen (mysql_errno) 236Fehlermeldungen ausgeben (mysql_error) 237Datensätze als assoziativer Array (mysql_fetch_array) 237

Objekt mit Feldinformationen (mysql_fetch_field) 238

Zeichen markieren (mysql_escape_string) 239

Datensatz als assoziativen Array (mysql_fetch_assoc) 239Länge eines Feldes (mysql_fetch_lengths) 240Objekt mit Eigenschaften (mysql_fetch_object) 241Datensätze als assoziative Arrays (mysql_fetch_row) 241Feldoptionen ermitteln (mysql_field_flags) 242Feldlänge ermitteln (mysql_field_len) 242Feldnamen ermitteln (mysql_field_name) 243Feld-Zeiger bewegen (mysql_field_seek) 243Tabellennamen ermitteln (mysql_field_table) 243Feldtyp ermitteln (mysql_field_type) : 244

• Speicher freigeben (mysql_free_result) 244Version der Clientbibliothek (mysql_get_client_info) 245Hostinformationen (mysql_get_host_info) 245Protokollversion ermitteln (mysql_get_proto_info) 245Serverversion ermitteln (mysql_get_server_info) 246

ID einfügen (mysql_insert_id) 246Datenbanken anzeigen (mysql_list_dbs) 246Ergebnisfelder auflisten (mysqljistjields) 247Ergebniskennung anzeigen (mysql_list_process) 247Tabellen anzeigen (mysql_list_tables) 248

Anzahl der Felder (mysql_num_fields) 248Anzahl der Datensätze (mysql_num_rows) 249Persistente Verbindung herstellen (mysqLpconnect) 249SQL-Statement senden (mysqLquery) 250Feldinhalt anzeigen (mysql_result) " 250Datenbank auswählen (mysql_select_db) 251Tabellenname anzeigen (mysql_tablename) 251Thread-ID ermitteln (mysql_thread_id) 252

8.5 Workshop: Umfrage und Bewertung programmieren 252

8.6 Die Datenbank 253

8.7 Die Zugangsdaten 254

Die CSS-Datei 255

8.8 Umfragen erstellen 255

8.9 Abstimmung 258

8.10 Ergebnisse : 261

Alle Umfragen anzeigen 264

8.11 Workshop: Datenbankbasiertes Gästebuch 266

Die Features des Gästebuches 267Die Datenbank 268Die Zugangsdaten 268Die CSS-Datei 269Den aktuellen Zeitpunkt ermitteln 275

Die Danke-Seite 276Der Admin-Bereich 277

8.12 Workshop: Passwortschutz und Benutzerverwaltungumsetzen 281

Die Features der Zugangskontrolle 282Die Datenbank 282Die Zugangsdaten 283Die Registrierung 283Der Login-Bereich 288Daten prüfen 289

Datenbanken mit SQLite 293

9.1 Das Grundprinzip von Datenbanken 294

Allgemeines zu Datenbanken 294Datenbankbetriebssysteme und Datenbanken 295Aufbau von Datenbanken 295

9.2 Eine Access-Datenbank als Beispiel 296

Tabellen anlegen 297Datentypen in Access 298Datensätze eingeben 299Beziehungen definieren 300

9.3 Einführung in SQLite 301

SQLite 302Tools für SQLite 302SQL-Statements in SQLite 308Datentypen 310Mit SQLite-Datenbanken arbeiten 312

9.4 SQLite und PHP : 318

Mit SQLite-Datenbanken arbeiten 319Wichtige PHP-Funktionen 323Datenbank öffnen (sqlite_open) 323Persistente Verbindung herstellen (sqlite_popen) 324

Datenbank schließen (sqlite_close) 324Datenbankabfrage durchführen (sqlite_query) 325Datenbankabfrage durchführen (sqlite_array_query) 325Wartezeit setzen (sqlite_busy_timeout) 326

Anzahl der geänderten Zeilen (sqlite_changes) 326Spalte aus der aktuellen Zeile holen (sqlite_column) 327Funktionen erzeugen (sqlite_create_function) 327Aktuelle Zeile holen (sqlite_current) 327Fehlercode ermitteln (sqlite_last_error) 328Fehlerbeschreibung (sqlite_error_string) 328String für SQL aufbereiten (sqlite_escape_string) 329

I

Nächste Zeile als Array holen (sqlite_fetch_array) 329Erste Zeile als String (sqlite_fetch_single) , 330Erste Spalte als String (sqlite_fetch_string) 331Feldname ermitteln (sqlite_field_name) 331Liefert zurück, ob noch mehr Zeilen im Ergebnis vorliegen(sqlite_has_more) 331Abfrage durchführen (sqlite_unbuffered_query) 332Nummer der letzten eingefügten Zeile (sqlite_last_insert_rowid) 332Kodierung der verwendeten SQLite-Bibliothek ermitteln

(sqlitejibencoding) 333Version der SQLite-Bibliothek (sqlitejibversion) 333Zur nächsten Zeile springen (sqlite_next) 333

Anzahl der Felder eines Abfrageergebnisses ermitteln(sqlite_num_fields) 334Anzahl der Zeilen eines Abfrageergebnissen ermitteln(sqlite_num_rows) 334Zur ersten Zeile springen (sqlite_rewind) 335Zu einer Zeilennummer springen (sqlite_seek) 335Daten dekodieren (sqlite_udf_decode_binary) 336Daten kodieren (sqlite_udf_encode_binary) 336

9.5 Anwendungsbeispiele für SQLite 336

Counter 336

IP-Sperre 338

1 0 . Datenbankanbindung mit AdoDBund ODBC 345

10.1 Allgemeines zu AdoDB 346

10.2 AdoDB-Grundlagen 347

Der erste Test 347

10.3 Wichtige AdoDB-Funktionen 349

10.4 AdoDB-Anwendungen 350

Daten auslesen 350Daten einfügen 353

Daten exportieren 355Blätterfunktionen leicht gemacht 357Menüs erstellen 358

10.5 ODBC 359

10.6 ODBC-Funktionen von PHP 360

10.7 Workshop: ODBC-Funktionen in der Anwendung 361

Datenbank anlegen 361ODBC-Datenquelle definieren 362

Datensätze auslesen 363Datensätze einfügen 364

1 1 * Grafikprogrammierung 367

11.1 Allgemeines zu den grafischen Funktionen 370

Grafikformate 370Schriftarten 371Farben 372

11.2 Erstellen neuer Bilder 373

Senden eines Headers an den Browser 374

Erstellen einer Leinwand (Bild-Resources) ,375Zuweisen von Farben : 376Zeichnen, Füllen und Schreiben 378Löschen der Bild-Ressource 388

11.3 Arbeit mit vorhandenen Bildern 388

11.4 Workshop: Dynamische Diagramme einsetzen 391

Schritt 1: Lesen der Daten aus einer Textdatei 392Schritt 2: Vorkalkulationen 393

Schritt 3: Zeichnen des Diagramms 394

12« Flash-Programmierung 395

12.1 Erläuterungen zu den Flash-Funktionen und Ming 397

Senden eines Headers an den Browser 399

Erstellen und Konfigurieren eines neuen Flash-Movie-Objekts 399Erzeugen von Flash-Objekten „ 399Hinzufügen der fertigen Objekte zu dem Movie 400Ausgeben der Movies 400

12.2 Ming-Basisklasse: SWFMovie 401

12.3 Arbeiten mit Objekten 403

Erstellung von Formen: Klasse SWFShape() 403Arbeiten mit Texten: SWFText(), SWFTextField(), SWFFont() 407Grafiken einfügen: SWFBitmap() 414Schaltflächen erstellen: SWFButton() 415Filmsequenz erstellen: SWFSprite() 418Anzeige-Objekte: SWFDisplayltem() 420Arbeiten mit Farben: SWFFill(), SWFGradient() 424Formveränderung: SWFMorph() 427Aktionen zuweisen: SWFAction() 428

12.4 Mit Flash Formulare gestalten 434

1 3 * PDF-Funktionen 437

13.1 Allgemeines zu PDF-Dateien 438

13.2 PDF-Dokumente erzeugen 438

Informationen einfügen 439Notizen anzeigen 441

13.3 Texte in PDF-Dateien mit PHP schreiben 441

Text einfügen 441Textgestaltung 443

•Veraltete PDF-Funktionen mit pdf_set_value() ersetzen 444Lesezeichen 446

13.4 Zeichnen in PDF-Dateien 446

Linien zeichnen (pdfj ineto) 447Rechtecke zeichnen (pdf_rect) 448Kreise zeichnen 448Kurven zeichnen 449Farbangaben 450

13.5 Bilder in PDF-Dateien einfügen 451

13.6 Die FPDF-Klasse 452

Ein erstes Beispiel 452Wichtige Funktionen 453Erweiterte Funktionen 456

13.7 Praktisches Beispiel: Briefe online erstellen 458

Die Umsetzung des Briefprojekts 459

1 4 . PEAR 463

14.1 Funktionsweise von PEAR 464

Installation von PEAR 464PEAR-Pakete verwenden 465

14.2 PEAR::DB 466

Unterstützte Datenbanken und Features 466Verbindung zur Datenbank aufnehmen und schließen 467

SQL-Abfragen durchführen 468Vereinfachte Syntax 470Informationen einholen 472Datensätze eindeutig einfügen 474Execute/prepare 474

14.3 PEAR::Mail 475

E-Mails versenden 476E-Mails mit einem Dateianhang versenden : 477

ZZZ-~ ~ _ 1

14.4 XML 478

14.5 XML_SQL2XML 479

Vorbereitungen 479XML-Dateien erzeugen 480Tag-Namen erzeugen 481Arrays hinzufügen 482Mehrere Abfragen gleichzeitig 483

14.6 XMLJree 484Elemente erzeugen 484Elemente löschen 486XML-Dokumente einlesen 487Attribute hinzufügen 489XML-Strukturen als XML-Dateien speichern '. 490Datenbanken auslesen 491

14.7 HTMLJTable 493

Tabellen erzeugen 493Spalten und Reihen hinzufügen 495Tabellenkopf definieren 496

14.8 HTML_Page 498

Seitentitel und Meta-Tags definieren 499Stylesheets und Skripte einbinden 500

1 5 . OOP in PHP 503

15.1 Was bedeutet OOP, welche Vorteile bringt sie? 504

15.2 Programmierkonzepte 505

Vor- und Nachteile der objektorientierten Programmierung 506

15.3 Struktur von OOP in PHP 5 507

Rückgabeverhalten 508

Object Cloning 508Objektdereferenzierung 510Const 510Konstruktoren und Destruktoren 510Final 512Objekte löschen 513Statische Klassenvariablen 513Exeption Handling 514

15.4 Eigene Klassen definieren 514

Hallo, Welt! in OOP 514

15.5 Klassen und Objektfunktionen 516

15.6 Klassen vererben 521

15.7 Eine MySQL-Klasse 522

16« E-Mail-Anwendungen 527

16.1 Allgemeines zu E-Mail-Anwendungen 529

E-Mail unter Unix 530E-Mail unter Windows 531

E-Mail-Status abfragen 531

16.2 E-Mail-Funktion 532

16.3 Die Bibliothek von Heyes '. 536

16.4 Formulare automatisch auslesen 540

16.5 Workshop: ein Newsletter-Skript erstellen 541

1 7 . Entwicklung eines individuellenIntranets 547

17.1 Entwicklung des Konzepts 548

Die Features des Intranets 549

17.2 Die Datenbank 550

Stylesheets 552

17.3 Startseite und Navigation 553

17.4 Mitarbeiterverzeichnis 554

Vorhandene Abteilungen ansehen und neue anlegen 555Eine neue Abteilung anlegen 556Der Mitarbeiterbereich ". 557Einen neuen Mitarbeiter anlegen 560Den Mitarbeiter in die Datenbank eintragen 562Details zu den Mitarbeitern ansehen 563

17.5 To-do-Liste 565

Eine neue Aufgabe definieren 568Die neue Aufgabe speichern 571

Eine Aufgabe löschen 572Den Status einer Aufgabe verändern 573Die Statusänderungen speichern 574Kommentare einfügen 575Kommentare speichern 577Die Kommentare ansehen 578

J

1 8 . Entwicklung eines eigenen CMS 581

18.1 Vorabüberlegungen zum Konzept 582

18.2 Entwurf der Datenbankstruktur 584

Kategorien 584

Artikel 584Die Zugangsdaten 585

18.3 Aufbau eines Administrationssystems 586

Das Frameset 586Stylesheet 586Navigation 587Kategorien ^589Artikel-Navigation 591Einen neuen Artikel eingeben/Artikel bearbeiten 593Artikel speichern 598Artikel administrieren 600Artikel freigeben 603Artikel löschen 605

18.4 Das Webinterface 606

Das Frameset 606Die Navigation 607Artikelvorschau 609Artikel lesen 611

19« Templates in PHP 613

19.1 Grundlegendes zu Templates 614

19.2 FastTemplate 615

Ein erstes Beispiel 616Praktische Anwendung 618Content verteilen 620Tabellen dynamisch erzeugen 622

19.3 Smarty .' 625

Installation 625

Ein erstes Beispiel 626Allgemeine Syntax (für Designer) 627Eingebaute Funktionen 630Eigene Funktionen 631Allgemeine Syntax (für Programmierer) 635Variablen 636Methoden 637Caching 638Workshop: Smarty in der Praxis 640

2 0 . PHP und XML 647

20.1 XML-Grundlagen: Sprachelemente und Syntax 648

20.2 XML-Support in PHP 5 658

20.3 SimpleXML 660

20.4 XSLT 663

Objektbeschreibung: xsltProcessor 666

20.5 DOM API 668

Praktische Beispiele 669Beschreibung von Objekten und Methoden 679

20.6 Simple API für XML (SAX) ! 686

20.7 HTML-Tidy 692

So arbeitet HTML-Tidy 693HTML umwandeln 694Dateien reparieren 695

Dokumente konvertieren 696

2 1 * Parser - Anwendungen mit PHPumsetzen 699

21.1 Parsen als Quelle von Informationen 700

21.2 Bedeutung und Einsatz von RDF/RSS 700

Newsfeeds lesen 701

21.3 Eigene RSS-Dateien erstellen 701

21.4 RDF- und RSS-Dateien auslesen 704

Es geht auch einfacher 705

21.5 RSS und PEAR 707

21.6 Parsen fremder HTML-Seiten 708

Nur Überschriften auslesen 708Nur Meta-Tags auslesen 709Nur den Seitentitel auslesen 710Seiten ohne HTML-Tags auslesen 711Zeilenumbrüche mit PHP ersetzen 712Sonderzeichen umwandeln 714

2 2 . Programmierung eines eigenenWebmailers 715

22.1 Grundlegende POP/IMAP-Funktionen 716

22.2 Entwurf eines Webmailers : 729

22.3 Login 730

22.4 Postfachübersicht 731

22.5 Neue Nachricht erfassen 733

22.6 Detailansicht einer E-Mail 733

22.7 Löschen einer E-Mail 736

22.8 Weiterleiten einer E-Mail 736

22.9 Beantworten einer E-Mail 738

2 3 * Programmierung eines Fotoalbums 739

23.1 Die Features des Fotoalbums 740

23.2 Die Datenbank 741Die Zugangsdaten 742

23.3 Die Seitenstruktur 743Die CSS-Datei 743Die Frameset-Definition 744Die Navigation 745

23.4 Kategorien anlegen 747

23.5 Neue Bilder einfügen 749

23.6 Thumbnails erstellen 753

23.7 Bilder löschen 756

23.8 Bilder ansehen 759

23.9 Details zu den Bildern anzeigen 763

24« Programmierung eines Forums 765

24.1 Entwurf eines Konzepts 766

24.2 Datenbankdesign 767Stylesheets 769Die Zugangsdaten 769

I I

24.3 Neue Foren erstellen 770

24.4 Die Startseite 771

24.5 Einen neuen Beitrag erstellen 773

24.6 Beiträge speichern 775

24.7 Beiträge anzeigen 776

24.8 Auf Beiträge antworten 779

24.9 Antworten speichern 782

24.10 Alle Antworten anzeigen 783

2 5 * Suchmaschinen-Optimierung 787

25.1 Warum überhaupt optimieren? 788

25.2 Unfein: Spam-Methoden 789

Keyword-Tagging 789Unsichtbarer Text 790

Doorway-Pages 790

25.3 Im Zwielicht: Cloaking 791

25.4 Pagerank & Co 793

25.5 Überschätzte Meta-Tags 793Allgemeine Meta-Tags 794Seitenspezifische Meta-Tags 794

25.6 Unterschätzter Seitentitel 795

25.7 Vergessene Image- und Link-Titel 795

25.8 Die Robots.txt 795

25.9 Professionelle Ideen mit mod_rewrite 796

Mod_rewrite-Voraussetzungen 797Der Zusammenhang: .htaccess 797Automatisiert ersetzen 798

25.10 Automatische Seitenanmeldung mit PHP-Skripten 798

25.11 Suchmaschinen - Übersicht 799

Suchmaschinen 800Die wichtigen Verzeichnisse 800

25.12 Links zur Suchmaschinen-Optimierung 801

Anhang 803

Vordefinierte Variablen 803

HTTP Statuscodes 805

Reservierte Wörter in PHP 808

Apache- & PHP-Installations-FAQ 809

Sourceforge 810

Die GPL 812

Impressumpflicht 814

Die Apache-Konfiguration 817

Section 1: Global Environment 817Section 2: Main Server configuration 818Section 3: Virtual Hosts 820Den Apache testen mit ab 821

Schnelleinstieg: eigener Server & Putty 821

Putty schnell einsetzen 823Putty konfigurieren 825Window 826Sessions speichern und laden 827

Quicksyntax 827

Stichwortverzeichnis 843