Core PHP Programming

Core PHP Programming, Third Edition

 

  • By: Leon Atkinson
  • Publisher: Prentice Hall
  • Pub. Date: August 05, 2003
  • Print ISBN-13: 978-0-13-046346-3

usleep(integer microseconds)

The usleep function (Listing 14.12) causes execution to pause for the given number of microseconds. There are a million microseconds in a second.

integer ip2long(string address)

The ip2long function takes an IP address and returns an integer. This allows you to compress a 16-byte string into a 4-byte integer. Use long2ip to reverse the process.

string long2ip(integer address)

Use long2ip to get the textual representation of an IP address. Use ip2long to reverse the process.

array parse_url(string query)

The parse_url function breaks a URL into an associative array with the following elements: fragment, host, pass, path, port, query, scheme, user. The query is not evaluated as with the parse_str function.

array fgetcsv(resource file, integer length, string separator)

 
The fgetcsv function is used for reading comma-separated data from a file. It requires a valid file handle as returned by fopen, fsockopen, or popen. It also requires a maximum line length. The optional separator argument specifies the character to separate fields. If left out, a comma is used. Fields may be surrounded by double quotes, which allow embedding of commas and linebreaks in fields. The return value is an array containing one field per element, starting with element zero.

array get_meta_tags(string filename, boolean use_include_path)

The get_meta_tags function opens a file and scans for HTML meta tags. The function assumes it is a well-formed HTML file that uses native linebreaks. An array indexed by the name attribute of the meta tag is returned. If the name contains any characters illegal in identifiers, they will be replaced with underscores.

boolean is_file(string filename)

The is_file function returns TRUE if the given filename is neither a directory nor a symbolic link; otherwise it returns FALSE. Similar functions are is_dir and is_link.

boolean is_uploaded_file(string filename)

The is_uploaded_file function returns TRUE if a file was uploaded in an HTML form during the current request. Its purpose is to ensure that the file you expect to treat as an upload was indeed uploaded.

boolean is_writeable(string filename)

 
The is_writeable function returns TRUE if a file exists and is writeable; otherwise it returns FALSE. Similar functions are is_executable and is_readable.
 

boolean error_log(string message, integer type, string destination, string extra_headers)

The error_log function sends an error message to one of four places depending on the type argument. An alternative to error_log is the syslog function.

string highlight_string(string code, boolean return_instead)

The highlight_string function prints a string of PHP code to the browser using syntax highlighting. If the optional return_instead argument is TRUE, PHP returns the HTML instead of printing it.

string gethostbyaddr(string ip_address)

The gethostbyaddr function returns the name of the host specified by the numerical IP address. If the host cannot be resolved, the address is returned.

Sessions in Database

In fact, PHP can handle all these details for you. What's missing from the standard functionality is database integration. You can use session_set_save_handler to keep the session data in a database. The big advantage is that PHP takes care of generating session identifiers and sending them to the browser. The big disadvantage is that PHP keeps the session data as a serialized array. If you need to manipulate the session data before storing it or before returning it to PHP, you must first use unserialize, change the array, then serialize the array again before passing it along.

Why would you need to manipulate the variables in the session? Perhaps you wish to disallow certain variables from sessions. More likely you'd like to keep certain variables as columns in the session table so you can run queries with them. For example, each user in a store may have an active order. If you add a column to the session table for the order ID, you can run queries that show which users have invoices underway or even which items they have in their baskets.

The primary key of this table is PHP's session identifier, a 32-character string. Each time the user moves to a new page, the application updates the LastAction column. That way we can clear out any sessions that appear to be unused. The Invoice column holds a pointer to a row in an invoice table and the SessionData holds the serialized variables in the user's session.