For example, if the user clicks the Empty Cart button on any page, the following URL is requested:
http://localhost/example.cart.5.php?empty=Empty+Cart
The cart.5 script is then processed, the following if
test is found to be true
, and the script redirects to the cart.4 script:
// Did they want to empty the cart? if (!empty($parameters["empty"])) { // Redirect the browser to the empty page // using the HTTP response header "Location:" header("Location: example.cart.4.php"); exit; }
When redirecting to some scripts, the redirection also passes on the entire QUERY_STRING
-the query string is stored in the PHP environment variable $QUERY_STRING
-as a GET
method parameter. In addition, a session variable, referer
, is registered in selected cases so that in later processing the script can redirect to the original calling page.
As discussed in Chapter 10, there are several other possible approaches for managing requests for different scripts throughout an application. An alternative to the approach is to add each button to the HTML page as a separate <form>
element with its own action
attribute. Other approaches include using embedded links or images instead of buttons.
Example 11-6. cart.5 manages button clicks in the winestore
<?php // This script redirects the browser to another script, // depending on what parameters are provided. It is used // for processing several submit buttons from an // HTML <form> include 'include.inc'; set_error_handler("errorHandler"); session_start( ); // Clean up the data, and save the results in // an array foreach($HTTP_GET_VARS as $varname => $value) $parameters[$varname] = clean($value, 10); // Did they want to view the cart? if (!empty($parameters["view"])) { // Redirect the browser to the cart page // using the HTTP response header "Location:" header("Location: example.cart.2.php"); exit; } // Did they want to go home? if (!empty($parameters["home"])) { // Redirect the browser to the home page // using the HTTP response header "Location:" header("Location: example.cart.1.php"); exit; } // Did they want to empty the cart? if (!empty($parameters["empty"])) { // Redirect the browser to the empty page // using the HTTP response header "Location:" header("Location: example.cart.4.php"); exit; } // Did they want to update the quantities? if (!empty($parameters["update"])) { // Redirect the browser to the update page // using the HTTP response header "Location:" header("Location: example.cart.6.php?" . $QUERY_STRING"); exit; } // Did they want to save the search? if (!empty($parameters["savesearch"])) { // Redirect the browser to the search save page // using the HTTP response header "Location:" header("Location: example.cart.8.php?" . $QUERY_STRING"); exit; } // Did they want to login to the site? if (!empty($parameters["login"])) { // Save the referer page for later redirection if (session_is_registered("referer")) session_unregister("referer"); session_register("referer"); $referer = $HTTP_REFERER; // Redirect the browser to the login page // using the HTTP response header "Location:" header("Location: example.order.1.php?" . $QUERY_STRING"); exit; } if (!empty($parameters["logout"])) { // Save the referer page for later redirection if (session_is_registered("referer")) session_unregister("referer"); session_register("referer"); $referer = $HTTP_REFERER; // Redirect the browser to the logout page // using the HTTP response header "Location:" header("Location: example.order.2.php?" . $QUERY_STRING"); exit; } // Did they want to finalise the purchase? if (!empty($parameters["buy"])) { // Redirect the browser to the purchase page // using the HTTP response header "Location:" header("Location: example.order.3.php?" . $QUERY_STRING"); exit; } // Did they want to edit customer details? if (!empty($parameters["account"])) { // Redirect the browser to the customer account // page using the HTTP response header "Location:" header("Location: example.customer.2.php"); exit; } // They got here without providing an option, so // there is a problem echo "You arrived here unexpectedly."; ?>