Ré-écriture d'url

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 628 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaires

coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
Salut!
Voila, ca tiens compte des _

@++

R@f
cs_koko
Messages postés
654
Date d'inscription
lundi 14 janvier 2002
Statut
Membre
Dernière intervention
20 février 2005
-
essaie d'utiliser des caractères qui ne se voit pas, ou bien une succesion de caractère
ÿ¯ÿ alt+0255 alt+223 alt+0255
par exemple
ou bien
ß alt+0223
^^
coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
Salut!
Je vais voir. Le problème est de trouver un caractères peu utilisé mais .......... utilisable, ;-)

@++

R@f
cs_babid
Messages postés
49
Date d'inscription
dimanche 21 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2008
-
Salut,

Sympa l'idée, mais je pense que tu aurais dû utiliser un autre caractère que l'underscore.
Je m'explique par un exemple simple.
Admette que tes variable d'url soit une liste d'adresse mails, et que l'une d'elles contienne un underscore. Et ben là, M......, toute ta chaine parte en C.......

Ce n'était qu'une suggestion, sinon l'idée est super.

Bon courage et bonne continuation. ;-))
@+++
Babid
coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
J'ai regardé la doc... Serialize et unserialize font pas vraiment pareil... Servent juste à encoder/décoder des objets et autre...

@++

R@f

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.