Sams Teach Yourself PHP, MySQL and Apache All in One

Author:   Julie C. Meloni ,  Julie C. Meloni
Publisher:   Pearson Education (US)
Edition:   5th edition
ISBN:  

9780672335433


Pages:   672
Publication Date:   14 June 2012
Replaced By:   9780672337703
Format:   Mixed media product
Availability:   Awaiting stock   Availability explained


Our Price $105.57 Quantity:  
Add to Cart

Share |

Sams Teach Yourself PHP, MySQL and Apache All in One


Add your own review!

Overview

Sams Teach Yourself PHP, MySQL, and Apache All in One, Fifth Edition brings together everything beginners need to build powerful web applications with PHP 5.3, MySQL 5.1/5.x, and the latest versions of Apache - whether they use Windows, Mac, or Linux platforms. Bestselling author Julie Meloni (Sams Teach Yourself HTML and CSS in 24 Hours) teaches simply and clearly, through brief, hands-on lessons focused on knowledge readers can apply immediately. Meloni covers all the building blocks of practical web development with PHP and MySQL, integrating modern techniques and new software capabilities throughout. Each lesson builds on what's come before, showing how to configure PHP, MySQL, and Apache, and then use them together to create integrated solutions. Coverage includes: Mastering PHP core features, including flow control, functions, arrays, and objects Using strings, dates/times, forms, cookies, user sessions, files/directories, and images Building AJAX-style applications Designing effective databases using SQL, transactions, and stored procedures Creating address books, mailing lists, forums, calendars, and storefronts Logging, monitoring, and restricting access to web applications Working with XML and connecting to web services Administering and tuning web applications - including security, performance, and virtual hosting

Full Product Details

Author:   Julie C. Meloni ,  Julie C. Meloni
Publisher:   Pearson Education (US)
Imprint:   Sams Publishing
Edition:   5th edition
Dimensions:   Width: 18.10cm , Height: 3.70cm , Length: 23.10cm
Weight:   1.092kg
ISBN:  

9780672335433


ISBN 10:   0672335433
Pages:   672
Publication Date:   14 June 2012
Audience:   Professional and scholarly ,  Professional & Vocational
Replaced By:   9780672337703
Format:   Mixed media product
Publisher's Status:   Out of Print
Availability:   Awaiting stock   Availability explained

Table of Contents

