The cart.5
script shown in Example 11-6 is a central point that
manages redirection to other scripts in the winestore. All pages that
have more than one button request this script using the
action
attribute of the
<form>
element. The script processes the
requests, determines from the GET
method
attributes which script should be requested next, and then redirects
the browser to that script.
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."; ?>
18.118.200.154