OVH Community, votre nouvel espace communautaire.

Include (url) ne fonctionne plus en PHP ?


alsa67
12/06/2007, 23h32
Et pourquoi tu n'utiliserais pas les

Narayane
28/05/2007, 19h02
Effectivement chez OVH en mutualisé il n'est pas possible de faire des include ou des require sur une URL.

http://240plan.ovh.net/infos/test.beta
Il suffit ensuite de rechercher allow_url_include

Tu trouveras plus d'explications sur la page php.net correspondante:
http://fr.php.net/manual/fr/ref.file...ow-url-include

Cette fonction n'est certainement pas désactivée pour rien ...

Peut-être que cet article t'aidera:
http://www.nexen.net/actualites/secu...ers_locaux.php

crole
24/04/2007, 13h30
Citation Envoyé par Abogil
Je suis surpris.

J'utilise plein d'includes de fichiers xxx.php contenant mes variables et/ou des traitements. Je n'ai pas de soucis.
oui, ... tant que tu restes sur ton hébergement. Mais avec un site distant, ça ne va pas. Il me semble avoir lu quelque part sur le forum que c'est depuis une mise à jour php. (c'était considéré comme un trou de sécurité)

Abogil
24/04/2007, 13h15
Citation Envoyé par crole
Mais dans tout les cas, si "cache_simple.txt" devient "cache_simple.php", ça ne marchera plus avec aucune méthode vu qu'il sera interprété avant que tu ne le récupère.
Je suis surpris.

J'utilise plein d'includes de fichiers xxx.php contenant mes variables et/ou des traitements. Je n'ai pas de soucis.

crole
24/04/2007, 12h57
Citation Envoyé par mesobius
bon j'ai fait quelques modifs, et un truc un peu bourrin !

avec ta fonction, je charge le fichier distant, je le sauve en supprimant le header http et en le nommant en .php et apres je fais un include 'fichiersauver.php' dans mon code, et ça marche.

c'est boeuf, mais pour l'instant ça fonctionne.

par contre, si tu as une astuce "propre", je suis preneur ....
Je sais pas si c'est plus "propre" mais c'est sûrement plus court avec un truc comme :
Code PHP:
eval(str_replace(array('', '?>'), array('',''), file_get_contents("http://www.pcinpact.com/cache/cache_simple.txt")));
Bon, ... faut peut être fouiller un peut le nettoyage et utiliser une regex à la place du str_replace si la structure de ton fichier n'est pas tout à fait rigide.
Mais dans tout les cas, si "cache_simple.txt" devient "cache_simple.php", ça ne marchera plus avec aucune méthode vu qu'il sera interprété avant que tu ne le récupère.

