url dans une variable

Eléphanteau du PHP | 13 Messages

14 sept. 2010, 15:30

Bonjour à tout le monde

Voici mon petit problème:

J'ai une page (resultat.php) sur laquelle je récupère depuis une base (Mysql) des liens de site.

$nom = le nom
$url = url du site.

Cela s'affiche de cette manière:
<a href='page-site.php?nom=$nom&url=$url'  target='blank'>
Ensuite ces liens renvoie vers une page (page-site.php) ou s'affichera le site.
//je récupère le nom et l'url
$nom2= $_GET["nom"];
$url2= $_GET["url"];

//là s'affiche le site
<iframe  SRC='$url2'  WIDTH='100%' HEIGHT='100%' >

</iframe>
Le problème est que lorsque j'ai une url simple (dans la base) genre http://www.pyrenee.com tout va bien
mais lorsque j'ai http://alpe.com?lait=brebis&fromage=tome je ne récupère que jusqu'à (http://alpe.com?lait=brebis).

J'espère que je me suis bien expliqué. Merci pour toute réponse.

Andreu

Eléphant du PHP | 199 Messages

14 sept. 2010, 16:19

Enlève le amp;.
Normalement ca devrait marcher pour ton url

Eléphanteau du PHP | 13 Messages

14 sept. 2010, 21:00

j'ai beau enlever le amp, cela ne marche pas.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 sept. 2010, 21:34

Le problème, c'est que si ton url contient un &, le navigateur va considérer qu'il s'agit d'un nouveau paramètre destiné à page-site.php

Pour éviter cela, il te faut encoder la chaine avant de la passer dans l'url avec urlencode() ou rawurlencode(). Les éventuels & seront convertis (en %26 de mémoire) et seront donc conservés quand envoyés dans l'url. Puis dans page-site.php tu pourras utiliser urldecode() :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 13 Messages

14 sept. 2010, 22:54

Merci pour vos réponses

ce que j'ai fait:
$url_encode=urlencode($url);
<a href='page-site.php?nom=$nom&url=$url_encode'  target='blank'>

Je dois mal m'y prendre, car cela l'encode bien; mais dés que le serveur renvoie l'html il me le décode???

ViPHP
ViPHP | 5462 Messages

14 sept. 2010, 23:22

tu mélanges le php et le html la, regarde ton code source

Eléphanteau du PHP | 13 Messages

15 sept. 2010, 20:25

Bonjour

Je ne pense pas mélanger le html et php . le seul truc je n'ai pas mis tout le code .

<?php
$url_encode=urlencode($url);

echo "
<a href='page-site.php?nom=$nom&url=$url_encode'  target='blank'> ";

?>

ViPHP
ViPHP | 5462 Messages

15 sept. 2010, 20:35

Bonjour

Je ne pense pas mélanger le html et php . le seul truc je n'ai pas mis tout le code .

<?php
$url_encode=urlencode($url);

echo "
<a href='page-site.php?nom=$nom&url=$url_encode'  target='blank'> ";

?>
oki, donc la ca marche ?

Eléphanteau du PHP | 13 Messages

15 sept. 2010, 21:37

non lorsque s'affiche le lien avec le echo. Et que l'on regarde le source html, les & réapparaissent. En fait cela annule le urlencode .

ViPHP
ViPHP | 5462 Messages

15 sept. 2010, 21:40

non lorsque s'affiche le lien avec le echo. Et que l'on regarde le source html, les & réapparaissent. En fait cela annule le urlencode .
montre

ViPHP
AB
ViPHP | 5818 Messages

15 sept. 2010, 21:48

Utilises plutôt rawurlencode et rawurldecode

Eléphanteau du PHP | 13 Messages

15 sept. 2010, 22:00

excusez moi en fait cela marche. je me suis trompé de fichier. Du coup je ne regardai pas le bon code source.
<a href='page-site.php?nom=&url=http%3A%2F%2Falpe.com%3Flait%3Dbrebis%26amp%3Bfromage%3Dtome'  target='blank'>le lien</a> 
Mille excuse et merci à tous de m'avoir aider.

ViPHP
AB
ViPHP | 5818 Messages

15 sept. 2010, 22:23

Utilises quand même plutôt rawurlencode et rawurldecode :wink:

Eléphanteau du PHP | 13 Messages

15 sept. 2010, 22:31

Oui je regardai la différence . Tu as raison merci bien