HTTP Call Method en ajax ou file_get_contents

Nouveau WRInaute
bjr !!

Mon site à l'architecture ultra-basique suivante : formulaire.php > post > confirmation.php . Les données sont stockées sous mysql

Maintenant ça se complique un peu, je dois également stockées les données sur un autre serveur en envoyant les variables sur une adresse spécifique, exemple: "http://domain.com/xxx?var1=var1&var2=var2&var3=var3&var4=var4..." .

Comment puis-je lancer cette 2eme url pour envoyer les données à l'autre serveur depuis confirmation.php, sans que ça dérange le visiteur, c'est à dire de façon invisible?

J'ai fais quelques recherches qui me dirige plutôt vers un script ajax utilisant XMLHttpRequest.open, mais j'arrive pas à le mettre en pratique ni connaissant quasi-rien.

Merci d'avance !!
 
WRInaute passionné
Un exemple :

Code:
function submitForm()
{ 
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }
 
    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200) 
                 document.ajax.dyn="Received:"  + xhr.responseText; 
              else 
                 document.ajax.dyn="Error code " + xhr.status;
         }
    }; 

   xhr.open( GET", "http://domain.com/xxx?var1=var1&var2=var2&var3=var3&var4=var4",  true); 
   xhr.send(null); 
}

Tu fais un envois en GET sur une URL. Après à toi de voir si tu préfère du post, et à gérer tout ce qui est var1 & cie.
En cherchant sur Google tu trouvera qqes centaines de tutos je pense.

Et tu as des librairies pour t'aider (et te simplifier la vie), comme prototype, exemple : http://amillet.developpez.com/tutoriels ... prototype/
 
WRInaute accro
avec des serveurs chez le même hébergeur, une simple connection sql suffit pour passer d'un serveur à l'autre.
 
WRInaute passionné
Bool a dit:
Hello,

pour le cas présent ne serait il pas préférable de gérer ça coté PHP ?

Je "plussoie" Bool, a moins que tu es des contraintes non spécifiés dans ton message c'est certainement ce qu'il y a de plus propre à faire.
 
Nouveau WRInaute
Bacteries, ton code à l'air sympa mais ça fait 1heure que je le tripote j'arrive pas à envoyer les variables :s

KOogar, c'est vers un autre hebergeur, un site / base completement différent

Bool, quel serait le script avec php? en s'aidant de la fonction " file_get_contents " ? je planche dessus ça à l'air de bien lancer l'url du 2eme site sans gener les visiteurs, mais par contre j'arrive pas à passer les variables. Tu as un petit code en php ?

Merci!!
 
WRInaute passionné
Sisty : c'est pourtant exactement la même chose :

Code:
file_get_contents( 'http://domain.com/xxx?var1=var1&var2=var2&var3=var3&var4=var4' );



PS : après tu peux gérer ça à coup de fsockopen ou autre pour mieux gérer les éventuels timeout, mais le principe reste le même.
 
Nouveau WRInaute
Bool a dit:
Code:
file_get_contents( 'http://domain.com/xxx?var1=var1&var2=var2&var3=var3&var4=var4' );

c'est bien ce que j'ai essayé d'utiliser, mais les variables passent pas avec les tests suivants :

Code:
<html>
<head>
<?php 
$email="test@test.com";
?>
</head>
<body>
<?php
file_get_contents( 'http://domain.com/?var1=$email' );
?>
</body>
</html>

ou

Code:
<html>
<head>
<?php 
$email="test@test.com";
?>
</head>
<body>
<?php
file_get_contents( 'http://domain.com/?var1=<?php echo $email; ?>' );
?>
</body>
</html>

ou encore
Code:
<html>
<head>
<?php 
$email="test@test.com";
?>
</head>
<body>
<?php
file_get_contents( 'http://domain.com/?var1=<?php echo $_POST["email"]; ?>' );
?>
</body>
</html>

:cry: :cry: :cry:

j'ai oublié quelquechose ?
 
WRInaute passionné
au choix :
Code:
file_get_contents( 'http://domain.com/?var1='.$email );
ou bien :
Code:
file_get_contents( "http://domain.com/?var1=$email" );

et idéalement :
Code:
file_get_contents( 'http://domain.com/?var1=' . rawurlencode($email) );
 
WRInaute accro
lance le script directement au lieu de l'aspirer (ce qui sert a rien au passage
include("http://domain.com/xxx?var1=var1&var2=var2&var3=var3&var4=var4");
 
WRInaute passionné
Bien sûr, et ce qui est bien avec include c'est que tu télécharges complètement la page tout comme avec file_get_contents(), mais en plus tu demandes ensuite à PHP de l'exécuter puis afficher. Bref plus lent, avec la faille de sécurité en prime.

Si tu veux un truc plus léger, il faut faire une requête HEAD à coup de fsockopen. Mais c'est un poil plus complexe quand même.
 
WRInaute accro
Quel faille ? tant que allow_url_include est a 1 sur l'autre serveur ca pose aucun probleme. faut simplement tester le REFERER pour sécuriser l'application sur l'autre serveur et c'est plié.

> PHP 4.3.0
// Works.
include 'http://www.example.com/file.php?foo=1&bar=2';
 
Nouveau WRInaute
KOogar, en fait l'url lance une page de confirmation. Si je fais un include, ca va la lancer sur ma page normalement (?); à part si je lance l'include comme une iframe de 1px x 1px peut être

Bool, le 1er code " file_get_contents( 'http://domain.com/?var1='.$email ); " marche impec mci !!

Merci de votre aide, ça fait 2 questions pour l'instant que je pose sur ce forum et les réponses m'ont bien aidé!! vive webrankinfo :)
 
Discussions similaires
Haut