PHP5 and Bible Tim Converse and Joyce Park with Clark Morgan... PHP5 and Bible Tim Converse and Joyce Park with Clark Morgan... ✦ PHP5’s completely reworked XML support, built around lib
Trang 2PHP5 and
Bible Tim Converse and Joyce Park
with Clark Morgan
Trang 4PHP5 and
Bible
Trang 6PHP5 and
Bible Tim Converse and Joyce Park
with Clark Morgan
Trang 7LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND THE AUTHOR MAKE NO REPRESENTATIONS
OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE CONTENTS OF THIS WORK AND SPECIFICALLY DISCLAIM ALL WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE NO WARRANTY MAY BE CREATED OR EXTENDED BY SALES OR PROMOTIONAL MATERIALS THE ADVICE AND STRATEGIES CONTAINED HEREIN MAY NOT BE SUITABLE FOR EVERY SITUATION THIS WORK IS SOLD WITH THE UNDERSTANDING THAT THE PUBLISHER IS NOT ENGAGED IN RENDERING LEGAL, ACCOUNTING,
OR OTHER PROFESSIONAL SERVICES IF PROFESSIONAL ASSISTANCE IS REQUIRED, THE SERVICES OF A COMPETENT PROFESSIONAL PERSON SHOULD BE SOUGHT NEITHER THE PUBLISHER NOR THE AUTHOR SHALL BE LIABLE FOR DAMAGES ARISING HEREFROM THE FACT THAT AN ORGANIZATION OR WEBSITE IS REFERRED TO IN THIS WORK AS A CITATION AND/OR A POTENTIAL SOURCE OF FURTHER INFORMATION DOES NOT MEAN THAT THE AUTHOR OR THE PUBLISHER ENDORSES THE INFORMATION THE ORGANIZATION OR WEBSITE MAY PROVIDE
OR RECOMMENDATIONS IT MAY MAKE FURTHER, READERS SHOULD BE AWARE THAT INTERNET WEBSITES LISTED
IN THIS WORK MAY HAVE CHANGED OR DISAPPEARED BETWEEN WHEN THIS WORK WAS WRITTEN AND WHEN IT
Copyright © 2004 by Wiley Publishing, Inc., Indianapolis, Indiana
Published simultaneously in Canada
For general information on our other products and services or to obtain technical support, please contact our CustomerCare Department within the U.S at (800) 762-2974, outside the U.S at (317) 572-3993 or fax (317) 572-4002
Wiley also publishes its books in a variety of electronic formats Some content that appears in print may not be available inelectronic books
Library of Congress Control Number: 2004103176
Trademarks: Wiley, the Wiley logo, and related trade dress are trademarks or registered trademarks of John Wiley & Sons,
Inc and/or its affiliates, in the United States and other countries, and may not be used without written permission MySQL
is a registered trademark of MySQL AB Limited Company All other trademarks are the property of their respective owners.Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book
Trang 8About the Authors
Tim Converse has written software to recommend neckties, answer questions about space
stations, pick value stocks, and make simulated breakfast He has an M.S in ComputerScience from the University of Chicago, where he taught several programming classes He isnow an engineering manager in the Web search group at Yahoo!
Joyce Park has an M.A in history from the University of Chicago, and has worked for several
Silicon Valley startups including Epinions, KnowNow, and Friendster She is a co-lead of theMod-pubsub Open Source project
Clark Morgan is a Web application and educational software developer with more than five
years’ experience writing PHP He works primarily with medical clients and related nesses Originally from Boston, he now lives and works in Jacksonville, Florida, with his wifeand two children Clark spends entirely too much of his free time reading other people’s com-puter books
Trang 9Copy Editor
C M Jones
Editorial Manager
Mary Beth Wakefield
Vice President & Executive Group Publisher
Quality Control Technician
Laura Albert Carl William Pierce
Permissions Editor
Carmen Krikorian
Media Development Specialist
Angela Denny
Proofreading and Indexing
TECHBOOKS Production Services
Trang 10To our parents: For their love, for their sacrifices, and for letting us read a lot when we were kids.
— Tim Converse and Joyce Park
This, my first serious writing effort, is for my lifelong friend Bob, who pointed me in this direction nearly ten years ago and then had the nerve to suggest I write about it.
— Clark Morgan
Trang 12Welcome to PHP5 and MySQL Bible!
Although we’re biased, we believe that the PHP Web-scripting language is the hands-down ner in its niche — by far the easiest and most flexible server-side tool for getting great Web
win-sites up and running in a hurry Although millions of Web programmers worldwide could be
wrong, in this particular case, they’re not MySQL is the most popular open-source databaseplatform, and it is the first choice of many for creating database-backed PHP-driven Web sites
As we write this, PHP5 is in its third beta version, and PHP has continued to grow in reach,adoption, and features since we wrote the first two versions of this book
What Is PHP?
PHP is an open-source, server-side, HTML-embedded Web-scripting language that is ble with all the major Web servers (most notably Apache) PHP enables you to embed codefragments in normal HTML pages — code that is interpreted as your pages are served up tousers PHP also serves as a “glue” language, making it easy to connect your Web pages toserver-side databases
compati-Why PHP?
We devote nearly all of Chapter 1 to this question The short answer is that it’s free, it’s opensource, it’s full featured, it’s cross-platform, it’s stable, it’s fast, it’s clearly designed, it’s easy
to learn, and it plays well with others
What’s New in This Edition?
Although this book has a new title, it is in some sense a third edition Previous versions were:
✦ PHP 4 Bible Published in August 2000, covering PHP through version 4.0.
✦ PHP Bible, Second Edition Published in September 2002, a significantly expanded
ver-sion of the first edition, current through PHP 4.2
Our initial plan for this book was to simply reorganize the second edition and bring it up
to date with PHP5 We realized, however, that although the previous editions coveredPHP/MySQL interaction, we had left readers in the dark about how to create and administerMySQL databases in the first place, and this led to many reader questions As a result, wedecided to beef up the coverage of MySQL and change the title
Trang 13✦ PHP5’s completely reworked XML support, built around libmxl2
✦ Exceptions and exception handling
MySQL coverage
We now cover MySQL 4.0 installation, database design, and administration, including ups, replication, and recovery As with previous editions, we devote much of the book totechniques for writing MySQL-backed PHP applications
back-Other new material
In addition to MySQL- and PHP5-specific features, we’ve added:
✦ Improved coverage of databases other than MySQL (Oracle, PostgreSQL, and the PEARdatabase interaction layer)
✦ The PEAR code repository
✦ A chapter on integrating PHP and Java
✦ Separate chapters on error-handling and debugging techniquesFinally, we reorganized the entire book, pushing more advanced topics toward the end, togive beginners an easier ramp up
Who wrote the book?
The first two editions were by Converse and Park, with a guest chapter by Dustin Mitchelland tech editing by Richard Lynch For this version, Clark Morgan took on much of the revi-sion work, with help by Converse and Park as well as by David Wall and Chris Cornell, whoalso contributed chapters and did technical editing
Whom This Book Is For
This book is for anyone who wants to build Web sites that exhibit more complex behaviorthan is possible with static HTML pages Within that population, we had the following threeparticular audiences in mind:
✦ Web site designers who know HTML and want to move into creating dynamic Web sites
✦ Experienced programmers (in C, Java, Perl, and so on) without Web experience whowant to quickly get up to speed in server-side Web programming
✦ Web programmers who have used other server-side technologies (Active Server Pages,Java Server Pages, or ColdFusion, for example) and want to upgrade or simply addanother tool to their kit
Trang 14Preface
We assume that the reader is familiar with HTML and has a basic knowledge of the workings
of the Web, but we do not assume any programming experience beyond that To help savetime for more experienced programmers, we include a number of notes and asides that com-pare PHP with other languages and indicate which chapters and sections may be safelyskipped Finally, see our appendixes, which offer specific advice for C programmers, ASPcoders, and pure-HTML designers
This Book Is Not the Manual
The PHP Documentation Group has assembled a great online manual, located at www.php.netand served up (of course) by PHP This book is not that manual or even a substitute for it Wesee the book as complementary to the manual and expect that you will want to go back andforth between them to some extent
In general, you’ll find the online manual to be very comprehensive, covering all aspects andfunctions of the language, but inevitably without a great amount of depth in any one topic Bycontrast, we have the leisure of zeroing in on aspects that are most used or least understoodand give background, explanations, and lengthy examples
How the Book Is Organized
This book is divided into five parts, as the following sections describe
Part I: PHP: The Basics
This part is intended to bring the reader up to speed on the most essential aspects of PHP,with complexities and abstruse features deferred to later Parts
✦ Chapters 1 through 4 provide an introduction to PHP and tell you what you need toknow to get started
✦ Chapters 5 through 10 are a guide to the most central facets of PHP (with the exception
of database interaction): the syntax, the datatypes, and the most basic built-in functions
✦ Chapter 11 is a guide to the most common pitfalls of PHP programming
Part II: PHP and MySQL
Part II is devoted both to MySQL and to PHP’s interaction with MySQL
✦ Chapters 12 and 13 provide a general orientation to Web programming with SQLdatabases, including advice on how to choose the database system that is right for you
✦ Chapter 14 covers installation and administration of MySQL databases, and Chapter 15
is devoted to PHP functions for MySQL
✦ Chapters 16 and 17 are detailed, code-rich case studies of PHP/MySQL interactions
✦ Chapters 18 and 19 provide tips and gotchas specific to PHP/MySQL work
Trang 15Part III: Advanced Features and Techniques
In this part we cover more advanced and abstruse features of PHP, usually as self-containedchapters, including object-oriented programming, session handling, exception handling, usingcookies, and regular expressions Chapter 32 is a tour of debugging techniques, and Chapter
33 discusses programming style
Part IV: Connections
In this part we cover advanced techniques and features that involve PHP talking to other services, technologies, or large bodies of code
✦ Chapters 34 through 36 cover PHP’s interaction with other database technologies(PostgreSQL, Oracle, and the PEAR database abstraction layer)
✦ Chapters 37 through 42 cover self-contained topics: PHP and e-mail programs, ing PHP with JavaScript, integrating PHP and Java, PHP and XML, PHP-based Web ser-vices, and creating graphics with the gd image library
combin-Part V: Case Studies
Here we present six extended case studies that wrap together techniques from various earlychapters
✦ Chapter 43 takes you through the design and implementation of a weblog
✦ Chapter 44 presents a user authentication system in detail
✦ Chapter 45 shows how to build a rating system that lets users vote on content
✦ Chapter 46 discusses a soup-to-nuts implementation of a novel trivia quiz game
✦ Chapter 47 is a study of the process of converting a static HTML site to dynamic PHP
✦ Chapter 48 uses the gd image library to visualize data from a MySQL database
Conventions Used in This Book
We use a monospaced font to indicate literal PHP code Pieces of code embedded in lines oftext look like this, while full code listing lines look as follows:
print(“this”);
If the appearance of a PHP-created Web page is crucial, we include a screenshot If it is not,
we show textual output of PHP in monospaced font If we want to distinguish the PHP output
as seen in your browser from the actual output of PHP (which your browser renders), we call
the former browser output.
Trang 16What the Icons Mean
Icons similar to the following example are sprinkled liberally throughout the book Their pose is to visually set off certain important kinds of information
pur-Tip icons indicate PHP tricks or techniques that may not be obvious and that enable you toaccomplish something more easily or efficiently
Note icons usually provide additional information or clarification but can be safely ignored ifyou are not already interested Notes in this book are often audience-specific, targeted topeople who already know a particular programming language or technology
Caution icons indicate something that does not work as advertised, something that is easilymisunderstood or misused, or anything else that can get programmers into trouble
We use this icon whenever related information is in a different chapter or section
The Web Site and Sample Code
All the sample code from the book, as well as supplementary material we develop after presstime, can be found at our Web site at www.troutworks.com/phpbook You can also find thesample code at www.wiley.com/compbooks/converse
We want to hear from you! Please send us e-mail at phpbook@troutworks.com with ments, errata, kudos, flames, or any other communication that you care to send our way
com-
Cross-Reference
Caution Note Tip
Trang 18This project began out of a conversation with Debra Williams Cauley, our acquisitions tor at Wiley She managed the project, found additional contributors, and maintained asense of humor as she insulated naive first-time authors from the harsh realities of the pub-lishing business (For the next two editions, she insulated naive second-time and third-timeauthors, respectively.)
edi-Sara Shlaer was the development editor who coordinated everything among the contributors,stayed on us to make the project not quite as late as it would otherwise have been, and cri-tiqued our drafts in detail, making some great saves along the way Clark Morgan did themajority of the revision of previous material David Wall and Chris Cornell each wrote novelchapters, revised previous chapters, and served as technical reviewers
Thanks to the Webmasters of the PHP team for permission to reproduce a graph of PHPusage; the folks at Zend for permission to use screenshots of their Zend Studio product;Amazon.com for data in the Web services chapter; KnowNow, Inc., for permission to excerptcode originally owned by them; Mimi Yin for her fabo design work; Alex Selkirk for permis-sion to reproduce material from Opencortex.org; Tim Perdue for inspiration; Hoang Nguyenfor debugging help; and Jeff Barr of Syndic8.com for timely aid
Our obvious thanks go to everyone who created PHP itself (Rasmus Lerdorf, Zeev Suraski, AndiGutmans, Thies Arntzen, Stig Bakken, Sascha Schumann, Andrei Zmievski, Sterling Hughes, WezFurlong, George Schlossnagle, Dan Libby, Sam Ruby, and a host of other contributors), the peo-ple who have documented PHP (Stig Bakken, Alexander Aulbach, Egon Schmid, Lars TorbenWilson, Jim Winstead, and others), and everyone on the PHP mailing list Special thanks toRasmus, Sascha, and Richard Lynch for mailing-list answers to our own questions Finally, bothConverse and Park would like thank their spouses for their support while this book was beingwritten and revised In a very literal sense, we couldn’t have done it without them