Requetes SQL sur serveur distant

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Requetes SQL sur serveur distant

Message le Sam Mai 26, 2007 18:04

Bonjour,

Je cherche un moyen d'interroger et renseigner une base MYSQL qui est sur un serveur différent de celui qui héberge mon site.
Le problème est qu'en raison d'un parefeu, je ne peux y accèder directement depuis une IP externe.

La solution que j'entrevoie est de mettre un script PHP sur le serveur hébergeant la base SQL (requete.php) puis depuis le site web faire une requete du genre
http://serveurSQL.com/requete.php?param ... aram3=titi

Le script requete.php récupèrerait les paramètres pour construire la requete SQL avec.

Mais comment executer la requete "http://serveurSQL.com/requete.php?param1=tutu&param2=toto&param3=titi" depuis mon serveur web ?

J'ai bien pensé à :
<img src="http://serveurSQL.com/requete.php?param1=tutu&param2=toto&param3=titi" alt="bidon" />

Mais je ne trouve pas ça très propre, même si d'après mes premiers tests cela à l'air de fonctionner.

Merci d'avance.
Dernière édition par totof78 le Mer Mai 30, 2007 22:25, édité 2 fois.


Serious
WRInaute passionné
WRInaute passionné
 
Messages: 2438
Inscription: 21 Nov 2005

Message le Sam Mai 26, 2007 21:02

file_get_contents('http://sql.com/requete');

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Message le Sam Mai 26, 2007 21:58

Je te remercie pour ton aide.
Par contre, dans mon fichier distant, je place un cookie :
Code: Tout sélectionner
if(!isset($_COOKIE['visiteurID'])) {
  $uniqueid=uniqid(rand(), true);
} else {
  $uniqueid=$_COOKIE["visiteurID"];
}
if(!isset($_COOKIE['visiteurID'])) {
  setcookie('visiteurID',$uniqueid);
}


Avec la méthode du file_get_contents, le cookie ne se crée pas.

Par contre, si j'execute le script requete.php directement en mettant son URL dans la barre d'adresse de mon navigateur, le cookie se créé bien.

Une idée ?

Merci d'avance.


Ohax
WRInaute accro
WRInaute accro
 
Messages: 6406
Inscription: 5 Juil 2004

Message le Sam Mai 26, 2007 22:03

Et si tu autorisais tout simplement l'ip à ce connecter au serveur ?

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Message le Sam Mai 26, 2007 22:28

Je ne peux pas car je n'ai pas la main sur la config du serveur (free.fr).

Mais je viens de trouver.

En fait c'est normal que le cookie ne passe pas vu que je le fais créer sur le serveur mysql et que je cherche sur le serveur du site :(

Donc je le crée sur le serveur du site, puis je le passe en argument dans le file_get_contents pour pouvoir l'exploiter dans la base SQL.


Merci de votre aide à tous les 2

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Re: Requetes SQL sur serveur distant

Message le Sam Mai 26, 2007 22:28

totof78 a écrit:J'ai bien pensé à :
<img src="http://serveurSQL.com/requete.php?param1=tutu&param2=toto&param3=titi" alt="bidon" />
Comme ça n'importe quel visiteur peut se balader et faire n'importe quoi sur ta base de donnée...

Méthode à éviter. Il faut gérer ça en interne dans PHP, le visiteur ne doit pas voir ce qui se passe.

Je n'ai pas compris l'histoire du cookie, à quoi te sert-il ?
Tu peux le passer en paramètre de ton script requete.php

@+


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 911
Inscription: 5 Aoû 2003

Message le Dim Mai 27, 2007 6:50

Serious a écrit:file_get_contents('http://sql.com/requete');

oui ou sinon utiliser l'extension curl :
Code: Tout sélectionner
<?php
$data = array('sql' => "SELECT CRYPTE");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://sql.com/requete');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE_PATH);
curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE_PATH);
curl_exec($ch);
?>

Ici les données sont postées.
Pour la sécurité il conviendrait de crypter la requête
A remarquer que CURLOPT_COOKIEJAR et CURLOPT_COOKIEFILE permettent de manipuler les cookie de sql.com
Maintenant tu n'as peut être pas curl d'installer sur ton serveur...

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Message le Dim Mai 27, 2007 9:01

Bonjour,

Curl est bien installé mais je ne le connais pas.
Je vais regarder ça de plus prêt.

merci.

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Re: [Resolu] Requetes SQL sur serveur distant

Message le Mer Mai 30, 2007 16:38

Alors, j'ai essayé :

Code: Tout sélectionner
file_get_contents("http://serveurSQL.com/requete.php?param1=tutu&param2=toto&param3=titi")
ou
fopen("http://serveurSQL.com/requete.php?param1=tutu&param2=toto&param3=titi","r")


Mais chaque fois j'ai :

[function.file-get-contents]: failed to open stream: No such file or directory
ou
[function.fopen]: failed to open stream: No such file or directory


Alors que si j'enlève les arguments pour ne laisser que http://serveurSQL.com/requete.php ça marche.

Le problème est que j'ai des arguments à passer :cry:

Une idée ?


Serious
WRInaute passionné
WRInaute passionné
 
Messages: 2438
Inscription: 21 Nov 2005

Message le Mer Mai 30, 2007 20:02

Es-tu sur que ton URL est valide? as-tu bien encode les parametres? Poste un exemple stp (sans le domaine).


Ohax
WRInaute accro
WRInaute accro
 
Messages: 6406
Inscription: 5 Juil 2004

Message le Mer Mai 30, 2007 20:35

Résolu ?

Sans solution ? ;-)

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Message le Mer Mai 30, 2007 22:30

Serious a écrit:Es-tu sur que ton URL est valide? as-tu bien encode les parametres? Poste un exemple stp (sans le domaine).


Oui l'URL est bonne car si je fais un copier/coller dans la barre d'adresse de IE ou Firefox, ça marche.
Pour info, la voici :

http://xxxxxx.free.fr/includes/requete. ... 0.01005349

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Message le Mer Mai 30, 2007 22:31

Ohax a écrit:Résolu ?

Sans solution ? ;-)


Je pensais que c'était résolu, mais il restait un petit quelque chose et j'ai oublié de modifier le tire. :roll:
Voila c'est fait


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 911
Inscription: 5 Aoû 2003

Message le Jeu Mai 31, 2007 7:06

et avec curl tu t'en sors pas ?

totof78
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 6 Nov 2005

Message le Jeu Mai 31, 2007 9:51

julienr a écrit:et avec curl tu t'en sors pas ?


J'ai fais des essais hier soir avec le code suivant :
Code: Tout sélectionner

$data = "ip=$ipnumber";
$data = $data."&page_lang=$userlanguage";
$data = $data."&hote=$hote";
$data = $data."&id=".$_SESSION['uniqueid'];

$error_FH = fopen("http://xxx.free.fr/includes/error.log","w");
echo 'lancement de Curl';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://xxxi.free.fr/includes/requete.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $error_FH);
curl_exec($ch);


Dans mon script requete.php je fais des entrées dans une base SQL et, la, rien ne se passe

De plus le fichier error.log ne se créé pas.

Requetes SQL sur serveur distant

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: lambi521 et 0 invités