Aller au contenu

[PHP] Connexion DB dans fichier externe (www)


maximeK

Messages recommandés

Bonjour,

Voila mon soucie :

Après mettre documenter une bonne partie de la matINée (toute ?) je n'ai pas trouver une réponse a mon problème :

J'ai un script PHP (local) qui se connecte a une DB mysql (Canada) jusque la rien de grave, j'aimerais faire la connexion a la base dans mon fichier externe (Canada) :

Du type $db_link = mysql_connect(......) et après soit le retourné ou y avoir accès en lisant mon fichier

Le fichier en local me permet bien d'avoir accès a mon instance de connexion ($db_link), mais lors de l'appel au fichier externe mon instance n'est pas crée.

PHP est configuré pour accepter les appel a des fichier distants donc sa devrait le faire :

J'ai essayer d'inclure le fichier externe dans ma page avec un "require_once", pas de soucie mais $db_link n'est toujours pas crée (ou accessible).

J'ai essayer avec un tout bete $file = fopen("http://url", "r"); et un eval sur chaque ligne.

En bref sa marche pour afficher des echos mais sa ne me retourne pas mon INstance de connexion lors de l'exécution de cet dernière (mysql_connect dans le fichier externe)

Donc apres je suis marrons pour sélectionnez une db :(

schema a 2 balles :

(local) index.php <---- connexion DB (www)

Voila donc si quelqu'un a une solution je suis prenneur

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprends pas trop le souci...

Pourquoi ne pas se connecter au MySQL distant directement, au lieu de vouloir faire un fopen distant ?

De plus, un fopen vers un fichier PHP distant n'irait pas, car le PHP serait interprêté... est-ce ce que vous vouliez ?

Pouvez-vous préciser un peu plus SVP ? :chinois:

Lien vers le commentaire
Partager sur d’autres sites

En faite,

J'aimerais que les informations de connexion a la base de données ne soit pas visible,

je n'ai trouver que se moyen la pour ne pas avoir les informations visibles en local :

Connexion extérieur, puis récupération de l'instance de connexion.

Donc oui le PHP distant est INterpréter grâce a un eval(), en local pas de soucie, mais lorsque le fichier et ouvert sur le serveur extérieur sa ne marche plus (Le PHP est bien configuré en local pour accepter l'ouverture de fichier distant).

J'espère que sa répondras a ta question :)

Lien vers le commentaire
Partager sur d’autres sites

En fait, ce qu'Amour voulait dire, c'est que lorsque tu fais ton "fopen" sur un protocole HTTP, le fichier PHP est d'abord interprété par le serveur Apache (ou autre) distant, donc tu récupères le résultat du traitement et pas le code source :ouioui:

Dans ton cas, il faut faire un fichier .phps (phpsource), et faire directement un

include 'http://mon_serveur_distant/mon_script.phps';

puis configurer correctement ton serveur pour n'accepter les connexions que depuis ton poste local (une règle iptable, un htaccess?) car sinon ton code est exposé aux yeux du monde :transpi: Pas terrible pour quelqu'un qui voulait le cacher en local :transpi:

Après, j'avoue que j'ai du mal à j'ai du mal à comprendre pourquoi tu veux masquer tes paramètres de connexion en local (tu partages le serveur avec des personnes indiscrètes?), mais là, ça ne me regarde plus :francais:

Lien vers le commentaire
Partager sur d’autres sites

En fait, ce qu'Amour voulait dire, c'est que lorsque tu fais ton "fopen" sur un protocole HTTP, le fichier PHP est d'abord interprété par le serveur Apache (ou autre) distant, donc tu récupères le résultat du traitement et pas le code source :ouioui:

Dans ton cas, il faut faire un fichier .phps (phpsource), et faire directement un

include 'http://mon_serveur_distant/mon_script.phps';

puis configurer correctement ton serveur pour n'accepter les connexions que depuis ton poste local (une règle iptable, un htaccess?) car sinon ton code est exposé aux yeux du monde :transpi: Pas terrible pour quelqu'un qui voulait le cacher en local :transpi:

Après, j'avoue que j'ai du mal à j'ai du mal à comprendre pourquoi tu veux masquer tes paramètres de connexion en local (tu partages le serveur avec des personnes indiscrètes?), mais là, ça ne me regarde plus :francais:

Arff je me suis mal exprimez 2 fois alors :)

Je veut que mon code externe soit exécuter par le serveur, puisque je veut récupérer l'instance de connexion, c'est que quelques pars il travaille l'apache, mais sa ne marche pas comme sa avec le fopen :( .

Désoler de te décevoir BarthVonRies mais le fopen ne m'interprète pas le code :) il ne retourne que des chaines de caractères : pour moi par exemple sa peut être seulement un $db_link = mysql_connect(..,..,..) que je transforme en instruction grâce a la fonction eval.

Le hic c'est qu'en local sa marche du feux de dieu, mais des que le fichier est externe sa marche plus oO

Sinon en local ne veut pas dire que c'est chez moi :) j'ai des scripts qui tourne en local sur des machines en Inde, donc j'ai la main dessus grâce au VPN+RDP mais certaines personnes peuvent y avoir accès et j'aimerais ne pas mettre de MDP visible.

Lien vers le commentaire
Partager sur d’autres sites

J'aimerais que les informations de connexion a la base de données ne soit pas visible,

Donc tu veux te connecter à une base alors que les identifiants sont inconnus, je ne crois pas que ce soit possible à moins d'ouvrir totalement le serveur à tout le monde ce qui serait bien sûr une très mauvaise idée.

Tu devrais faire un compte utilisateur par utilisateur réel avec chaqu'un les bons droits et un mot de passe différant.

Pour ne pas que les données passent en clair il y a le VPN mais aussi la redirection de port par SSH.

Je crois aussi que MySQL peut fonctionner en SSL mais je n'ai jamais utilisé cette possibilité.

Lien vers le commentaire
Partager sur d’autres sites

Non mes login/password sont connues, j'aimerais seulement que si une personne viens a fouiner dans les sources il ne voit pas

mysql_connect(mes informations)

Donc moi j'ai penser a mettre mon mysql_connect dans un fichier distant et de faire un fopen + un eval() sur la commande, comme sa au 1ere abord on ne vois pas mes informations de connexion.

Bien sur si après, il y a moyen d'exécuter le script PHP sur le serveur (donc de me connecter depuis le serveur) puis de me retourner l'instance de connexion je suis preneur mais je doute.

Je ne pense pas que la solution passe par un chiffrage des transactions mais bien un petit bidouillage bien suux pour l'appel de mon mysql_connect :)

Recap :

Mes identifiants sont connues.

J'aimerais ne pas mettre les informations de connexion en local mais sur mon serveur distant.

D'inclure mon fichier distant et d'executer se qu'il y a dedans pour pouvoir me connecter (mon graal?)

Probleme :

Impossible d'exécuter le mysql_connect quand je fait un eval() de la chaine de caractères contenant mon mysql_connect qui m'est retourner par un fopen("http://monfichierdistant.php").

Je posterais le script demain matin pour plus de detail :)

Bonne nuit a tous.

Lien vers le commentaire
Partager sur d’autres sites

Si le script fonctionne, on peut toujours lire les sources ou récupérer le mot de passe distant, puisque le script le ferait...

Il ne serait pas plus simple d'empêcher que n'importe qui lise votre code ?

Se problème sera régler par un .htaccess a mon sens, mais comment empêcher quelqu'un qui nous met a disposition une machine, de fouinez dedans.

Pour moi je doit externaliser les logs. Puis pour couper une prod, je renomme le fichier de connexion a la DB et hop finished ;)

La problématique reste : comment, me connecter a une base de données en PHP sans que les utilisateurs puissent voir les logs.

Si quelqu'un a une meilleurs idées que ma solution je suis tout ouïe.

Lien vers le commentaire
Partager sur d’autres sites

Se problème sera régler par un .htaccess a mon sens, mais comment empêcher quelqu'un qui nous met a disposition une machine, de fouinez dedans.

Si le script peut y accéder alors il pourra y accéder.

Ce que tu cherche à faire n'est pas possible.

Il faut un login/mdp par utilisateur réel comme ça il ne connaitra que son propre code et pas celui des autres.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...