[PHP] [Astuces] Ré-écriture d’url

Titre: Ré-écriture d’url
Date: Juin-Juillet 2004
Language: PHP
Description: Les robots des moteurs de recherche n’acceptent pas plus de 2 variables dans l’url. Quand y en à plus, il faut utiliser l’url rewriting. Mais ca demande un .htaccess et on ne peut le faire sous tous les serveurs.

Remarque: Pour un résultat optimal, mieux vaut utiliser de l’url rewriting.

Voici donc une fonction d’encodage et de décodage d’url.

Soient 2 fichiers: page1.php et page2.php.
page2.php étant appelée depuis page1.php avec: page2.php?var1=12&var2=dodo&var3=yahoo

On fait:
$url = url_encode(‘page2.php?var1=12&var2=dodo&var3=yahoo’);
// ici, url vaut: page2.php?vars=var1_12_var2_dodo_var3_yahoo
header(« location: $url »);

Dans pag2.php:
url_decode($_SERVER[‘QUERY_STRING’]);
Et on peux utiliser $var1 $var2 $var3

<?php
function url_encode( $url )
{
	// si pas de ? (donc pas de variables )
	if( ( $pos = strpos( $url, '?' ) ) === false )
		return $url;
	
	$variables = substr( $url, $pos + 1 );
	$variables = str_replace( '_', '___', $variables );
	$variables = str_replace( '&', '_', $variables );
	$variables = str_replace( '=', '_', $variables );
	
	$url_finale = substr( $url, 0, $pos + 1 ) . 'vars=' . $variables;
	
	return $url_finale;
}

function url_decode( $variables )
{
	// rien à décoder
	if( empty( $variables ) )
		return;
	
	$variables = substr( $variables, 5 );
	$variables = str_replace( '___', '&Omega;', $variables );
	$vars = explode( '_', $variables );
	
	// création des variables
	for( $i = 0; $i < count( $vars ) ; $i++ )
		$GLOBALS[ $vars[ $i ] ] = str_replace( '&Omega;', '_', $vars[++$i] );
}
?>

Télécharger le zip avec un exemple: ici (2 fichiers .php)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *