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.