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.
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( '___', 'Ω', $variables ); $vars = explode( '_', $variables ); // création des variables for( $i = 0; $i < count( $vars ) ; $i++ ) $GLOBALS[ $vars[ $i ] ] = str_replace( 'Ω', '_', $vars[++$i] ); } ?>
Télécharger le zip avec un exemple: ici (2 fichiers .php)
Laisser un commentaire