Introduction 1 PART I: Getting Up and Running CHAPTER 1: Installation QuickStart Guide with XAMPP 5 Using Third-Party Installation Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Installing XAMPP on Linux/UNIX . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 6 Installing XAMPP on Windows . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 8 Installing XAMPP on Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Securing XAMPP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 CHAPTER 2: Installing and Configuring MySQL 15 Current and Future Versions of MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 How to Get MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Installing MySQL on Linux/UNIX . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 16 Installing MySQL on Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 18 Installing MySQL on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Troubleshooting Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Basic Security Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Introducing the MySQL Privilege System. . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 CHAPTER 3: Installing and Configuring Apache 37 Current and Future Versions of Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Choosing the Appropriate Installation Method . . . . . . . . . . . . . . . . . . . . 38 Installing Apache on Linux/UNIX . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 39 Installing Apache on Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Installing Apache on Windows . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 42 Apache Configuration File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Apache Log Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Apache-Related Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Starting Apache for the First Time . . . . . . . . . . . . . . . . . . . . . . . 53 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 CHAPTER 4: Installing and Configuring PHP 59 Current and Future Versions of PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Building PHP on Linux/UNIX with Apache . . . . . . . . . . . . . . . . . . . . . . . . . 60 Installing PHP on Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Installing PHP on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 php.ini Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Testing Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 65 Getting Installation Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 The Basics of PHP Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 73 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 74 PART II: PHP Language Structure CHAPTER 5: The Building Blocks of PHP 75 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Operators and Expressions . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 85 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 CHAPTER 6: Flow Control Functions in PHP 99 Switching Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Code Blocks and Browser Output . . . . . . . . . . . . . . . . . . . . . . . . . 114 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 116 CHAPTER 7: Working with Functions 119 What Is a Function? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Calling Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Defining a Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Returning Values from User-Defined Functions. . . . . . . . . . . . . . . . 124 Variable Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 125 Saving State Between Function Calls with the static Statement . . . . . . . . . . . . . . . . . . 128 More About Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Testing for the Existence of a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 CHAPTER 8: Working with Arrays 139 What Are Arrays? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Creating Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Some Array-Related Constructs and Functions . . . . . . . . . . . . . . .. . . . . . . . . . 144 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 CHAPTER 9: Working with Objects 149 Creating an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Object Inheritance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 157 PART III: Getting Involved with the Code CHAPTER 10: Working with Strings, Dates, and Time 159 Formatting Strings with PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Investigating Strings in PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Manipulating Strings with PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Using Date and Time Functions in PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Other String, Date, and Time Functions . . . . . . . . . . . . . . . . . . . . . . . . 186 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 CHAPTER 11: Working with Forms 189 Creating a Simple Input Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Accessing Form Input with User-Defined Arrays . . . . . . . . . .. . . . . . . . . 191 Combining HTML and PHP Code on a Single Page . . . . . . . . . . . . . . 194 Using Hidden Fields to Save State. . . . . . . . . . . . . . . . . . . .. . . . . . 197 Redirecting the User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Sending Mail on Form Submission . . . . . . . . . . . . . . . . .. . . . . . . . . . 200 Creating the Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 201 Creating the Script to Send the Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Working with File Uploads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 210 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 CHAPTER 12: Working with Cookies and User Sessions 213 Introducing Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Setting a Cookie with PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Deleting a Cookie with PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Session Function Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 217 Starting a Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Working with Session Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Destroying Sessions and Unsetting Variables . . . . . . . . . . . . . . . . . .. . . . . . . . 223 Using Sessions in an Environment with Registered Users . . . . . . . . . . . . 224 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 225 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 226 CHAPTER 13: Working with Files and Directories 229 Including Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Using include_once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Validating Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Creating and Deleting Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 238 Opening a File for Writing, Reading, or Appending . . . . . . . . . . . . . . . . . . . . . . . 238 Reading from Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Writing or Appending to a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Working with Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Opening Pipes to and from Processes Using popen() . . . . . . . . . . .. . . . . . . 251 Running Commands with exec() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Running Commands with system() or passthru() . . . . . . . . . . . . .. . . . . . 255 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 258 CHAPTER 14: Working with Images 261 Understanding the Image-Creation Process . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Necessary Modifications to PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Drawing a New Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 263 Modifying Existing Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Image Creation from User Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Using Images Created by Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 281 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 PART IV: PHP and MySQL Integration CHAPTER 15: Understanding the Database Design Process 283 The Importance of Good Database Design . . . . . . . . . . . . . . . . . . . . . . . . . 283 Types of Table Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Understanding Normalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 Following the Design Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 294 CHAPTER 16: Learning Basic SQL Commands 297 Learning the MySQL Data Types . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 298 Learning the Table-Creation Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Using the INSERT Command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Using the SELECT Command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Using WHERE in Your Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 308 Selecting from Multiple Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Using the UPDATE Command to Modify Records . . . . . . . . . . . . . . . . . . 316 Using the REPLACE Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 319 Using the DELETE Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 320 Frequently Used String Functions in MySQL. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 322 Using Date and Time Functions in MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 346 CHAPTER 17: Using Transactions and Stored Procedures in MySQL 349 What Are Transactions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 What Are Stored Procedures?. . . . . . . . . . . . . . . . . . . . . . . . . .. 353 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 CHAPTER 18: Interacting with MySQL Using PHP 357 MySQL or MySQLi Functions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Connecting to MySQL with PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Working with MySQL Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 370 PART V: Basic Projects CHAPTER 19: Managing a Simple Mailing List 373 Developing the Subscription Mechanism. . . . . . . . . . . . . . . . . . . . . . . . . . 374 Developing the Mailing Mechanism. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 385 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 CHAPTER 20: Creating an Online Address Book 387 Planning and Creating the Database Tables . . . . . . . . . . . . . . . . . . . . . .. . . . 387 Creating an Include File for Common Functions . . . . . . . . . . . . . . . . . . . . 390 Creating a Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Creating the Record-Addition Mechanism . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 392 Viewing Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 Creating the Record-Deletion Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Adding Subentries to a Record. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 406 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 CHAPTER 21: Creating a Simple Discussion Forum 417 Designing the Database Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 Creating an Include File for Common Functions . . . . . . . . . . . . . . .. . . . . . . 418 Creating the Input Forms and Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Displaying the Topic List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Displaying the Posts in a Topic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Adding Posts to a Topic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 433 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 434 CHAPTER 22: Creating an Online Storefront 437 Planning and Creating the Database Tables . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 437 Displaying Categories of Items . . . . . . . . . . . . . . . . . . . . . . . 441 Displaying Items. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 CHAPTER 23: Creating a Shopping Cart Mechanism 451 Planning and Creating the Database Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Integrating the Cart with Your Storefront . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 453 Payment Methods and the Checkout Sequence. . . . . . . . . . . . . . . . . . . . . . . . . 462 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 CHAPTER 24: Creating a Simple Calendar 467 Building a Simple Display Calendar. . . . . . . . . . . . . . . . . . . . . . . . . . . 467 Creating a Calendar Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 483 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 CHAPTER 25: Restricting Access to Your Applications 491 Authentication Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Apache Authentication Module Functionality . . . . . . . . . . . . . . . . . . . . . . . . 493 Using Apache for Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 Combining Apache Access Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Limiting Access Based on HTTP Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Restricting Access Based on Cookie Values. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 501 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 507 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 CHAPTER 26: Logging and Monitoring Web Server Activity 509 Standard Apache Access Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Standard Apache Error Logging. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . 515 Managing Apache Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Logging Custom Information to a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 CHAPTER 27: Application Localization 527 About Internationalization and Localization . . . . . . . . . . . . . . .. . . . . 527 About Character Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 528 Environment Modifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Creating a Localized Page Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Localizing Your Application with gettext(). . . . . . . . . . . . . . . . . . . . . . . . . 536 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 CHAPTER 28: Working with XML and JSON 541 What Is XML?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 541 Accessing XML in PHP Using DOM Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Accessing XML in PHP Using SimpleXML Functions . . . . . . . . . . . . . . . . . . . 546 Working with JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 554 PART VI: Administration and Fine-Tuning CHAPTER 29: Apache Performance Tuning and Virtual Hosting 555 Performance and Scalability Issues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . 555 Load Testing with ApacheBench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Proactive Performance Tuning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 Preventing Abuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 Implementing Virtual Hosting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 569 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 571 CHAPTER 30: Setting Up a Secure Web Server 573 The Need for Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 573 The SSL Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 Obtaining and Installing SSL Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 Managing Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 582 SSL Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . 586 CHAPTER 31: Optimizing and Tuning MySQL 589 Building an Optimized Platform . . . . . . . . . . . . . . . . . . . . . . . . .. . 589 Benchmarking Your Database Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 MySQL Startup Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 Optimizing Your Table Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Optimizing Your Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Using the FLUSH Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Using the SHOW Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 Q&A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 CHAPTER 32: Performing Software Upgrades 605 Staying in the Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 Upgrading MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 Upgrading Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 Upgrading PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 CHAPTER 33: Using Application Frameworks 611 Understanding Application Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 Using the MVC Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 Installing and Using PHP Application Frameworks . . . . . . . . . . . . . . . . . 614 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 Activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 TOC, 9780672335433, 5/2/2012

Reviews

Author Information

Julie C. Meloni is a technical consultant who has been developing web-based applications since the Web first saw the light of day. She has authored numerous books and articles on web-based programming and scripting languages and database topics, and you can find translations of her work in 18 different languages. She blogs at thickbook.com and nerdtripping.com-the latter reserved for tips and tricks for traveling while nerdy.

Tab Content 6

Author Website:  

Customer Reviews

Recent Reviews

No review item found!

Add your own review!

Countries Available

All regions
Latest Reading Guide

wl

Shopping Cart
Your cart is empty
Shopping cart
Mailing List