Ré-écriture d'url

Contenu du snippet

Les robots des moteurs de recherchent 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 peux pas le faire sous tous les serveurs.

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

Soit 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

Source / Exemple :


function url_encode($url)
{
	$pos = strpos($url, '?');
	
	if($pos === 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)
{
	if(empty($variables))
		return;
		
	$variables = substr($variables, 5);
	$variables = str_replace('___', 'Ω', $variables);
	$vars = explode("_", $variables);
	
	for($i = 0; $i < count($vars) ; $i++)
		$GLOBALS[$vars[$i]] = str_replace('&Omega;', '_', $vars[++$i]);
}

Conclusion :


Voia, j'attends vos commentaires...

14.07.2004: Prise en compte des _ pour les valeurs, vérifications des ancres

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.