Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Web Database Applications with PHP and MySQL, 2nd Edition
A Note Regarding Supplemental Files
Preface
What This Book Is About
What You Need to Know
How This Book Is Organized
How to Use This Book
Conventions Used in This Book
Using Code Examples
How to Contact Us
Web Site and Code Examples
Acknowledgments
1. Database Applications and the Web
1.1. The Web
1.2. Three-Tier Architectures
1.2.1. HTTP: the Hypertext Transfer Protocol
1.2.1.1. HTTP example
1.2.2. State
1.2.3. Thickening the Client in the Three-Tier Model
1.2.4. The Middle Tier
1.2.4.1. Web servers
1.2.5. Web Scripting with PHP
1.2.5.1. Introducing PHP5
1.2.6. The Database Tier
1.2.7. Database Management Systems
1.2.7.1. SQL
1.2.7.2. Why use a database server?
1.2.7.3. Examples of when to use a database server
1.2.7.4. Examples of when not to use a DBMS
1.2.7.5. The MySQL server
1.2.7.6. Introducing MySQL 4
2. The PHP Scripting Language
2.1. Introducing PHP
2.1.1. PHP Basics
2.1.1.1. Creating PHP scripts
2.1.1.2. Comments
2.1.1.3. Outputting data with echo and print
2.1.2. String Literals
2.1.2.1. Variable substitution
2.1.2.2. Character encoding
2.1.3. Variables
2.1.4. Types
2.1.5. Constants
2.1.6. Expressions, Operators, and Variable Assignment
2.1.6.1. Operator precedence
2.2. Conditions and Branches
2.2.1. if...else Statement
2.2.2. switch Statement
2.2.3. Conditional Expressions
2.3. Loops
2.3.1. while
2.3.2. do...while
2.3.3. for
2.3.4. Changing Loop Behavior
2.4. Functions
2.5. Working with Types
2.5.1. Type Conversion
2.5.2. Automatic Type Conversion
2.5.3. Examining Variable Type and Content
2.5.3.1. Is-identical and is-not-identical operators
2.5.3.2. Debugging with gettype( ), print_r( ), and var_dump( )
2.5.3.3. Testing, setting, and unsetting variables
2.6. User-Defined Functions
2.6.1. Parameter Types and Return Types
2.6.2. Variable Scope
2.6.2.1. Global variables
2.6.2.2. Static variables
2.6.3. Passing Variables to Functions
2.6.3.1. Passing parameters by reference
2.6.3.2. Assigning by reference
2.6.3.3. Default parameter values
2.6.4. Reusing Functions with Include and Require Files
2.6.4.1. Managing include files
2.7. A Working Example
3. Arrays, Strings, and Advanced Data Manipulation in PHP
3.1. Arrays
3.1.1. Creating Arrays
3.1.1.1. Associative arrays
3.1.1.2. Removing elements from an array
3.1.1.3. Array order
3.1.1.4. Heterogeneous arrays
3.1.1.5. Multidimensional arrays
3.1.2. Using foreach Loops with Arrays
3.1.3. Basic Array Functions
3.1.3.1. Counting elements in arrays
3.1.3.2. Functions that create arrays
3.1.3.3. Exploding and imploding strings
3.1.3.4. Finding the maximum and minimum values in an array
3.1.3.5. Finding values in arrays with in_array( ) and array_search( )
3.1.3.6. Keys and values
3.1.3.7. Joining two or more arrays
3.1.3.8. Reordering elements with array_reverse( )
3.1.4. Sorting Arrays
3.1.4.1. Sorting with sort( ) and rsort( )
3.1.4.2. Sorting associative arrays
3.1.4.3. Sorting on keys
3.1.4.4. Sorting with user-defined element comparison
3.2. Strings
3.2.1. Length of a String
3.2.2. Printing and Formatting Strings
3.2.2.1. Creating formatted output with sprintf( ) and printf( )
3.2.2.2. Padding strings
3.2.2.3. Changing case
3.2.2.4. Trimming whitespace
3.2.3. Comparing Strings
3.2.4. Finding and Extracting Substrings
3.2.4.1. Extracting a substring from a string
3.2.4.2. Finding the position of a substring
3.2.4.3. Extracting a found portion of a string
3.2.5. Replacing Characters and Substrings
3.2.5.1. Replacing substrings
3.2.5.2. Translating characters and substrings
3.3. Regular Expressions
3.3.1. Regular Expression Syntax
3.3.1.1. Characters and wildcards
3.3.1.2. Character lists
3.3.1.3. Anchors
3.3.1.4. Optional and repeating characters
3.3.1.5. Groups
3.3.1.6. Alternative patterns
3.3.1.7. Escaping special characters
3.3.1.8. Metacharacters
3.3.2. Regular Expression Functions
3.3.2.1. Finding and extracting values
3.3.2.2. Replacing substrings
3.3.2.3. Splitting a string into an array
3.4. Dates and Times
3.4.1. Generating a Timestamp
3.4.1.1. Current time
3.4.1.2. Creating timestamps with mktime( ) and gmmktime( )
3.4.1.3. String to timestamp
3.4.1.4. Subsecond times
3.4.2. Formatting a Date
3.4.3. Validating a Date
3.5. Integers and Floats
3.5.1. Absolute Value
3.5.2. Ceiling and Floor
3.5.3. Rounding
3.5.4. Number Systems
3.5.5. Basic Trigonometry Functions
3.5.6. Powers and Logs
3.5.7. Testing Number Results
3.5.8. Random Number Generation
4. Introduction to Object-Oriented Programming with PHP 5
4.1. Classes and Objects
4.1.1. Member Variables
4.1.2. Member Functions
4.1.3. Using include Files for Class Definitions
4.1.4. Constructors
4.1.5. Destructors
4.1.6. Private Members Variables
4.1.7. Private Member Functions
4.1.8. Static Member Variables
4.1.9. Static Member Functions
4.1.10. Cloning Objects
4.1.10.1. Cloning in PHP5
4.1.10.2. Cloning in PHP4
4.2. Inheritance
4.2.1. Calling Parent Constructors
4.2.2. Redefined Functions
4.2.3. Protected Member Variables and Functions
4.2.4. Final Functions
4.3. Throwing and Catching Exceptions
4.3.1. The Exception Class
5. SQL and MySQL
5.1. Database Basics
5.1.1. Introducing Relational Databases
5.1.2. Database Terminology
5.1.3. The Winestore Database
5.1.3.1. The winestore entity-relationship model
5.2. MySQL Command Interpreter
5.3. Managing Databases and Tables
5.3.1. Creating Databases
5.3.2. Creating Tables
5.3.2.1. Tables and attributes
5.3.2.2. Modifiers
5.3.2.3. Keys
5.3.3. Deleting Databases and Tables
5.4. Inserting, Updating, and Deleting Data
5.4.1. Inserting Data
5.4.1.1. Defaults
5.4.1.2. Auto-increment
5.4.2. Deleting Data
5.4.3. Updating Data
5.5. Querying with SQL SELECT
5.5.1. Basic Querying
5.5.2. WHERE Clauses
5.5.3. Sorting and Grouping Output
5.5.3.1. ORDER BY
5.5.3.2. GROUP BY
5.5.3.3. HAVING
5.5.3.4. Combining clauses
5.5.3.5. DISTINCT
5.5.4. Limiting Output in MySQL
5.6. Join Queries
5.6.1. Beware of the Cartesian Product
5.6.2. Elementary Natural Joins
5.6.2.1. Examples
5.6.2.2. Using DISTINCT in joins
5.6.3. Joins with More than Two Tables
5.7. Case Study: Adding a New Wine
6. Querying Web Databases
6.1. Querying a MySQL Database Using PHP
6.1.1. Opening and Using a Database Connection
6.1.2. Using mysql_fetch_array( )
6.1.3. Error Handling of MySQL Database Functions
6.1.4. Working with Table Structures
6.1.5. Formatting Results
6.1.6. Using Require Files in Practice
6.1.7. Case Study: Producing a Select List
6.1.7.1. Implementing the selectDistinct( ) function
6.2. Processing User Input
6.2.1. Passing Data from the Browser to the Server
6.2.2. Passing Data with the HTML Form Environment
6.2.3. Passing Data with URLs
6.2.4. Passing Data with Embedded Links
6.2.5. More on Accessing User Data
6.2.5.1. Before PHP 4.2
6.2.6. Processing Form Data
6.2.6.1. The MULTIPLE attribute
6.2.6.2. Other form issues
6.2.7. Security and User Data
6.2.8. Querying with User Input
6.2.9. One-Component Querying
6.3. MySQL Function Reference
6.3.1. Frequently Used Functions
6.3.2. Other Functions
6.3.3. Functions to Avoid
7. PEAR
7.1. Overview
7.2. Core Components
7.2.1. What's Installed?
7.2.1.1. Unix systems—PHP 4.3.0 and later
7.2.1.2. Microsoft Windows—PHP 4.3.2 and later
7.2.2. Using PEAR DB
7.2.2.1. Should I use PEAR DB?
7.2.2.2. Getting started
7.2.2.3. Handling errors in PEAR DB
7.2.2.4. Essential functions for accessing MySQL with PEAR DB
7.3. Packages
7.3.1. Installing, Upgrading, and Understanding Packages
7.3.1.1. Finding out about packages
7.3.1.2. Using the PEAR installer
7.3.2. Using HTML Templates
7.3.2.1. Working with blocks and placeholders
7.3.2.2. Nested blocks
7.3.2.3. Preserving and removing blocks
7.3.2.4. More on nesting and optional blocks
7.3.2.5. Extended Integrated Templates (ITX)
7.3.2.6. Essential IT and ITX functions
7.3.3. Optional Packages
7.3.3.1. Authentication
7.3.3.2. Benchmarking
7.3.3.3. Caching
7.3.3.4. Console
7.3.3.5. Database
7.3.3.6. Date
7.3.3.7. Filesystem
7.3.3.8. HTML
7.3.3.9. HTTP
7.3.3.10. Internationalization
7.3.3.11. Logging
7.3.3.12. Mail
7.3.3.13. Networking
7.3.3.14. PEAR
7.3.3.15. PHP
7.3.3.16. XML
7.3.3.17. Web services
8. Writing to Web Databases
8.1. Database Inserts, Updates, and Deletes
8.1.1. Reloading Data and Relocation Techniques
8.1.1.1. Solving the reload problem in practice
8.1.2. Inserting, Updating, and Deleting Data
8.1.2.1. Inserting data
8.1.2.2. Updating data
8.1.2.3. Case study: updates in practice
8.1.2.4. Deleting data
8.2. Issues in Writing Data to Databases
8.2.1. Transactions and Concurrency
8.2.2. Locking to Achieve Concurrency in MySQL
8.2.2.1. When and how to lock tables
8.2.2.2. The LOCK TABLES and UNLOCK TABLES statements in MySQL
8.2.2.3. Locking for performance
8.2.3. Locking Tables in Web Database Applications
8.2.3.1. Locking methods that don't work in web database applications
8.2.3.2. Locking with an auxiliary table
8.2.3.3. Managing identifiers with PEAR DB
9. Validation with PHP and JavaScript
9.1. Validation and Error Reporting Principles
9.1.1. Models That Don't Work
9.1.2. Models That Do Work
9.2. Server-Side Validation with PHP
9.2.1. Mandatory Data
9.2.2. Validating Strings
9.2.2.1. Basic techniques
9.2.2.2. Validating Zip and postcodes
9.2.2.3. Validating email addresses
9.2.2.4. Validating URLs
9.2.2.5. Validating numbers
9.2.2.6. Validating credit cards
9.2.3. Validating Dates and Times
9.2.3.1. Dates
9.2.3.2. Times
9.2.3.3. Using the PEAR Date package
9.2.3.4. Logic, the date function, and MySQL
9.3. JavaScript and Client-Side Validation
9.3.1. Introducing JavaScript
9.3.2. JavaScript and PHP
9.3.2.1. Generating output
9.3.2.2. Loops and conditionals
9.3.2.3. Functions
9.3.2.4. Debugging JavaScript
9.3.2.5. Objects
9.3.2.6. Events
9.3.2.7. Methods and properties
9.3.3. JavaScript Examples
9.3.3.1. A password form validation function
9.3.3.2. Rollover presentation with mouseover events
9.3.3.3. Prefilling form data with JavaScript calculations
9.3.3.4. Interacting with the web browser
9.3.3.5. Which browser is the user using?
9.3.3.6. Drop-down menus
9.3.4. Case Study: A Generic JavaScript Validation Function
9.3.4.1. The JavaScript validation script
9.3.4.2. Using the JavaScript validation function
9.3.4.3. The PHP and template components
10. Sessions
10.1. Introducing Session Management
10.2. PHP Session Management
10.2.1. Starting a Session
10.2.2. Using Session Variables
10.2.2.1. Unsetting session variables
10.2.2.2. Session variable types
10.2.2.3. Serialization of session variables
10.2.3. Ending a Session
10.2.4. Designing Session-Based Applications
10.2.4.1. Session to track authenticated users
10.2.4.2. Sessions to track anonymous users
10.3. Case Study: Using Sessions in Validation
10.3.1. Improving the Phonebook Details Form
10.3.2. The Validation Script
10.3.2.1. Improving error messages
10.3.2.2. Saving last-entered values as a session variable
10.3.2.3. The final validation script
10.3.3. The Phonebook Entry Form Script
10.3.3.1. Displaying previously entered form values
10.3.3.2. Displaying error messages
10.3.3.3. The final phonebook entry script
10.4. When to Use Sessions
10.4.1. Reasons to Use Sessions
10.4.1.1. Performance
10.4.1.2. Sequence of interaction
10.4.1.3. Intermediate results
10.4.1.4. Personalization
10.4.2. Reasons to Avoid Sessions
10.4.2.1. Need for centralized session store
10.4.2.2. Performance
10.4.2.3. Timeouts
10.4.2.4. Bookmark restrictions
10.4.2.5. Security
10.5. PHP Session API and Configuration
10.5.1. Functions for Accessing Sessions in PHP
10.5.1.1. Functions used when register_globals is enabled
10.5.2. Session Management Without Cookies
10.5.2.1. No cookie?
10.5.2.2. Including the session ID in URLs
10.5.2.3. URL rewriting
10.5.2.4. Turning off cookies
10.5.3. Garbage Collection
10.5.4. Configuration Parameters
11. Authentication and Security
11.1. HTTP Authentication
11.1.1. How HTTP Authentication Works
11.1.2. Using Apache to Authenticate
11.2. HTTP Authentication with PHP
11.2.1. Accessing User Credentials
11.2.2. Managing HTTP Authentication with PHP
11.2.3. Limiting Access by IP Address
11.2.4. Authentication Using a Database
11.2.4.1. Creating a database and table
11.2.4.2. Protecting passwords
11.2.4.3. Authenticating
11.2.4.4. Encrypting other data in a database
11.3. Form-Based Authentication
11.3.1. Reasons to Use HTTP Authentication
11.3.2. Reasons to Avoid HTTP Authentication
11.3.3. Authentication and Session-Based Applications
11.3.3.1. Session hijacking
11.3.3.2. Recording IP addresses to detect session hijack attempts
11.3.4. Session-Based Authentication Framework
11.3.4.1. Code overview
11.3.4.2. Login page
11.3.4.3. Setup script
11.3.4.4. The authentication.inc require file
11.3.4.5. Application scripts and pages
11.3.4.6. Logout script
11.3.4.7. Password management
11.4. Protecting Data on the Web
11.4.1. The Secure Sockets Layer Protocol
11.4.1.1. SSL architecture
11.4.1.2. Cipher suites
11.4.1.3. SSL sessions
11.4.1.4. Certificates and certification authorities
12. Errors, Debugging, and Deployment
12.1. Errors
12.1.1. Accessing the PHP Manual
12.1.2. Configuring Error Reporting
12.2. Common Programming Errors
12.2.1. A Page That Produces Partial or No Output
12.2.2. Variable Problems
12.2.2.1. Variable naming
12.2.2.2. Missing output
12.2.3. Less Common Problems
12.2.3.1. Complaints about headers
12.2.3.2. Missing semicolons, braces, and quotes
12.2.3.3. Source shown in the browser
12.3. Custom Error Handlers
12.3.1. A Basic Custom Handler
12.3.2. A Production Error Handler
12.3.2.1. Including debugging information
12.3.2.2. Logging and notifying the user
12.3.2.3. Triggering your own errors
12.3.2.4. Cleaning up the application
13. Reporting
13.1. Creating a Report
13.1.1. Formats
13.1.1.1. Portable Document Format (PDF)
13.1.1.2. Rich Text Format (RTF)
13.1.1.3. PostScript
13.1.1.4. HTML and XML
13.1.1.5. Email and plain text
13.2. Producing PDF
13.2.1. Hello, world
13.2.2. A Full-Featured Document
13.2.3. A Database Example
13.2.4. Creating a Report
13.3. PDF-PHP Reference
13.3.1. EZPDF Class
13.3.2. Base Class
14. Advanced Features of Object-Oriented Programming in PHP 5
14.1. Working with Class Hierarchies
14.1.1. Polymorphism
14.1.2. Discovering Relationships
14.1.2.1. Functions
14.2. Class Type Hints
14.3. Abstract Classes and Interfaces
14.3.1. The abstract keyword
14.3.2. Interfaces
14.4. Freight Calculator Example
14.4.1. Review of the FreightCalculator
14.4.2. Deliverable Interface
14.4.3. Improving the FreightCalculator
14.4.4. Summary of Improvements
14.4.5. Using the Improved Freight Calculator
14.4.6. Class Diagram
15. Advanced SQL
15.1. Exploring with SHOW
15.2. Advanced Querying
15.2.1. Advanced Join Types
15.2.1.1. Natural and inner joins
15.2.1.2. Left and right joins
15.2.1.3. Unions
15.2.2. Aliases
15.2.3. Nested Queries
15.2.3.1. Introduction
15.2.3.2. The IN clause
15.2.3.3. The EXISTS clause
15.2.3.4. Nested queries in the FROM clause
15.2.4. User Variables
15.2.5. ROLLUP with GROUP BY
15.2.6. Other MySQL Topics
15.3. Manipulating Data and Databases
15.3.1. Altering Databases
15.3.2. More on Inserting Data
15.3.2.1. Using INSERT with SELECT
15.3.2.2. Using CREATE TABLE with SELECT
15.3.2.3. Replacing data
15.3.2.4. Bulk loading a file into a database
15.3.2.5. Delayed insertion
15.3.3. More on Deleting Data
15.3.4. More on Updating Data
15.4. Functions
15.4.1. Arithmetic and Comparison Operators
15.4.1.1. String functions
15.4.1.2. Mathematical functions
15.4.1.3. Date and time functions
15.4.1.4. Miscellaneous operators and functions
15.5. Automating Querying
15.5.1. Unix
15.5.2. Microsoft Windows
15.6. Table Types
15.6.1. Overview
15.6.2. MyISAM
15.6.3. InnoDB
15.6.3.1. Transactions using COMMIT and ROLLBACK
15.6.4. Heap
15.7. Backup and Recovery
15.7.1. Backup
15.7.2. Selective Backups
15.7.3. Restore
15.7.4. Checking and Fixing Tables
15.7.5. Exporting Data to Other Environments
15.8. Managing Users and Privileges
15.8.1. Creating Users and Privileges
15.8.1.1. Privileges and scope
15.8.1.2. Network access
15.8.2. Revoking Privileges
15.8.2.1. How MySQL manages privileges
15.9. Tuning MySQL
15.9.1. Index Design
15.9.2. Design Tips
15.9.3. Server Tuning Tips
15.9.4. Query Caching
15.9.4.1. Configuring query caching
15.9.4.2. Controlling query caching
16. Hugh and Dave's Online Wines:A Case Study
16.1. Functional and System Requirements
16.1.1. Requirements List
16.2. Application Overview
16.2.1. Winestore Scripts
16.2.1.1. Functional overview
16.2.1.2. Using and accessing the source code
16.3. Common Components
16.3.1. Application Templates
16.3.2. The winestoreTemplate Class
16.3.2.1. How the class works
16.3.2.2. The buttons and the button parameter
16.3.3. The winestoreFormTemplate Class
16.3.3.1. How the class works
16.3.4. Database Parameters
16.3.5. Validation
16.3.6. Custom Error Handler
16.3.7. General-Purpose Functions
17. Managing Customers
17.1. Code Overview
17.2. Customer Validation
17.3. The Customer Form
17.3.1. The Customer Receipt Page
18. The Shopping Cart
18.1. Code Overview
18.2. The Winestore Home Page
18.3. The Shopping Cart Implementation
18.3.1. Viewing the Shopping Cart
18.3.2. Adding Items to the Shopping Cart
18.3.3. Emptying the Shopping Cart
18.3.4. Updating the Shopping Cart Quantities
19. Ordering and Shipping at the Online Winestore
19.1. Code Overview
19.2. Credit Card and Shipping Instructions
19.3. Finalizing Orders
19.4. HTML and Email Receipts
19.4.1. Email Receipt
19.4.1.1. The PEAR Mail package
19.4.2. HTML Receipts
20. Searching and Authentication in the Online Winestore
20.1. Code Overview
20.1.1. Searching and Browsing
20.1.2. Authentication
20.2. Searching and Browsing
20.2.1. Search Criteria Form
20.2.2. Querying and Displaying Results
20.2.2.1. Finding the wines
20.2.2.2. Displaying the wines
20.3. Authentication
20.3.1. General-Purpose Functions
20.3.2. Logging In and Out
20.3.3. Changing Passwords
A. Linux Installation Guide
A.1. Finding Out What's Installed
A.1.1. MySQL
A.1.2. Apache and PHP
A.2. Installation Overview
A.3. Installing MySQL
A.3.1. Starting MySQL
A.3.2. Configuring MySQL
A.4. Installing Apache
A.4.1. Installing a Secure Apache Server
A.4.1.1. Installing OpenSSL
A.4.1.2. Creating a key and a certificate
A.4.2. Installing a Regular Apache Server
A.5. Installing PHP
A.6. What's Needed for This Book
A.6.1. Installing PEAR Packages
A.6.2. Installing the Code Examples
A.6.3. Installing the PDF PHP Library
A.6.4. Loading the Winestore Database
A.6.5. Installing the Winestore Application
B. Microsoft Windows Installation Guide
B.1. Installation Overview
B.2. Installing with EasyPHP
B.3. What's Needed for This Book
B.3.1. Installing PEAR Packages
B.3.2. Installing the Code Examples
B.3.3. Installing the PDF PHP Library
B.3.4. Loading the Winestore Database
B.3.5. Installing the Winestore Application
C. Mac OS X Installation Guide
C.1. Getting Started
C.2. Installing MySQL
C.2.1. Configuring MySQL
C.3. Setting Up Apache and PHP
C.3.1. Starting Apache
C.3.2. The Apache and PHP Setup
C.3.3. Upgrading PHP
C.3.4. Installing a Secure Apache Server
C.3.4.1. Creating a key and certificate
C.4. What's Needed for This Book
C.4.1. Installing PEAR Packages
C.4.2. Installing the Code Examples
C.4.3. Installing the PDF PHP Library
C.4.4. Loading the Winestore Database
C.4.5. Installing the Winestore Application
D. Web Protocols
D.1. Network Basics
D.1.1. TCP/IP
D.1.2. IP Addresses
D.1.2.1. Ports
D.2. Hypertext Transfer Protocol
D.2.1. Uniform Resource Locators
D.2.1.1. Protocol
D.2.1.2. Host and service identification
D.2.1.3. Nonstandard TCP ports
D.2.1.4. Resource identification
D.2.1.5. Parameters and queries
D.2.1.6. Fragment identifiers
D.2.1.7. Absolute and relative URLs
D.2.1.8. URL encoding
D.2.2. HTTP Requests
D.2.2.1. Request methods
D.2.2.2. GET versus POST
D.2.3. HTTP Responses
D.2.3.1. Status codes
D.2.4. Caching
E. Modeling and Designing Relational Databases
E.1. The Relational Model
E.1.1. Case Study: Relationships in the Winestore
E.2. Entity-Relationship Modeling
E.2.1. Case Study: Modeling the Online Winestore
E.2.1.1. Identifying entities in ER modeling
E.2.1.2. Identifying relationships in ER modeling
E.2.1.3. Relationships in the winestore ER model
E.2.1.4. Identifying key attributes in ER modeling
E.2.1.5. Other ER modeling tools
E.2.1.6. Completing the ER model
E.2.2. Converting an Entity-Relationship Model to SQL
E.2.2.1. Step 1: Convert regular entities to tables
E.2.2.2. Step 2: Convert weak entities to tables
E.2.2.3. Step 3: One-to-one relationships
E.2.2.4. Step 4: One-to-many relationships
E.2.2.5. Step 5: Many-to-many relationships
F. Managing Sessions in theDatabase Tier
F.1. Using a Database to Keep State
F.2. PHP Session Management
F.2.1. PHP Session Management Storage Methods
F.2.2. Building User-Defined Storage Handlers
F.3. MySQL Session Store
F.3.1. Session Table Structure
F.3.2. Handler Implementations
F.3.2.1. Support functions
F.3.2.2. Session open handler
F.3.2.3. Session read handler
F.3.2.4. Session write handler
F.3.2.5. Session close handler
F.3.2.6. Session destroy handler
F.3.2.7. Garbage collection handler
F.3.2.8. Registering session handlers
F.3.3. Using the User-Defined Session Handler Code
F.3.4. PEAR's HTTP_Session Package
G. Resources
G.1. Client Tier Resources
G.2. Middle-Tier Resources
G.2.1. Web Server and Web Technology Resources
G.2.2. Networking and Web Resources
G.2.3. PHP resources
G.3. Database Tier Resources
G.4. Security and Cryptography Resources
H. The Improved MySQL Library
H.1. New Features
H.2. Getting Started
H.2.1. Installing the Library
H.2.2. Migrating to the New Library
H.3. Using the New Features
H.3.1. Basic Features
H.3.2. Preparing and Executing Queries
H.3.2.1. Inserting data
H.3.2.2. Retrieving data
H.3.3. Profiling Queries
Index
About the Authors
Colophon
← Prev
Back
Next →
← Prev
Back
Next →