Mastering PHP 4.1 by Jeremy Allen and Charles Hornberger ISBN: 0782129242 With this latest version of PHP you can quickly construct web apps, connect them to databases with ease, and more. Back Cover Table of Contents Mastering PHP 4.1 Introduction Part I The Basics of PHP Chapter 1 - Beginning Your Exploration of PHP Chapter 2 - Variables Chapter 3 - Operators and Expressions Chapter 4 - Flow Control and Functions Chapter 5 - Strings and Arrays Part II Programming Principles and PHP Chapter 6 - Object-Oriented Programming Chapter 7 - Debugging and Errors Part III Letting the Data Flow Chapter 8 - SQL and Database Interaction Chapter 9 - Forms and User Interaction Chapter 10 - Data Validation Chapter 11 - Sessions Chapter 12 - Security Chapter 13 - Files and Networking Part IV How PHP Is Connected Chapter 14 - Web Application Development Chapter 15 - XML and XHTML Chapter 16 - LDAP Part V Using PHP in the Real World Chapter 17 - PDF Chapter 18 - Generating Graphics Chapter 19 - E-Mail Part VI Appendixes Appendix A - A Crash Course on Installing PHP Appendix B - PHP Configuration Options Appendix C - XHTML Entities Index List of Figures List of Tables List of Listings List of Sidebars Mastering PHP 4.1 Jeremy Allen Charles Hornberger Associate Publisher: Richard Mills Acquisitions and Developmental Editor: Diane Lowery Editors: Pete Gaughan, Brianne Agatep Production Editor: Liz Burke Technical Editor: Mark W. Godfrey Book Designer: Maureen Forys, Happenstance Type-O-Rama Graphic Illustrator: Tony Jonick Electronic Publishing Specialist: Jill Niles Proofreaders: Emily Hsuan, Dave Nash, Laurie O'Connell, Nanette Duffy, Nancy Riddiough Indexer: Ted Laux CD Coordinator: Dan Mummert CD Technician: Kevin Ly Cover Designer: Design Site Cover Illustrator/Photographer: Sergie Loobkoff Copyright © 2002 SYBEX Inc., 1151 Marina Village Parkway, Alameda, CA 94501. World rights reserved. The authors created reusable code in this publication expressly for reuse by readers. Sybex grants readers limited permission to reuse the code found in this publication or its accompanying CD-ROM so long as the authors are attributed in any application containing the reusabe code and the code itself is never distributed, posted online by electronic transmission, sold, or commercially exploited as a stand-alone product. Aside from this specific exception concerning reusable code, no part of this publication may be stored in a retrieval system, transmitted, or reproduced in any way, including but not limited to photocopy, photograph, magnetic, or other record, without the prior agreement and written permission of the publisher. Library of Congress Card Number: 2001099190 ISBN: 0-7821-2924-2 SYBEX and the SYBEX logo are either registered trademarks or trademarks of SYBEX Inc. in the United States and/or other countries. Mastering is a trademark of SYBEX Inc. Screen reproductions produced with FullShot 99. FullShot 99 © 1991–1999 Inbit Incorporated. All rights reserved. FullShot is a trademark of Inbit Incorporated. The CD interface was created using Macromedia Director, COPYRIGHT 1994, 1997–1999 Macromedia Inc. For more information on Macromedia and Macromedia Director, visit http://www.macromedia.com. TRADEMARKS: SYBEX has attempted throughout this book to distinguish proprietary trademarks from descriptive terms by following the capitalization style used by the manufacturer. The authors and publisher have made their best efforts to prepare this book, and the content is based upon final release software whenever possible. Portions of the manuscript may be based upon pre-release versions supplied by software manufacturer(s). The authors and the publisher make no representation or warranties of any kind with regard to the completeness or accuracy of the contents herein and accept no liability of any kind including but not limited to performance, merchantability, fitness for any particular purpose, or any losses or damages of any kind caused or alleged to be caused directly or indirectly from this book. Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1 Software License Agreement: Terms and Conditions The media and/or any online materials accompanying this book that are available now or in the future contain programs and/or text files (the "Software") to be used in connection with the book. SYBEX hereby grants to you a license to use the Software, subject to the terms that follow. Your purchase, acceptance, or use of the Software will constitute your acceptance of such terms. The Software compilation is the property of SYBEX unless otherwise indicated and is protected by copyright to SYBEX or other copyright owner(s) as indicated in the media files (the "Owner(s)"). You are hereby granted a single-user license to use the Software for your personal, noncommercial use only. You may not reproduce, sell, distribute, publish, circulate, or commercially exploit the Software, or any portion thereof, without the written consent of SYBEX and the specific copyright owner(s) of any component software included on this media. In the event that the Software or components include specific license requirements or end-user agreements, statements of condition, disclaimers, limitations or warranties ("End-User License"), those End-User Licenses supersede the terms and conditions herein as to that particular Software component. Your purchase, acceptance, or use of the Software will constitute your acceptance of such End-User Licenses. By purchase, use or acceptance of the Software you further agree to comply with all export laws and regulations of the United States as such laws and regulations may exist from time to time. Reusable Code in This Book The authors created reusable code in this publication expressly for reuse for readers. Sybex grants readers permission to reuse for any purpose the code found in this publication or its accompanying CD-ROM so long as all of the authors are attributed in any application containing the reusable code, and the code itself is never sold or commercially exploited as a stand-alone product. Software Support Components of the supplemental Software and any offers associated with them may be supported by the specific Owner(s) of that material, but they are not supported by SYBEX. Information regarding any available support may be obtained from the Owner(s) using the information provided in the appropriate read.me files or listed elsewhere on the media. Should the manufacturer(s) or other Owner(s) cease to offer support or decline to honor any offer, SYBEX bears no responsibility. This notice concerning support for the Software is provided for your information only. SYBEX is not the agent or principal of the Owner(s), and SYBEX is in no way responsible for providing any support for the Software, nor is it liable or responsible for any support provided, or not provided, by the Owner(s). Warranty SYBEX warrants the enclosed media to be free of physical defects for a period of ninety (90) days after purchase. The Software is not available from SYBEX in any other form or media than that enclosed herein or posted to www.sybex.com. If you discover a defect in the media during this warranty period, you may obtain a replacement of identical format at no charge by sending the defective media, postage prepaid, with proof of purchase to: SYBEX Inc. Product Support Department 1151 Marina Village Parkway Alameda, CA 94501 Web: http://www.sybex.com After the 90-day period, you can obtain replacement media of identical format by sending us the defective disk, proof of purchase, and a check or money order for $10, payable to SYBEX. Disclaimer SYBEX makes no warranty or representation, either expressed or implied, with respect to the Software or its contents, quality, performance, merchantability, or fitness for a particular purpose. In no event will SYBEX, its distributors, or dealers be liable to you or any other party for direct, indirect, special, incidental, consequential, or other damages arising out of the use of or inability to use the Software or its contents even if advised of the possibility of such damage. In the event that the Software includes an online update feature, SYBEX further disclaims any obligation to provide this feature for any specific duration other than the initial posting. The exclusion of implied warranties is not permitted by some states. Therefore, the above exclusion may not apply to you. This warranty provides you with specific legal rights; there may be other rights that you may have that vary from state to state. The pricing of the book with the Software by SYBEX reflects the allocation of risk and limitations on liability contained in this agreement of Terms and Conditions. Shareware Distribution This Software may contain various programs that are distributed as shareware. Copyright laws apply to both shareware and ordinary commercial software, and the copyright Owner(s) retains all rights. If you try a shareware program and continue using it, you are expected to register it. Individual programs differ on details of trial periods, registration, and payment. Please observe the requirements stated in appropriate files. Copy Protection The Software in whole or in part may or may not be copy-protected or encrypted. However, in all cases, reselling or redistributing these files without authorization is expressly forbidden except as specifically provided for by the Owner(s) therein. To Erin: your patience and caring make anything possible. —Jeremy Allen To Charles Semmelman. —Charles Hornberger Acknowledgments Everything started with my parents, so they get the first thanks for bringing me into this world! Thank you Erin, for giving up so much of our time together, and for being so patient and understanding. Thanks to the entire team involved with this project! Although not directly involved with Mastering PHP 4.1, thanks to Tom Cirtin for giving me the opportunity with my first professional writing project. Next comes Diane Lowery, who had to work with an author who had his own ideas about how schedules worked—thank you, Diane. Charlie Hornberger deserves much credit here for the tremendous amount of work he did with this book. Thanks to Pete Gaughan for his tireless editing efforts and insight. Thanks to Liz Burke for keeping everything, and everyone, straight! Thanks to our technical editor, Mark Godfrey, for keeping it all technically coherent. The team at Sybex has been awesome, and fundamental to this book. Thanks to the development team at elliptIQ for being so supportive of me writing this book. —Jeremy Allen I'd like to thank many people for their help putting this book together, especially: my coauthor, Jeremy Allen; Liz Burke, for keeping everything running smoothly even when I wasn't; editor Pete Gaughan, for painstaking and thoughtful application of the knife; and Diane Lowery, for bringing me on board in the first place. —Charles Hornberger The Basics of PHP Part I: Chapter List Chapter 1: Beginning Your Exploration of PHP Chapter 2: Variables Chapter 3: Operators and Expressions Chapter 4: Flow Control and Functions Chapter 5: Strings and Arrays Beginning Your Exploration of PHP Chapter 1: Overview Developing applications and sites for the World Wide Web, or for Web-like uses such as intranets, has become one of the most extensive areas of computing and programming work. If it can be done digitally, then somebody, somewhere, is trying to adapt it to a web browser. Understanding the various flavors of web activity—static and dynamic pages, client-side and server-side systems—is a necessary step toward increasing your flexibility as a developer. PHP builds upon the familiar structure of programming languages such as C, Java, and Perl. It helps create dynamic HTML content by providing the necessary tools to easily manipulate that content. PHP is becoming one of the preeminent tools for increasing the power of web pages because it is easy to use yet powerful. Building a few elementary scripts, testing the two main methods of moving data back and forth, and learning to comment PHP code will demonstrate just how accessible PHP's features are. Developing for the Web The term web development paints a wide, long stroke. It is a general term to categorize a large variety of activities. Web development can mean anything from putting a static HTML page on a small World Wide Web site to developing a massive, continent-spanning, corporate intranet that handles mission-critical business communications. But these activities do break down into several manageable categories. Web Applications To get into the topic of developing web applications, first we must tackle the term application: What is an application? What should an application do? An application is any software developed to simplify or perform a task. The level of the task varies from very specific to more general. A program that takes the grades of a student's six classes, averages those grades, and summarizes them in a report is a simple, but limited, application. On the other hand, an application that provides the means to communicate with others, such as an online groupware app (one that allows users to coordinate their workflow), is more complex and achieves a more general goal. Although the scope of the groupware application is much wider than the scope of the grade-averaging program, both are still applications. Then, what specifically are web applications? A web application, in general, is an application that leverages the ubiquity and ease of communication the Internet provides. A more restricted definition of web application—the one that will be used throughout the book—is an application that uses a web browser as the client. There are many client-side technologies available to most web browsers. In general, the most far-reaching and easily accessed web applications are those that use simple and elegant Hypertext Markup Language (HTML). A few examples that strictly fit the term web application are web-based banking systems, auctions, and news sites. Static and Dynamic Websites Static sites have content that does not change until the author updates it, and these sites work well for many people because they allow information to be shared. However, static sites provide no interaction with visitors and do not accomplish any tasks in a programmable way. Dynamic sites allow user interaction. Although, like a static site, a dynamic one uses HTML for the client interface, it also allows users to take individual and customizable actions, such as reserving and purchasing a particular airline flight or even seat. The purpose behind an online ticketing system is straightforward: an easily usable interface that provides convenience to the user. With such a system globally available to a web terminal, the task of buying a ticket is decentralized and easy to accomplish. HTML is a text-based markup language. Ideally, HTML is used to define the content and sketch its structure, and cascading style sheets (CSS) are used to position and style the content. Of course, due to backward compatibility and the wide range of clients used, CSS may be a less-than-optimal choice for positioning content. And beyond that, because of the static nature of HTML (meaning it is just a simple, text-based language), it is itself limited when we want to make our content change and evolve. HTML provides an excellent means of sharing content with a variety of web-based clients, but it has several drawbacks. When an HTML document is requested from a web server, the web server returns the document to the requester—nothing more. This is just a way to publish content, not create, control, organize, or customize it. HTML as it is used today tends to focus on the content's visual quality, not its detailed structure. Server-Side vs. Client-Side HTML is a client-side technology, meaning that an HTML document is processed entirely by the client. A web server doesn't behave differently based on the code contained within an HTML document. A web server merely provides requested files; the client browser makes the decisions about rendering them. HTML is not a programming language; it does not provide any constructs for data processing of any kind. PHP, conversely, is entirely server-side. When a PHP script executes, it doesn't interact directly with the browser; only the final product of the PHP script, which usually is an HTML document, is dealt with by the requesting browser. If a browser were sent an unprocessed PHP script, the browser would attempt to render the PHP script as regular HTML. Browsers cannot execute PHP scripts. HTML is an integral component to web application development. PHP code can be embedded and mixed directly into HTML. When a client requests an HTML document from a web server, the server responds by directly sending the document to the client. Figure 1.1 shows a client requesting a HTML document and illustrates how the server responds. Figure 1.1: HTML document request Requesting a PHP script works differently. Before the document is sent to the client, the document is processed by PHP, and the PHP engine executes any PHP code found in the document. Figure 1.2 illustrates a client request for a PHP script. The PHP script in this illustration returns a processed HTML document. Figure 1.2: PHP script request
Description: