[PHP] caractère spéciaux dans url

[Résolu/Fermé]
Signaler
-
Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
-
Bonjour,
Jusqu'a présent, les url de mon site se finissait par l'id de l'entrée a laquelle il correspondait :
<?php	$reponse = mysql_query("SELECT * FROM imagess ORDER BY ID DESC LIMIT 0, 4 "); 
				while ($donnees = mysql_fetch_array($reponse) )  {	?>

<a href="image.php?var=<?php echo $donnees['id']; ?>">LIEN</a>

<?php	}	 ?>


J'aimerais maintenant les faire terminé par le nom de l'image concerné j'ai donc fait :
<?php	$reponse = mysql_query("SELECT * FROM imagess ORDER BY ID DESC LIMIT 0, 4 "); 
				while ($donnees = mysql_fetch_array($reponse) )  {	?>

<a href="image.php?var=<?php echo $donnees['titre']; ?>">LIEN</a>

<?php	}	 ?>


Ce code fonctionne bien pour presque toute les entrées, mais il ne fonctionne pas lorsque le titre contient de / ou des carratères spéciaux.
J'ai cherché sur le net, mais je n'arrive pas a utiliser les url_encode , htmlentities ou tout les autres du genre que j'ai trouvé.

Merci de m'aider a ce que mes url affiche le titre de mes images correctement.

.

9 réponses

Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Lorsque tu fais un echo, il suffit d'utiliser url_encode :
<a href="image.php?var=<?php echo url_encode($donnees['titre']); ?>">LIEN</a>
Puis sur la page image.php, il faudra utiliser url_decode :
<?php
$var = url_decode($_GET['var']);
...
?>
lorsque j'utilise url_encode() ça me met : undefined function


une solution ?
Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Je me suis trompé, il ne faut pas les underscores (_) donc c'est urlencode et urldecode
ok,
mais cette fonction n'a fait que ajouter des + a la pace des espaces . Les accent sont toujours traduit par des %E0 ou autres .
Et lorsque le nom de l'image contient un apostrophe , il est traduit par : \' , et dans ce cas la base de donnée n'arrive pas a reconnaitre de quel image il s'agit .
Merci de m'aider
Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Ça c'est à cause des magic_quotes.
Je te conseil d'inclure dans chaque page un fichier contenant ce code :
<?php
if(get_magic_quotes_gpc()) {
        $_POST = array_map('stripslashes', $_POST);
        $_GET = array_map('stripslashes', $_GET);
        $_COOKIE = array_map('stripslashes', $_COOKIE);
}
?>
Penses bien à utiliser addslashes ou les requêtes préparées pour inserer une entrée ou pour mettre à jour la table.
meme avec le code que tu m'a passé, il y a toujours le meme probleme.
J'ai trouvé ce code sur CCM, mais je ne sais pas comment l'adapté a mes besoin, et es-ce qu'il marcherait ? :


$url = str_replace ( ' ' , '%20' , $url );
$url = str_replace ( 'é' , '%c3%a9' , $url );
$url = str_replace ( 'è' , '%C3%A8' , $url );
$url = str_replace ( 'à' , '%C3%A0' , $url );

Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Pourquoi ne pas tout simplement nommé tes images correctement avec que des lettres, des chiffres, des tirets, des underscores ("tirets bas") et des points ?

Tu peux aussi ajouter un champ "url" dans ta table qui contient le nom de l'image transformé grâce à cette fonction.
Ok, Merci pour ta fonction , j'ai réussit a faire ce que je voulait.

++
Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Penses à cocher le bouton "Résolu" la prochaine fois !