-
php_6_fast_and_easy_web_development.pdf下载
资源介绍
Appendix CWriting Your Own Functions. . . . . . . . . . . . . . . . . . 487
The Structure of Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Returning Values from Functions. . . . . . . . . . . . . . . . . . . . . . . 488
Using Functions in Your Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Using include() and require(). . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Appendix DWriting Your Own Classes and Objects. . . . . . . . . . 495
Working with Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Creating an Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Object Inheritance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
Namespaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Appendix EDatabase Normalization and SQL Reference. . . . . . 505
Understanding Database Normalization. . . . . . . . . . . . . . . . . . . . 506
Applying the Normal Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Normalizing the my_contacts Table. . . . . . . . . . . . . . . . . . . . . 510
Other Normal Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Basic MySQL Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Creating or Dropping a Database. . . . . . . . . . . . . . . . . . . . . . 514
Creating or Dropping a Table. . . . . . . . . . . . . . . . . . . . . . . . . . 514
Altering a Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Inserting, Updating, or Replacing Within a Table. . . . . . . . . . . 515
Deleting from a Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Selecting from a Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Grouping, Ordering, and Selecting Unique Values. . . . . . . . . 520
Using the SHOW Command. . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Appendix FUsing SQLite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Examples of SQLite in Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Creating a Table and Storing Data with SQLite. . . . . . . . . . . . 525
Retrieving Items with SQLite. . . . . . . . . . . . . . . . . . . . . . . . . . 526
Performing Other Tasks with SQLite. . . . . . . . . . . . . . . . . . . . 528
xvii
CONTENTS
Appendix GGetting Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
PHP Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Web Sites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Mailing Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
User Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
MySQL Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Apache Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
PART I
GETTING STARTED. . . . . . . . . . . . . . . . . . . . . . . . . . 1
Chapter 1
Installing and Configuring MySQL. . . . . . . . . . . . . . . . 3
Various MySQL Distributions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Installing MySQL on Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Testing Your MySQL Installation. . . . . . . . . . . . . . . . . . . . . . . . . 12
Installing MySQL for Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Testing Your MySQL Installation. . . . . . . . . . . . . . . . . . . . . . . . . 20
Chapter 2
Installing Apache. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Installing Apache for Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Configuring Apache on Windows. . . . . . . . . . . . . . . . . . . . . . . . 29
Starting and Connecting to Apache. . . . . . . . . . . . . . . . . . . . . . 31
Installing Apache for Linux/UNIX. . . . . . . . . . . . . . . . . . . . . . . . . . 32
Configuring Apache on Linux/UNIX. . . . . . . . . . . . . . . . . . . . . . 34
Starting and Connecting to Apache. . . . . . . . . . . . . . . . . . . . . . 36
Chapter 3
Installing PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Installing PHP for Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Configuring Apache to Use PHP. . . . . . . . . . . . . . . . . . . . . . . . . 41
Testing the PHP Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Installing PHP for Linux/UNIX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Configuring Apache to Use PHP. . . . . . . . . . . . . . . . . . . . . . . . . 46
Testing the PHP Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
PART II
THE ABSOLUTE BASICS OF CODING IN PHP. . . . 49
Chapter 4
Mixing PHP and HTML. . . . . . . . . . . . . . . . . . . . . . . . 51
How PHP Is Parsed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
PHP Start and End Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Code Cohabitation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
The Importance of the Instruction Terminator. . . . . . . . . . . . . . 57
Escaping Your Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Commenting Your Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Chapter 5
Introducing Variables and Operators. . . . . . . . . . . . 65
What’s a Variable?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Naming Your Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
PHP Variable and Value Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
What’s an Operator?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Assignment Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Arithmetic Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Comparison Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Logical Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
viii
CONTENTS
Chapter 6
Using PHP Variables. . . . . . . . . . . . . . . . . . . . . . . . . 85
Getting Variables from Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Creating a Calculation Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Creating the Calculation Script. . . . . . . . . . . . . . . . . . . . . . . . . . 89
Submitting Your Form and Getting Results. . . . . . . . . . . . . . . . 91
HTTP Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Retrieving and Using REMOTE_ADDR. . . . . . . . . . . . . . . . . . . . 93
Retrieving and Using HTTP_USER_AGENT. . . . . . . . . . . . . . . . 95
PART III
START WITH THE SIMPLE STUFF. . . . . . . . . . . . . . 97
Chapter 7
Displaying Dynamic Content. . . . . . . . . . . . . . . . . . . 99
Displaying Browser-Specific HTML. . . . . . . . . . . . . . . . . . . . . . . . 100
Displaying Platform-Specific HTML. . . . . . . . . . . . . . . . . . . . . . . . 103
Working with String Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Creating an Input Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Creating a Script to Display Form Values. . . . . . . . . . . . . . . . . 109
Submitting Your Form and Getting Results. . . . . . . . . . . . . . . 111
Redirecting to a New Location. . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Creating a Redirection Form. . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Creating the Redirection Script and Testing It. . . . . . . . . . . . . 115
Chapter 8
Sending E-Mail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Using an SMTP Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
SMTP-Related Changes in php.ini. . . . . . . . . . . . . . . . . . . . . . 119
A Simple Feedback Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Creating the Feedback Form. . . . . . . . . . . . . . . . . . . . . . . . . . 120
Creating a Script to Mail Your Form. . . . . . . . . . . . . . . . . . . . . 122
Submitting Your Form and Getting Results. . . . . . . . . . . . . . . 125
ix
CONTENTS
A Feedback Form with Custom Error Messages. . . . . . . . . . . . . 127
Creating the Initial Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Adding Error Checking to the Script. . . . . . . . . . . . . . . . . . . . 129
Submitting Your Form and Getting Results. . . . . . . . . . . . . . . 134
Saving the Values if You Make an Error. . . . . . . . . . . . . . . . . . 136
Chapter 9
Using Your File System. . . . . . . . . . . . . . . . . . . . . . 139
File Paths and Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Displaying Directory Contents. . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Working with fopen() and fclose(). . . . . . . . . . . . . . . . . . . . . . . . . 143
Creating a New File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Appending Data to a File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Reading Data from a File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Sending File Contents via E-Mail. . . . . . . . . . . . . . . . . . . . . . . 155
File System Housekeeping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Copying Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Renaming Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Deleting Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Chapter 10Uploading Files to Your Web Site. . . . . . . . . . . . . . 165
Checking Your php.ini File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Understanding the Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Creating the Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Creating the Upload Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Uploading a File Using Your Form and Script. . . . . . . . . . . . . . . . 172
x
CONTENTS
PART IV
GETTING TO KNOW YOUR MYSQL
DATABASE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Chapter 11Establishing a Connection and Poking Around. . . . 177
Working with User Privileges in MySQL. . . . . . . . . . . . . . . . . . . . 178
Creating a New User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Connecting to MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Breaking Your Connection Script. . . . . . . . . . . . . . . . . . . . . . . 182
Listing Databases on a Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Listing Tables in a Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Creating a New Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Deleting a Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Chapter 12Creating a Database Table. . . . . . . . . . . . . . . . . . . . 197
Planning for Your Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Basic MySQL Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Defining Your Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
The Importance of Unique Fields. . . . . . . . . . . . . . . . . . . . . . . 201
A Two-Step Form Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Step 1: Number of Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Step 2: Defining Your Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Starting the Table Creation Process. . . . . . . . . . . . . . . . . . . . . 208
Creating the Table-Creation Script. . . . . . . . . . . . . . . . . . . . . . . . 210
Create That Table!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Chapter 13Inserting Data into the Table. . . . . . . . . . . . . . . . . . 217
Creating the Record Addition Form. . . . . . . . . . . . . . . . . . . . . . . 218
Creating the Record Addition Script. . . . . . . . . . . . . . . . . . . . . . . 222
Populating Your Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
xi
CONTENTS
Chapter 14Selecting and Displaying Data. . . . . . . . . . . . . . . . . 231
Planning and Creating Your Administrative Menu. . . . . . . . . . . . 232
Selecting Data from the my_music Table. . . . . . . . . . . . . . . . . . . 233
Displaying Records Ordered by ID. . . . . . . . . . . . . . . . . . . . . . 234
Displaying Records Ordered by Date Acquired. . . . . . . . . . . . 237
Displaying Records Ordered by Title. . . . . . . . . . . . . . . . . . . . 238
Displaying Records Ordered by Artist. . . . . . . . . . . . . . . . . . . 240
Displaying Records Ordered by Multiple Criteria. . . . . . . . . . 243
PART V
USER AUTHENTICATION AND TRACKING. . . . . 245
Chapter 15Database-Driven User Authentication. . . . . . . . . . . 247
Why Authenticate Anyone?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Creating the User Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Adding Users to Your Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Creating the User Addition Form and Script. . . . . . . . . . . . . . 250
Adding Some Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Creating the Login Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Creating the Authentication Script. . . . . . . . . . . . . . . . . . . . . . . . 258
Trying to Authenticate Yourself. . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Chapter 16Using Cookies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
What Are Cookies?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Setting Cookies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Counting Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Setting a Test Cookie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Using Cookie Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Using Cookies with Authentication. . . . . . . . . . . . . . . . . . . . . 269
xii
CONTENTS
Chapter 17Session Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Before You Begin…Checking php.ini. . . . . . . . . . . . . . . . . . . . . . 278
What’s a Session?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Understanding Session Variables. . . . . . . . . . . . . . . . . . . . . . . . . 279
Starting a Session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Registering and Modifying Session Variables. . . . . . . . . . . . . . 282
Managing User Preferences with Sessions. . . . . . . . . . . . . . . . . . 284
Starting a Session and Registering Defaults. . . . . . . . . . . . . . . 284
Making Preference Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Displaying Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
PART VI
CREATING YOUR OWN CONTACT
MANAGEMENT SYSTEM. . . . . . . . . . . . . . . . . . . 293
Chapter 18Planning Your System. . . . . . . . . . . . . . . . . . . . . . . 295
Planning and Creating the Administration Menu. . . . . . . . . . . . . 296
Logging In to the Administration Menu. . . . . . . . . . . . . . . . . . 301
Defining the my_contacts Table. . . . . . . . . . . . . . . . . . . . . . . . . . 303
Modifying the Table-Creation Scripts. . . . . . . . . . . . . . . . . . . . 304
Creating the my_contacts Table. . . . . . . . . . . . . . . . . . . . . . . . 309
Chapter 19Adding Contacts. . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Creating the Record-Addition Form. . . . . . . . . . . . . . . . . . . . . . . 314
Creating the Record-Addition Script. . . . . . . . . . . . . . . . . . . . . . 319
Populating Your Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Chapter 20Modifying Contacts. . . . . . . . . . . . . . . . . . . . . . . . . 327
Creating the Record-Selection Form. . . . . . . . . . . . . . . . . . . . . . 328
Creating the Record-Modification Form. . . . . . . . . . . . . . . . . . . . 333
Creating the Record-Modification Script. . . . . . . . . . . . . . . . . . . 338
Modifying Contacts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
xiii
CONTENTS
Chapter 21Deleting Contacts. . . . . . . . . . . . . . . . . . . . . . . . . . 345
Using the Record-Selection Form. . . . . . . . . . . . . . . . . . . . . . . . . 346
Creating the Record-Deletion Form. . . . . . . . . . . . . . . . . . . . . . . 351
Creating the Record-Deletion Script. . . . . . . . . . . . . . . . . . . . . . . 355
Deleting Contacts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Chapter 22Working with Contacts. . . . . . . . . . . . . . . . . . . . . . 361
Modifying Your Administrative Menu. . . . . . . . . . . . . . . . . . . . . . 362
Showing the Number of Contacts. . . . . . . . . . . . . . . . . . . . . . 362
Displaying Today’s Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Showing the Birthdays in the Current Month. . . . . . . . . . . . . . 372
Selecting Data from the my_contacts Table. . . . . . . . . . . . . . . . . 379
Displaying the Record List. . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Displaying Read-Only Records. . . . . . . . . . . . . . . . . . . . . . . . . 383
PART VII
ADDITIONAL PROJECT EXAMPLES. . . . . . . . . . . 391
Chapter 23Managing a Simple Mailing List. . . . . . . . . . . . . . . . 393
A Brief Word About Mailing List Software. . . . . . . . . . . . . . . . . . 394
Developing a Subscription Mechanism. . . . . . . . . . . . . . . . . . . . . 394
Creating the subscribers Table. . . . . . . . . . . . . . . . . . . . . . . . . 394
Creating the Subscription Form. . . . . . . . . . . . . . . . . . . . . . . . 396
Testing the Subscription Form. . . . . . . . . . . . . . . . . . . . . . . . . 403
Developing the Mailing Mechanism. . . . . . . . . . . . . . . . . . . . . . . 406
Creating the Newsletter Form. . . . . . . . . . . . . . . . . . . . . . . . . 406
Creating the Script to Mail Your Newsletter. . . . . . . . . . . . . . 407
Testing Your Mailing List Mechanism. . . . . . . . . . . . . . . . . . . . 410
Troubleshooting Your Mailing List Mechanism. . . . . . . . . . . . . 411
xiv
CONTENTS
Chapter 24Creating Custom Logs and Reports. . . . . . . . . . . . . 413
A Note About Apache Log Files. . . . . . . . . . . . . . . . . . . . . . . . . . 414
Simple Access Counting with MySQL. . . . . . . . . . . . . . . . . . . . . . 415
Creating the Database Table. . . . . . . . . . . . . . . . . . . . . . . . . . 415
Creating the Code Snippet. . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Displaying the Count. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Creating Your Personal Access Report. . . . . . . . . . . . . . . . . . . 422
Chapter 25Working with XML. . . . . . . . . . . . . . . . . . . . . . . . . . 433
What Is XML?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Basic XML Document Structure. . . . . . . . . . . . . . . . . . . . . . . . 434
Preparing to Use XML with PHP. . . . . . . . . . . . . . . . . . . . . . . . . . 437
Parsing XML with PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Parse and Display Content from XML Files. . . . . . . . . . . . . . . 439
PART VIII
APPENDIXES. . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Appendix AAdditional Configuration Options. . . . . . . . . . . . . . 445
Windows Extensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Linux Configuration Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Appendix BBasic PHP Language Reference. . . . . . . . . . . . . . . . 451
PHP Start and End Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Floats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Integers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Variables from HTML Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Variables from Cookies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
xv
CONTENTS
Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Arithmetic Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Assignment Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Comparison Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Increment/Decrement Operators. . . . . . . . . . . . . . . . . . . . . . . 457
Logical Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Control Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
if...else if...else. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
for. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
foreach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Built-In Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Array Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Database Connectivity Functions for MySQL. . . . . . . . . . . . . . 465
Date and Time Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
File System Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
HTTP Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
mail() Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Mathematical Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Miscellaneous Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Program Execution Functions. . . . . . . . . . . . . . . . . . . . . . . . . . 478
Regular Expression Functions. . . . . . . . . . . . . . . . . . . . . . . . . . 479
Session-Handling Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . 480
String Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Variable Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Other Changes for PHP 6.0. . . . . . . . . . . . . . . . . . . . . . . . . . . 486
xvi
CONTENTS