Récupérer une URL complète dans variable en php

yakipa
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 15 Fév 2006

Récupérer une URL complète dans variable en php

Message le Ven Juin 16, 2006 9:43

Salut,

j'ai un fichier qui me permet de rediriger une URL

je fais comme cela :
-http://www.site.com/go.php?red=http://www.google.fr
la variable $red me renvoit bien : http://www.google.fr

Seulement si je fais ca (c'est a dire une URL tres longue avec des param) :
-http://www.site.com/go.php?red=htt [...] L:fr&q=dvd

ca ne me renvoit que :
-http://www.google.fr/search?sourceid=navclient-ff

Il s'arrete au 1er &

Vous auriez une astuce ? car je peux pas basculer vers l'url complète


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Juin 16, 2006 9:45

Encore avec une fonction url_encode() ton URL, et au moment de la redirection tu la décode (url_decode()).

yakipa
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 15 Fév 2006

Message le Ven Juin 16, 2006 10:08

En fait cette url sera pas en dur dans une page donc je peux pas l'encoder comme ca

en gros c pour faire un systeme de tracking que je poserai sur des sites


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Juin 16, 2006 10:16

Bah alors récupère la variable $_SERVER['QUERY_STRING'], supprime le "red=" et redirige sur cette url.

yakipa
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 15 Fév 2006

Message le Ven Juin 16, 2006 10:21

J'y avais pensé ... seulement j'ai d'autres params avant $red :(


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Juin 16, 2006 10:27

bah fais transforme ta chaine. Si ils sont forcément avant &red ça sera facile, sinon faudra analyser la chaine et espérer que l'url sur laquelle tu diriges n'a pas les mêmes.

yakipa
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 15 Fév 2006

Message le Ven Juin 16, 2006 10:29

oui mes autres params seront forcément avant le $red

ya un moyen de dire "tu recuperes le QUERY STRING apres $red seulement ?


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Juin 16, 2006 10:32

Bah vu que t'as la chaine $_SERVER['QUERY_STRING'], suffit de rechercher la position de red= et de recopier $_SERVER['QUERY_STRING'] a partir de la bonne position.

J'ai plus les noms de fonctions php en tête mais ça se fait en deux lignes.

yakipa
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 15 Fév 2006

Message le Ven Juin 16, 2006 10:49

je connais pas cette fonction, je vais essayer de regarder dans google


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Juin 16, 2006 11:22

j'ai pas de quoi valider mon code mais en gros :
Code: Tout sélectionner
$pos = strpos('red=', $_SERVER['QUERY_STRING']);
if ($pos === false)
{
   # traitement de l'erreur
}
else
{
   $url = substr($_SERVER['QUERY_STRING'], $pos + 4);
   // ta redirection
}

yakipa
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 15 Fév 2006

Message le Ven Juin 16, 2006 12:04

Ca semble marcher
seulement si j'ai une url du type :
http://www.google.fr/webhp?sourceid=nav ... 09,GGGL:fr

il s'arrete à :http://www.google.fr/webhp


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Ven Juin 16, 2006 13:10

A mon avis t'auras le problème tant que tu fais pas un url_encode sur ton url.

Affiche $_SERVER['QUERY_STRING'] pour voir ce que tu as vraiment dans cette variable.

yakipa
WRInaute discret
WRInaute discret
 
Messages: 87
Inscription: 15 Fév 2006

Message le Ven Juin 16, 2006 13:19

Lorsque j'affiche tout j'ai bien tout

Mais l'url encode ne marchera pas vu que le lien est pas placé en dur


serval2a
WRInaute accro
WRInaute accro
 
Messages: 3457
Inscription: 21 Mar 2005

Message le Ven Juin 16, 2006 13:27

Bonjour,

Le problème vient du fait que forcément dans ton url les variables que tu utilises et celles de la page que tu veux appeler sont indissociées.
Comment faire comprendre que la variable $red contient non seulement l'adresse d'une page mais également des variables utiles à la page dont par exemple la varibale $q qui ne doit pas être utilisé par ton script mais quand même incrite dans l'url de destination ?

Pour faire simple, tu pourrais (je ne connais pas ton script) récupérer chaque variable utile pour l'inscrire dans chaque url de destination, mais cela t'obligerais à utiliser des conditions pour chaque nom de domaine puisque tous n'utilisent pas les mêmes variables.

La solution semble à mon avis résider plus dans l'utilisation des fonctions serialise() et unserialise() avec le traitement de la seule variable $red.

@+


Serious
WRInaute passionné
WRInaute passionné
 
Messages: 2438
Inscription: 21 Nov 2005

Message le Ven Juin 16, 2006 13:44

ton URL n'est pas valide, utilise urlencode().
pas d'autre solution.

Récupérer une URL complète dans variable en php

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité