Recipe 8.4. Redirecting to a Different Location


8.4.1. Problem

You want to automatically send a user to a new URL. For example, after successfully saving form data, you want to redirect a user to a page that confirms that the data has been saved.

8.4.2. Solution

Before any output is printed, use header( ) to send a Location header with the new URL, and then call exit( ) so that nothing else is printed. Example 8-8 shows how to do this.

Redirecting to a different location

<?php header('Location: http://www.example.com/confirm.html'); exit(); ?>

8.4.3. Discussion

If you want to pass variables to the new page, you can include them in the query string of the URL, as in Example 8-9.

Redirecting with query string variables

<?php header('Location: http://www.example.com/?monkey=turtle'); exit(); ?>

Redirect URLs should include the protocol and hostname. They shouldn't be just a pathname. Example 8-10 shows a good Location header and a bad one.

Good and bad Location headers

<?php // Good Redirect header('Location: http://www.example.com/catalog/food/pemmican.php'); // Bad Redirect header('Location: /catalog/food/pemmican.php'); ?>

The URL that you are redirecting a user to is retrieved with get. You can't redirect someone to retrieve a URL via post. With JavaScript, however, you can simulate a redirect via post by generating a form that gets submitted (via post) automatically. When a (JavaScript-enabled) browser receives the page in Example 8-11, it will immediately post the form that is included.

Redirecting via a posted form

<html>   <body onload="document.getElementById('redirectForm').submit()">     <form id='redirectForm' method='POST' action='/done.html'>       <input type='hidden' name='status' value='complete'/>       <input type='hidden' name='id' value='0u812'/>       <input type='submit' value='Please Click Here To Continue'/>     </form>   </body> </html>

The form in Example 8-11 has an id of redirectForm, so the code in the <body/> element's onload attribute submits the form. The onload action does not execute if the browser has JavaScript disabled. In that situation, the user sees a Please Click Here To Continue button.

8.4.4. See Also

Documentation on header( ) at http://www.php.net/header.




PHP Cookbook, 2nd Edition
PHP Cookbook: Solutions and Examples for PHP Programmers
ISBN: 0596101015
EAN: 2147483647
Year: 2006
Pages: 445

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net