File_get_contents et paramètres dans l'url

Nouveau WRInaute
Bonjour,

j'utilise la fonction file_get_contents pour extraire des données ( php)

elle fonctionne sans probleme de cette manière

$var = file_get_contents ("http://www.example.com/index.php?param1=xx&param2=yy&param3=zz");

sauf que l'url est une variable, donc si j'utilise ce cas par exemple

$url = "http://www.example.com/index.php?param1=xx&param2=yy&param3=zz";

$var = file_get_contents ($url);

la fonction télécharge les donné de la page avec seulement le premier paramètre et ne prend pas en considération les deux autres !!

une solution ??
merci
 
WRInaute accro
Tu dois avoir un caractère foireux dans un de tes paramètres qui doit poser problème dans la variable, car ça fonctionne très bien ailleurs.
 
Nouveau WRInaute
non je pense pas, c'est avec tous les url que ça se passe

en faite il s'agit d'un proxy web que je programme, et je suis coincé sur ce truc.
voici un exemple d'une url -www.xxxxxxxxxxx.com/forumdisplay.php?s=97e26d76867432cc15651cde3b6993c1&f=3
un autre -www.xxxxxxxxxxx.com/index.php?cat=1&region=1

aucun caractère special, et toujour la meme chose avec tout url le premier parametre paasse tandis que les autre ne sont pas prix en consideration
 
Nouveau WRInaute
bien
le problème est a moitié résolu, ça vient du code entre la definition de la variable et le file_get

si je fait ceci

$url = "http://*************/showthread.php?t=6350&page=3";
$cont = file_get_contents ($url);

elle fonctionne

mais comme ça non


$u = isset ($_REQUEST['u']) ? $_REQUEST['u'] : 0;
$url = base64_decode($u);
echo $url; // pour verifier, elle est 100% ok
$cont = file_get_contents ($url);

comme ça encore ne fonctionne pas


$u = "http://*************/showthread.php?t=6350&page=3";
$u = base64_encode($u);
$u = base64_decode($u);
$cont = file_get_contents ($u);


je conclu que n'importe quel traitement de l'adresse pose un probleme !!
 
Nouveau WRInaute
déja essayé :)

class CA_HTTP {
public static function get_contents($url) {
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
ob_start();
curl_exec ($ch);
curl_close ($ch);
return ob_get_clean();
}
}

//$cont = CA_HTTP::get_contents ($url);
 
WRInaute accro
maxotrick a dit:
je fait un echo juste avant le file_get_contents, l'url est 100% ok !!!!!
C'est le problème des caractères foireux que j'évoquais tout au début ... l'écho ne permet pas de déterminer si un caractère est valide ou pas puisqu'il génère un affichage a travers les couches applicatives du navigateur.
Peu tu expliquer le pourquoi du base64_decode() qui me semble totalement inutile ?
 
Nouveau WRInaute
parceque je prend l'adresse qui passe dans une variable dans l'url, cette adresse est déja encodé. donc je la décode

c'est un proxy que je programme et les adresse doivent etre cachés.
 
WRInaute accro
maxotrick a dit:
parceque je prend l'adresse qui passe dans une variable dans l'url, cette adresse est déja encodé. donc je la décode
Ce qui confirme qu'un traitement en route rend l'url incompatible a cause de caractère "&" (puisque c'est les paramètres qui suivent ce caractère qui disparaissent)
Quand tu encode l'url pour la passer en paramètre dans l'url utilise plutôt urlencode ( string $str ) qui ne devrais pas introduire de caractère incompatibles avec ta commande file get.
La fonction inverse pour décoder est urldecode ( string $str )
 
WRInaute accro
arg j'avais pas percuté sur le fait que les urls doivent être masquées ...
1/ soit tu passe en post si c'est possible
2/ soit tu fait base64_encode() sur l'url déjà modifiée par urlencode()
 
Discussions similaires
Haut