| |
| |
The Missing Credits | |
| |
| |
Introduction | |
| |
| |
| |
PHP and MySQL Basics | |
| |
| |
| |
PHP: What, Why, and Where? | |
| |
| |
PHP Comes in Two Flavors: Local and Remote | |
| |
| |
PHP: Going Local | |
| |
| |
Write Your First Program | |
| |
| |
Run Your First Program | |
| |
| |
But Where's That Web Server? | |
| |
| |
| |
PHP Meets HTML | |
| |
| |
Script or HTML? | |
| |
| |
PHP Talks Back | |
| |
| |
Run PHP Scripts Remotely | |
| |
| |
| |
PHP Syntax: Weird and Wonderful | |
| |
| |
Get Information from a Web Form | |
| |
| |
Working with Text in PHP | |
| |
| |
The REQUEST Variable Is an Array | |
| |
| |
What Do You Do with User Information? | |
| |
| |
| |
MySQL and SQL: Database and Language | |
| |
| |
What Is a Database? | |
| |
| |
Installing MySQL | |
| |
| |
SQL Is a Language for Talking to Databases | |
| |
| |
| |
Dynamic Web Pages | |
| |
| |
| |
Connecting PHP to MySQL | |
| |
| |
Writing a Simple PHP Connection Script | |
| |
| |
Cleaning Up Your Code with Multiple Files | |
| |
| |
Building a Basic SQL Query Runner | |
| |
| |
| |
Regular Expressions | |
| |
| |
String Matching, Double-Time | |
| |
| |
| |
Generating Dynamic Web Pages | |
| |
| |
Revisiting a User's Information | |
| |
| |
Planning Your Database Tables | |
| |
| |
Saving a User's Information | |
| |
| |
Show Me the User | |
| |
| |
Revisiting (and Redirecting) the Create User Script | |
| |
| |
| |
From Web Pages to Web Applications | |
| |
| |
| |
When Things Go Wrong (and They Will) | |
| |
| |
Planning Your Error Pages | |
| |
| |
Finding a Middle Ground for Error Pages with PHP | |
| |
| |
Add Debugging to Your Application | |
| |
| |
Redirecting On Error | |
| |
| |
| |
Handling Images and Complexity | |
| |
| |
Images Are Just Files | |
| |
| |
Images Are for Viewing | |
| |
| |
And Now for Something Completely Different | |
| |
| |
| |
Binary Objects and Image Loading | |
| |
| |
Storing Different Objects in Different Tables | |
| |
| |
Inserting a Raw Image into a Table | |
| |
| |
Your Binary Data Isn't Safe to lnsert…Yet | |
| |
| |
Connecting Users and Images | |
| |
| |
Show Me the Image! | |
| |
| |
Embedding an Image Is Just Viewing an Image | |
| |
| |
So, Which Approach Is Best? | |
| |
| |
| |
Listing, Iterating, and Administrating | |
| |
| |
Thinking about What You Need as an Admin | |
| |
| |
Listing All Your Users | |
| |
| |
Deleting a User | |
| |
| |
Talking Back to Your Users | |
| |
| |
Standardizing on Messaging | |
| |
| |
Integrating Utilities, Views, and Messages | |
| |
| |
| |
Security and the Real World | |
| |
| |
| |
Authentication and Authorization | |
| |
| |
Basic Authentication | |
| |
| |
Abstracting What's the Same | |
| |
| |
Passwords Don't Belong in PHP Scripts | |
| |
| |
Passwords Create Security, But Should Be Secure | |
| |
| |
| |
Cookies, Sign-Ins, and Ditching Crummy Pop-Ups | |
| |
| |
Moving Beyond Basic Authentication | |
| |
| |
Logging In with Cookies | |
| |
| |
Adding Context-Specific Menus | |
| |
| |
| |
Authorization and Sessions | |
| |
| |
Modeling Groups in Your Database | |
| |
| |
Checking for Group Membership | |
| |
| |
Group-Specific Menus | |
| |
| |
Entering Browser Sessions | |
| |
| |
Memory Lane: Remember That Phishing Problem? | |
| |
| |
Why Would You Ever Use Cookies? | |
| |
| |
| |
Appendixes | |
| |
| |
| |
Installing PHP on Windows Without WAMP | |
| |
| |
| |
Installing MySQL Without MAMP or WAMP | |
| |
| |
Index | |