The Missing Credits | p. vii |
Introduction | p. 1 |
PHP and MySQL Basics | |
PHP: What, Why, and Where? | p. 15 |
PHP Comes in Two Flavors: Local and Remote | p. 15 |
PHP: Going Local | p. 21 |
Write Your First Program | p. 38 |
Run Your First Program | p. 40 |
But Where's That Web Server? | p. 42 |
PHP Meets HTML | p. 45 |
Script or HTML? | p. 46 |
PHP Talks Back | p. 51 |
Run PHP Scripts Remotely | p. 54 |
PHP Syntax: Weird and Wonderful | p. 61 |
Get Information from a Web Form | p. 62 |
Working with Text in PHP | p. 69 |
The REQUEST Variable Is an Array | p. 83 |
What Do You Do with User Information? | p. 90 |
MySQL and SQL: Database and Language | p. 91 |
What Is a Database? | p. 91 |
Installing MySQL | p. 95 |
SQL Is a Language for Talking to Databases | p. 104 |
Dynamic Web Pages | |
Connecting PHP to MySQL | p. 119 |
Writing a Simple PHP Connection Script | p. 120 |
Cleaning Up Your Code with Multiple Files | p. 132 |
Building a Basic SQL Query Runner | p. 138 |
Regular Expressions | p. 155 |
String Matching, Double-Time | p. 156 |
Generating Dynamic Web Pages | p. 173 |
Revisiting a User's Information | p. 174 |
Planning Your Database Tables | p. 175 |
Saving a User's Information | p. 182 |
Show Me the User | p. 190 |
Revisiting (and Redirecting) the Create User Script | p. 208 |
From Web Pages to Web Applications | |
When Things Go Wrong (and They Will) | p. 221 |
Planning Your Error Pages | p. 223 |
Finding a Middle Ground for Error Pages with PHP | p. 229 |
Add Debugging to Your Application | p. 237 |
Redirecting On Error | p. 242 |
Handling Images and Complexity | p. 253 |
Images Are Just Files | p. 254 |
Images Are for Viewing | p. 279 |
And Now for Something Completely Different | p. 288 |
Binary Objects and Image Loading | p. 289 |
Storing Different Objects in Different Tables | p. 290 |
Inserting a Raw Image into a Table | p. 292 |
Your Binary Data Isn't Safe to lnsert…Yet | p. 296 |
Connecting Users and Images | p. 303 |
Show Me the Image! | p. 313 |
Embedding an Image Is Just Viewing an Image | p. 324 |
So, Which Approach Is Best? | p. 330 |
Listing, Iterating, and Administrating | p. 333 |
Thinking about What You Need as an Admin | p. 334 |
Listing All Your Users | p. 337 |
Deleting a User | p. 345 |
Talking Back to Your Users | p. 351 |
Standardizing on Messaging | p. 362 |
Integrating Utilities, Views, and Messages | p. 369 |
Security and the Real World | |
Authentication and Authorization | p. 385 |
Basic Authentication | p. 386 |
Abstracting What's the Same | p. 395 |
Passwords Don't Belong in PHP Scripts | p. 399 |
Passwords Create Security, But Should Be Secure | p. 413 |
Cookies, Sign-Ins, and Ditching Crummy Pop-Ups | p. 419 |
Moving Beyond Basic Authentication | p. 420 |
Logging In with Cookies | p. 426 |
Adding Context-Specific Menus | p. 443 |
Authorization and Sessions | p. 455 |
Modeling Groups in Your Database | p. 455 |
Checking for Group Membership | p. 461 |
Group-Specific Menus | p. 471 |
Entering Browser Sessions | p. 475 |
Memory Lane: Remember That Phishing Problem? | p. 486 |
Why Would You Ever Use Cookies? | p. 489 |
Appendixes | |
Installing PHP on Windows Without WAMP | p. 493 |
Installing MySQL Without MAMP or WAMP | p. 499 |
Index | p. 513 |
Table of Contents provided by Ingram. All Rights Reserved. |