HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
A new edition of this title is available, ISBN-10: 067232976X ISBN-13: 9780672329760
You own your own business. You have also created a website for your business that details the products or services that you offer, but it doesn't allow potential customers to purchase anything online. Don't risk losing business-learn to create a dynamic online environment using only three programs. PHP, MySQL and Apache are three popular open-source tools that can work together to help you create a dynamic website, such as an online shopping experience. Sams Teach Yourself PHP, MySQL and Apache All in One is a complete reference manual for all three development tools. You will learn how to install, configure and set up the PHP scripting language, use the MySQL database system, and work with the Apache Web server. Then you'll take it a step further and discover how they work together to create a dynamic website. Use the book and the included CD to create a simple website, as well as a mailing list, online address book, shopping cart and storefront. Updated to reflect the most recent developments in PHP and MySQL, including the final stable release of MySQL 5.0, you will open your website to limitless possibilities with Sams Teach Yourself PHP, MySQL and Apache All in One.
Installing and Configuring Apache
Installing and Configuring Apache
Introduction
Who Should Read This Book?
How This Book Is Organized
Conventions Used in This Book
Part I: Laying the Groundwork
Chapter 1: Installation QuickStart Guide
Linux/UNIX Installation
Installing MySQL
Installing Apache
Installing PHP
Windows Installation
Installing MySQL
Installing Apache
Installing PHP
Mac OS X Installation
Installing MySQL
Installing PHP
Troubleshooting
Chapter 2: Installing and Configuring MySQL
Current and Future Versions of MySQL
How to Get MySQL
Installing MySQL on Linux/UNIX
Installing MySQL on Mac OS X
Installing MySQL on Windows
Troubleshooting Your Installation
Basic Security Guidelines
Starting MySQL
Securing Your MySQL Connection
Introducing the MySQL Privilege System
The Two-Step Authentication Process
Working with User Privileges
Adding Users
Removing Privileges
Chapter 3: Installing and Configuring Apache
Current and Future Versions of Apache
Choosing the Appropriate Installation Method
Building from Source
Installing a Binary
Installing Apache on Linux/UNIX
Downloading the Apache Source Code
Uncompressing the Source Code
Preparing to Build Apache
Building and Installing Apache
Installing Apache on Mac OS X
Installing Apache on Windows
Apache Configuration File Structure
Directives
Containers
Conditional Evaluation
The ServerRoot Directive
Per-Directory Configuration Files
Apache Log Files
The access_log File
The error_log File
Additional Files
Apache-Related Commands
Apache Server Binary
Apache Control Script
Starting Apache for the First Time
Check Your Configuration File
Starting Apache
Troubleshooting
Already an Existing Web Server
No Permission to Bind to Port
Access Denied
Wrong Group Settings
Chapter 4: Installing and Configuring PHP
Current and Future Versions of PHP
Building PHP on Linux/UNIX with Apache
Additional Linux/UNIX Configuration Options
Integrating PHP with Apache on Linux/UNIX
Installing PHP on Mac OS X
Installing PHP on Windows
Integrating PHP with Apache on Windows
php.ini Basics
Testing Your Installation
Getting Installation Help
The Basics of PHP Scripts
Beginning and Ending a Block of PHP Statements
The echo Statement and print() Function
Combining HTML and PHP
Adding Comments to PHP Code
Part II: PHP Language Structure
Chapter 5: The Building Blocks of PHP
Variables
Globals and Superglobals
Data Types
Changing Type with settype()
Changing Type by Casting
Why Test Type?
Operators and Expressions
The Assignment Operator
Arithmetic Operators
The Concatenation Operator
Combined Assignment Operators
Automatically Incrementing and Decrementing
an Integer Variable
Comparison Operators
Creating Complex Test Expressions with the Logical Operators
Operator Precedence
Constants
Predefined Constants
Chapter 6: Flow Control Functions in PHP
Switching Flow
The if Statement
Using the else Clause with the if Statement
Using the elseif Clause with the if Statement
The switch Statement
Using the ? Operator
Loops
The while Statement
The do...while Statement
The for Statement
Breaking Out of Loops with the break Statement
Skipping an Iteration with the continue Statement
Nesting Loops
Code Blocks and Browser Output
Chapter 7: Working with Functions
What Is a Function?
Calling Functions
Defining a Function
Returning Values from User-Defined Functions
Variable Scope
Accessing Variables with the global Statement
Saving State Between Function Calls with the static Statement
More About Arguments
Setting Default Values for Arguments
Passing Variable References to Functions
Testing for the Existence of a Function
Chapter 8: Working with Arrays
What Are Arrays?
Creating Arrays
Creating Associative Arrays
Creating Multidimensional Arrays
Some Array-Related Functions
Chapter 9: Working with Objects
Creating an Object
Properties of Objects
Object Methods
Constructors
Object Inheritance
Part III: Getting Involved with the Code
Chapter 10: Working with Strings, Dates, and Time
Formatting Strings with PHP
Working with printf()
Specifying a Field Width
Argument Swapping
Storing a Formatted String
Investigating Strings in PHP
A Note About Indexing Strings
Finding the Length of a String with strlen()
Finding a Substring Within a String with strstr()
Finding the Position of a Substring with strpos()
Extracting Part of a String with substr()
Tokenizing a String with strtok()
Manipulating Strings with PHP
Cleaning Up a String with trim(), ltrim(), and strip_tags()
Replacing a Portion of a String Using substr_replace()
Replacing Substrings Using str_replace
Converting Case
Wrapping Text with wordwrap() and nl2br()
Breaking Strings into Arrays with explode()
Using Date and Time Functions in PHP
Getting the Date with time()
Converting a Time Stamp with getdate()
Converting a Time Stamp with date()
Creating Time Stamps with mktime()
Testing a Date with checkdate()
Other String, Date, and Time Functions
Chapter 11: Working with Forms
Creating a Simple Input Form
Accessing Form Input with User-Defined Arrays
Combining HTML and PHP Code on a Single Page
Using Hidden Fields to Save State
Redirecting the User
Sending Mail on Form Submission
System Configuration for the mail() Function
Creating the Form
Creating the Script to Send the Mail
Formatting Your Mail with HTML
Working with File Uploads
Creating the File Upload Form
Creating the File Upload Script
Chapter 12: Working with Cookies and User Sessions
Introducing Cookies
The Anatomy of a Cookie
Setting a Cookie with PHP
Deleting a Cookie
Session Function Overview
Starting a Session
Working with Session Variables
Passing Session IDs in the Query String
Destroying Sessions and Unsetting Variables
Using Sessions in an Environment with Registered Users
Working with Registered Users
Working with User Preferences
Chapter 13: Working with Files and Directories
Including Files with include()
Returning a Value from an Included Document
Using include() Within Control Structures
Using include_once()
The include_path Directive
Validating Files
Checking for Existence with file_exists()
A File or a Directory?
Checking the Status of a File
Determining File Size with filesize()
Getting Date Information About a File
Creating a Function That Performs Multiple File Tests
Creating and Deleting Files
Opening a File for Writing, Reading, or Appending
Reading from Files
Reading Lines from a File with fgets() and feof()
Reading Arbitrary Amounts of Data from a File with fread()
Reading Characters from a File with fgetc()
Writing or Appending to a File
Writing to a File with fwrite() or fputs()
Locking Files with flock()
Working with Directories
Creating Directories with mkdir()
Removing a Directory with rmdir()
Opening a Directory for Reading with opendir()
Reading the Contents of a Directory with readdir()
Opening Pipes to and from Processes Using popen()
Running Commands with exec()
Running Commands with system() or passthru()
Chapter 14: Working with Images
Understanding the Image-Creation Process
A Word About Color
Necessary Modifications to PHP
Obtaining Additional Libraries
Drawing a New Image
Drawing Shapes and Lines
Using a Color Fill
Getting Fancy with Pie Charts
Modifying Existing Images
Image Creation from User Input
Part IV: PHP and MySQL Integration
Chapter 15: Understanding the Database Design Process
The Importance of Good Database Design
Types of Table Relationships
One-to-One Relationships
One-to-Many Relationships
Many-to-Many Relationships
Understanding Normalization
Problems with the Flat Table
First Normal Form
Second Normal Form
Third Normal Form
Following the Design Process
Chapter 16: Learning Basic SQL Commands
Learning the MySQL Data Types
Numeric Data Types
Date and Time Types
String Types
Learning the Table Creation Syntax
Using the INSERT Command
A Closer Look at INSERT
Using the SELECT Command
Ordering SELECT Results
Limiting Your Results
Using WHERE in Your Queries
Using Operators in WHERE Clauses
String Comparison Using LIKE
Selecting from Multiple Tables
Using JOIN
Using Subqueries
Using the UPDATE Command to Modify Records
Conditional UPDATEs
Using Existing Column Values with UPDATE
Using the REPLACE Command
Using the DELETE Command
Conditional DELETE
Frequently Used String Functions in MySQL
Length and Concatenation Functions
Trimming and Padding Functions
Location and Position Functions
Substring Functions
String Modification Functions
Using Date and Time Functions in MySQL
Working with Days
Working with Months and Years
Working with Weeks
Working with Hours, Minutes, and Seconds
Formatting Dates and Times with MySQL
Performing Date Arithmetic with MySQL
Special Functions and Conversion Features
Chapter 17: Using Transactions and Stored Procedures in MySQL
What Are Transactions?
Basic Syntax Used in Transactions
Working Example Using Transactions
What Are Stored Procedures?
Basic Syntax of Stored Procedures
Chapter 18: Interacting with MySQL Using PHP
MySQL Versus MySQLi Functions
Connecting to MySQL with PHP
Making a Connection
Executing Queries
Retrieving Error Messages
Working with MySQL Data
Inserting Data with PHP
Retrieving Data with PHP
Additional MySQL Functions in PHP
Part V: Basic Projects
Chapter 19: Managing a Simple Mailing List
Developing the Subscription Mechanism
Creating the subscribers Table
Creating the Subscription Form
Developing the Mailing Mechanism
Chapter 20: Creating an Online Address Book
Planning and Creating the Database Tables
Creating a Menu
Creating the Record Addition Mechanism
Viewing Records
Creating the Record Deletion Mechanism
Adding Subentries to a Record
Chapter 21: Creating a Simple Discussion Forum
Designing the Database Tables
Creating the Input Forms and Scripts
Displaying the Topic List
Displaying the Posts in a Topic
Adding Posts to a Topic
Chapter 22: Creating an Online Storefront
Planning and Creating the Database Tables
Inserting Records into the store_categories Table
Inserting Records into the store_items Table
Inserting Records into the store_item_size Table
Inserting Records into the store_item_color Table
Displaying Categories of Items
Displaying Items
Chapter 23: Creating a Shopping Cart Mechanism
Planning and Creating the Database Tables
Integrating the Cart with Your Storefront
Adding Items to Your Cart
Viewing the Cart
Removing Items from Your Cart
Payment Methods and the Checkout Sequence
Creating the Checkout Form
Performing the Checkout Actions
Chapter 24: Creating a Simple Calendar
Building a Simple Display Calendar
Checking User Input
Building the HTML Form
Creating the Calendar Table
Adding Events to the Calendar
Creating a Calendar Library
Chapter 25: Restricting Access to Your Applications
Authentication Overview
Client Authentication
Apache Authentication Module Functionality
File-Based Authentication
Database File-Based Access Control
Using Apache for Access Control
Implementing Access Rules
Evaluating Access Rules
Combining Apache Access Methods
Limiting Access Based on HTTP Methods
Restricting Access Based on Cookie Values
Creating the Authorized Users Table
Creating the Login Form and Script
Testing for the auth Cookie
Chapter 26: Logging and Monitoring Web Server Activity
Standard Apache Access Logging
Deciding What to Log
Logging Accesses to Files
Logging Accesses to a Program
Standard Apache Error Logging
Logging Errors to a File
Logging Errors to a Program
The syslog Daemon Argument
The LogLevel Directive
Managing Apache Logs
Resolving Hostnames
Log Rotation
Merging and Splitting Logs
Log Analysis
Monitoring Error Logs
Logging Custom Information to a Database
Creating the Database Table
Creating the PHP Code Snippet
Creating Sample Reports
Chapter 27: Application Localization
About Internationalization and Localization
About Character Sets
Environment Modifications
Configuration Changes to Apache
Configuration Changes to PHP
Configuration Changes to MySQL
Creating a Localized Page Structure
Chapter 28: Working with XML
What Is XML?
Basic XML Document Structure
Accessing XML in PHP Using DOM Functions
Accessing XML in PHP Using SimpleXML Functions
Part VI: Administration and Fine-tuning
Chapter 29: Apache Performance Tuning and Virtual Hosting
Scalability Issues
Operating System Limits
Performance-Related Apache Settings
Load Testing with ApacheBench
Proactive Performance Tuning
Mapping Files to Memory
Distributing the Load
Caching
Reduce Transmitted Data
Network Settings
Preventing Abuse
Robots
Implementing Virtual Hosting
IP-Based Virtual Hosting
Name-Based Virtual Hosts
Mass Virtual Hosting
Chapter 30: Setting Up a Secure Web Server
The Need for Security
The SSL Protocol
Addressing the Need for Confidentiality
Addressing the Need for Integrity
Addressing the Need for Authentication
Obtaining and Installing SSL Tools
OpenSSL
The mod_ssl Apache Module
Managing Certificates
Creating a Key Pair
Creating a Certificate Signing Request
Creating a Self-Signed Certificate
SSL Configuration
Starting the Server
Chapter 31: Optimizing and Tuning MySQL
Building an Optimized Platform
Using the benchmark() Function
MySQL Startup Options
Key Startup Parameters
Optimizing Your Table Structure
Optimizing Your Queries
Using the FLUSH Command
Using the SHOW Command
Retrieving Information About Databases and Tables
Retrieving Table Structure Information
Retrieving System Status
Chapter 32: Software Upgrades
Staying in the Loop
When to Upgrade
Upgrading MySQL
Upgrading Apache
Modifying Apache Without Upgrading
Upgrading PHP
Using PECL and PEAR to Extend PHP
Index