problème include distant

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème include distant

par papipasto » 06 juil. 2006, 09:58

ok merci pour toutes ces précisions

mais si j'include en ftp comme tu dis il faut que je donne le login et le pass de mon accès en ftp quand même non ?
si je le fait pas il me met Error 530 login machin...

par Henri » 06 juil. 2006, 09:48

En complément de tout ça :

Si le fichier est accédé par http, il sera exécuté si le serveur B où se trouve l'include interprète le php. Sinon, il sera renvoyé tel quel.

par exemple, si ton fichier connect contient :
  $host = "localhost";
  $base = "mabase";
  $user = "user";
  mysql_connect ($host, $base, $user);
Si ton fichier s'appelle connect.inc
- sur le serveur B, tu peux faire un include ("connect.inc") : connexion à la base mabase sur le serveur B
- sur le serveur A, tu peux faire un include ("http://url/connect.inc") : connexion à la base mabase sur le serveur A. Le fichier n'est pas interprété puisque l'extension .inc n'est pas configurée comme devant déclencher le moteur PHP du serveur B

mais s'il s'appelle connect.php
- sur le serveur B, tu pourras faire un include ("connect.php") : comme le cas précédent
- mais sur le serveur A, tu ne pourra pas faire un include ("http://url/connect.php"), car tu recevras le résultat interprété du fichier connect.php, c'est à dire une chaîne vide !

Problème, si ton fichier s'appelle connect.inc, n'importe qui peut taper dans son browser http://url/connect.inc et voir le contenu du fichier. Pas cool ...

Autre possibilité : faire un include ("ftp://pathftp/connect.php"). Il n'y a pas d'interprétation du code php parce qu'on ne passe pas par le serveur Web.

Enfin, dernière possibilité : faire en sorte que la base de données soit accessible depuis l'extérieur. On a toujours tendance à penser qu'une base MySQL est uniquement une base locale, implantée sur le serveur Web. Mais si tu es maître du serveur où se trouve la base (ou si tu connais son DBA), tu peux la rendre accessible sur le web.
et alors, sur ton serveur A, tu pourras définir la variable host soit avec l'url du serveur B, soit avec son adresse IP.

par papipasto » 06 juil. 2006, 09:27

d'accord donc quand j'include un fichier qui est sur le meme serveur je peux récupérer des variables tel que celles de connexion BD mais si le fichier est sur un autre serveur je peux toujours m'accrocher pour récupérer les infos de connexion c'est ça ?

par sadeq » 06 juil. 2006, 09:15

Quand on include un fichier qui se trouve à distance sur un autre serveur on ne peut récupèrer que le résultat text/html issu de l'exécution.

En d'autres mots, il ne faut pas espérer utiliser dans le script local des variables déclarées (y compris celles des conneixons BDD) dans le fichier distant inclus ; pour la simple raison que la fonction include déclenche l'exécution du script inclus sur le serveur où ce script est localisé, le script appelant lui ne reçoit que le résultat text/html si echo il y a. :wink:

par papipasto » 06 juil. 2006, 08:13

ok ok ça s'éclairci un peu pour moi

donc je reprend mon fichier de connexion est sur le serveur A et ma base de donnée est sur le serveur A (jusqu'ici rien de spécial). sur mon serveur B je voudrais afficher les entrée de ma base de donnée du serveur A. donc j'ai fait un include du fichier de connexion du serveur A dans mon fichier du serveur B.

Est-ce que ca veut dire que mon fichier de connexnio sera exécuté sur le serveur B ou qu'il est débord exécuter sur le serveur A puis inclu dans mon fichier du serveur B ?

(merci pour votre aide jusqu'a maintenant on ne le répète jamais assez sur les forum) :)

par Cyrano » 06 juil. 2006, 07:51

Il est nécessaire de comprendre qu'un fichier sera exécuté là où il sera inclus, pas là où il est stocké : donc ton fichier de configuration du serveur B inclus dans une page du serveur A sera exécuté sur le serveur A : toutes les références indiquées dans ce fichier de configuration seront cherchées par conséquent sur le serveur A. Tu dois créer un fichier de connexion sur le serveur A pointant sur la base du serveur B : mais comme l'a évoqué JazzFinder, tu vas te heurter à un droit d'accès externe. Si c'est de l'hébergement dédié, tu dois configurer ton serveur de base de données de façon à accepter les accès distants, mais si c'est du mutualisé, il y a 9,99 chances sur 10 pour que ce soit impossible et qu'on ne te permette pas cette opération.

Dans ce cas la solution consistera à créer un fichier sur le serveur B qui récupère les données directement depuis le serveur B et qui sérialise les données, puis que tu appelles ce fichier depuis ta page du serveur A pour récupérer ces données et les traiter pour affichage selon tes besoins.

par JazzFinder » 05 juil. 2006, 23:26

A oui un on gros problème, tu ne peut accéder à une base de donner que par un script situé sur le même serveur
Pas tout à fait. On peut le faire, en autant qu'on ait les droits nécessaires pour pouvoir accéder à une base distante (et donc à un site et à un serveur distants).

par jojolapine » 05 juil. 2006, 23:18

A oui un on gros problème, tu ne peut accéder à une base de donner que par un script situé sur le même serveur (en espérant ne pas dire de bétises :-))

par papipasto » 05 juil. 2006, 22:30

non la base est sur le meme serveur que le fichier de connexion mais pas sur le meme serveur que le fichier qui appelle le fichier de connexion.

ca pose un pb ca ?

par Cyrano » 05 juil. 2006, 22:17

La base est-elle sur le même serveur que la page qui appelle le fichier de connexion ?

par papipasto » 05 juil. 2006, 20:59

si si je sais très bien moi comment c'est :)

alors pour reprendre ton schéma sur mon serveur A j'ai le fichier def qui include le abc (le abc contenant les info de connection à ma BD) dans le def je fais une requète simple sur ma base et ca marche.

Sur mon serveur B mon fichier ghi include le fichier abc du serveur A et fais la même requète que le fichier def du serveur et là j'ai une erreur qui dit No database selected.

par Cyrano » 05 juil. 2006, 19:39

J'avoue que je ne comprends pas trop : quel fichier est sur quel serveur. Le problème, c'est que je ne suis pas convaincu que tu le comprennes toi-même, du coup, tu poses mal ta question: ça va pas aider beaucoup à formuler la bonne réponse.

Commence par éclaircir un peu ce fouills :
- Serveur A :
- - fichier abc
- - fichier def
- serveur B :
- - fichier ghi
- - fichier jkl

Ensuite explique ce qui représente quoi et ce que tu veux faire.

À ce moment là on pourra te répondre efficacement.

Ceci dit, les accès distants peuvent dépendre de la configuration et sur des serveurs mutualisés, c'est en général sévèrement bridé. À voir donc.

problème include distant

par papipasto » 05 juil. 2006, 19:17

Bonjour à tous,

Voilà mon problème :
j'ai un fichier connect.php sur un serveur qui contient toutes les infos nécessaire pour me connecter à ma BD.
à partir d'un autre serveur je voudrais faire un include de ce fichier donc avec le chemin absolue
include("http://www.monsite1.com/connect.php")

et ensuite je fais un select tout con qui marche en étant sur le premier sir mais pas sur le deuxième.

Es-ce que c'est possible de faire ce genre d'include ou c'est pas autorisé ?

Merci,
Max