Abogil
24/04/2007, 11h18
Non c'est ce qu'il faut faire : include ("xxx.php"); et supprimer :
- Tout ce qui est avant (
- Tout ce qui est après ( inclus)

mesobius
24/04/2007, 10h47
bon j'ai fait quelques modifs, et un truc un peu bourrin !

avec ta fonction, je charge le fichier distant, je le sauve en supprimant le header http et en le nommant en .php et apres je fais un include 'fichiersauver.php' dans mon code, et ça marche.

c'est boeuf, mais pour l'instant ça fonctionne.

par contre, si tu as une astuce "propre", je suis preneur ....

mesobius
24/04/2007, 10h05
Merci pour la precision

mais j'ai essayé et ça fait pas ce que je souhaite :

imagine que le fichier http://www.toto.fdg/variables.txt
est en fait :
$tab=array("chaine1","chaine2");
$tabv = "le titre";
?>
si je fais un include ("http://www.toto.fdg/variables.txt");

alors dans mon code j'ai les variables $tab et $tabv de dispo.

c'est ce qui est utiliser sur l'url
include 'http://www.pcinpact.com/cache/cache_simple.txt';

mais avec ton code, j'inclu le contenu du fichier soit en echo dans le code html, soit je le stocke dans une variable, mais par contre, je n'ai pas acces au variable de ce fichier.

comment faire ?

merci pour ton aide Enycu !

enycu
21/04/2007, 13h59
Attention, j'ai oublié de dire que le code distant était exécuté. C'est comme si tu te connectais à cette adresse avec un navigateur web. Si tu veux envoyer des variables, il va falloir les mettre dans l'url, par ex.:
http: //www.machin.tld/monscript.php?v1=truc&v2=bidule

mesobius
20/04/2007, 21h02
ok, je vais tester.

je te tiens au courant !

merci

enycu
18/04/2007, 21h29
Ou ouvre un socket http. Intègre ce bout de code dans tes scripts. Et, à la place du include(http ://www.machin.tld/monscript.php); utilise la fonction fetchURL(http ://www.machin.tld/monscript.php); ou fetchURL(/home/monlogin/www/monscript.php);
Code PHP:
function fetchURL$url ) {
// verifie si le lien est un URL, alors on ouvre un socket http
if (strstr($url,'http://')) {
   
$referer $_SERVER['SCRIPT_URI'];
   
$url_parsed parse_url($url);
   
$host $url_parsed["host"];
   
$port $url_parsed["port"];
      if (
$port==0$port 80;
   
$user $url_parsed["user"];
   
$pass $url_parsed["pass"];
   
$path $url_parsed["path"];
      if (empty(
$path)) $path="/"// si url est http://xyz.com sans le "/" final, on a une erreur 400
      
if ($url_parsed["query"] != ""$path .= "?".$url_parsed["query"];
   
$out "GET $path HTTP/1.0\r\nHost: $host\r\nReferer: $referer\r\nUser-Agent: MonScriptPHP\r\n";
      if (
$url_parsed["user"] != ""$out .= "Authorization: Basic ".base64_encode("$user:$pass")."\r\n";
   
$out .= "\r\n";
   
$fp fsockopen($host$port$errno$errstr30);
   
fwrite($fp$out);
   
$body false;
   while (!
feof($fp)) {
   echo 
fgets($fp8192);
   }
   
fclose($fp);
   return 
$in; }
// Si le lien est un chemin relatif ou absolu, on fait un include.
else {include($url);}
}
?>
Cela marche aussi si le script est protégé dans un dossier avec mot de passe htaccess avec un lien du genre:
http ://login:motdepasse@www.machin.tld/rep-secret/monscript.php

mesobius
18/04/2007, 17h01
je rebondis sur le sujet :

pour faire un include d'un fichier php sur son site, ca marche bien avec include.

mais si on veut faire :

include 'http://www.pcinpact.com/cache/cache_simple.txt';
c'est un fichier php avec un tableau et dedans la liste rss des annonces.


quelquesoit la syntaxe du include ("") "" '' etc...
ca ne marche plus.

avant ça fonctionnait, mais OVH a changé un parametre de php et c'est plus possible.
On fait comment maintenant ?

Heartless
06/03/2007, 19h41
oops je me suis trompé ^^'

Abogil
25/02/2007, 14h35
J'utilise la fonction include sur tous mes sites et je n'ai pas de problème.

Fais-toi le petit script suivant :
Code PHP:
error_reporting(E_ALL);   // Activer le rapport d'erreurs PHP 
include_once("script.php");       // Chargement includes 

Jérémie
25/02/2007, 13h58
Non aucun ne fonctionne. Je n'ai pas touché l'ancienne syntaxe, donc c'est bien quelque chose qui a changé.

Abogil
25/02/2007, 12h30
Moi je travaillerai en relatif et je mettrai :

include("script.php");

bennnnnn
25/02/2007, 12h12
moi je mettrais plutôt :

include("http://plom.fr/script.php");

Jérémie
24/02/2007, 11h41
Code:
include 'http://plom.fr/script.php';
fonctionnait encore il y a peu, mais ne renvoi plus rien aujourd'hui (probablement depuis l'upgrade à PHP 5.2.1).

Est-ce qu'il y aurait un gars sympa d'OVH pour le remettre ?