|
- <?php
- /*
- Rewrite Function
- This function accepts an input and parses it into the $_GET, $_REQUEST, and $HTTP_GET_VARS Globals
- If your script relies on register_globals being enbaled
- call extract( $_GET, EXTR_OVERWRITE );
- after runnng this function to reregister the $_GET array pair values in to the global namespace
- input:
- $request = the string variable you need parsed into the global namespace
- $array_delim = the array pair value deliminator
- $pair_delim = the deliminator that seperates pair names from pairs values
-
- returns:
- void or no return value;
- Example Usage:
- -------------------------------------------------------------------------------
- In the .htaccess you have:
- RewriteEngine On
- RewriteBase /
- RewriteRule ^somepage/(.*)\.html somepage.php?rewrite=$1 [L]
- Your links:
- Your original link url was: http://yoursite.com/somepage.php?id=20&name=funny
- You change your url to: http://yoursite.com/somepage/id-20/name-funny.html
- In the script somepage.php you put this at the top:
- <?php
- if( $_GET['rewrite'])
- {
- $request = $_GET['rewrite'];
- mod_rewrite( $request, '/', '-' );
- # if you have register_globals enables uncomment the following
- # extract( $_GET, EXTR_OVERWRITE );
- }
- ?>
- What happenes when a user clicks the link:
- User sends request for "somepage/id-20/name-funny.html"
- ModRewrite Engine is on and request matches pattern matches "somepage/"
- ModRewrite engine changes the request to somepage.php?rewrite=id-20/name-funny
- The PHP engine is called and the script is run
- the $_GET['rewrite'] is processed by the mod_rewrite function
- the mod_rewrite function changes this value "id-20/name-funny" into
- $_GET['id'] = '20';
- $_GET['name'] = 'funny';
- then if you depend on register_globals being on ( read converting an old script )
- you call this:
- extract( $_GET, EXTR_OVERWRITE );
-
- right after the mod_rewrite function to put all the new $_GET variables into the global name space
- viola !
- mod_rewite made relatively easy
- */
- function mod_rewrite( $request, $array_delim, $pair_delim )
- {
- global $_GET, $HTTP_GET_VARS, $_REQUEST;
- $value_pairs = explode( $array_delim, $request );
- $make_global = array();
- foreach( $value_pairs as $pair )
- {
- $pair = explode( $pair_delim, $pair );
- $_GET[$pair[0]] = $pair[1];
- $_REQUEST[$pair[0]] = $pair[1];
- $HTTP_GET_VARS[$pair[0]] = $pair[1];
- }
- }
- ?>
复制代码 |
|