Reading Cookie Values
Redirecting to a Different Location
Using Session Tracking
Storing Sessions in a Database
Detecting Different Browsers
Building a GET Query String
Using HTTP Basic Authentication
Using Cookie Authentication
Flushing Output to the Browser
Buffering Output to the Browser
Compressing Web Output with gzip
Hiding Error Messages from Users
Tuning Error Handling
Using a Custom Error Handler
Eliminating "headers already sent" Errors
Logging Debugging Information
Reading Environment Variables
Setting Environment Variables
Reading Configuration Variables
Setting Configuration Variables
Communicating Within Apache
Program: Website Account (De)activator
Program: Abusive User Checker
Web programming is probably why you're reading this book. It's why the first version of PHP was written and what continues to make it so popular today. With PHP, it's easy to write dynamic web programs that do almost anything. Other chapters cover various PHP capabilities, like graphics, regular expressions, database access, and file I/O. These capabilities are all part of web programming, but this chapter focuses on some web-specific concepts and organizational topics that will make your web programming stronger.
Recipe 8.2, Recipe 8.3, and Recipe 8.4 show how to set, read, and delete cookies. A cookie is a small text string that the server instructs the browser to send along with requests the browser makes. Normally, HTTP requests aren't "stateful"; each request can't be connected to a previous one. A cookie, however, can link different requests by the same user. This makes it easier to build features such as shopping carts or to keep track of a user's search history.
Recipe 8.5 shows how to redirect users to a different web page than the one they requested. Recipe 8.6 explains the session module, which lets you easily associate persistent data with a user as he moves through your site. Recipe 8.7 demonstrates how to store session information in a database, which increases the scalability and flexibility of your web site. Discovering the features of a user's browser is shown in Recipe 8.8. Recipe 8.9 shows the details of constructing a URL that includes a GET query string, including proper encoding of special characters and handling of HTML entities.
The next two recipes demonstrate how to use authentication, which lets you protect your web pages with passwords. PHP's special features for dealing with HTTP Basic authentication are explained in Recipe 8.10. Sometimes it's a better idea to roll your own authentication method using cookies, as shown in Recipe 8.11.
The three following recipes deal with output control. Recipe 8.12 shows how to force output to be sent to the browser. Recipe 8.13 explains the output buffering functions. Output buffers enable you to capture output that would otherwise be printed or delay output until an entire page is processed. Automatic compression of output is shown in Recipe 8.14.
Recipe 8.15 to Recipe 8.20 cover error handling topics, including controlling where errors are printed, writing custom functions to handle error processing, and adding debugging assistance information to your programs. Recipe 8.19 includes strategies for avoiding the common "headers already sent" error message, such as using the output buffering discussed in Recipe 8.13.
The next four recipes show how to interact with external variables: environment variables and PHP configuration settings. Recipe 8.21 and Recipe 8.22 discuss environment variables, while Recipe 8.23 and Recipe 8.24 discuss reading and changing PHP configuration settings. If Apache is your web server, you can use the techniques in Recipe 8.25 to communicate with other Apache modules from within your PHP programs.
Recipe 8.26 demonstrates a few methods for profiling and benchmarking your code. By finding where your programs spend most of their time, you can focus your development efforts on improving the code that has the most noticeable speed-up effect to your users.
This chapter also includes two programs that assist in web site maintenance. Program Recipe 8.27 validates user accounts by sending an email message with a customized link to each new user. If the user doesn't visit the link within a week of receiving the message, the account is deleted. Program Recipe 8.28 monitors requests in real time on a per-user basis and blocks requests from users that flood your site with traffic.
Copyright © 2003 O'Reilly & Associates. All rights reserved.