HTTP Call Method en ajax ou file_get_contents

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

Sisty
Nouveau WRInaute
 
Messages: 8
Inscription: Ven Nov 07, 2008 16:51

HTTP Call Method en ajax ou file_get_contents

Message le Ven Nov 14, 2008 11:43

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 !!
Dernière édition par Sisty le Ven Nov 14, 2008 17:51, édité 1 fois.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Ven Nov 14, 2008 11:55

Un exemple :

Code: Tout sélectionner
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/


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Ven Nov 14, 2008 12:09

Hello,

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


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3324
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Nov 14, 2008 13:37

avec des serveurs chez le même hébergeur, une simple connection sql suffit pour passer d'un serveur à l'autre.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Ven Nov 14, 2008 14:17

Bool a écrit: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.

Sisty
Nouveau WRInaute
 
Messages: 8
Inscription: Ven Nov 07, 2008 16:51

Message le Ven Nov 14, 2008 15:14

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!!


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Ven Nov 14, 2008 15:22

Sisty : c'est pourtant exactement la même chose :

Code: Tout sélectionner
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.

Sisty
Nouveau WRInaute
 
Messages: 8
Inscription: Ven Nov 07, 2008 16:51

Message le Ven Nov 14, 2008 17:48

Bool a écrit:
Code: Tout sélectionner
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: Tout sélectionner
<html>
<head>
<?php
$email="test@test.com";
?>
</head>
<body>
<?php
file_get_contents( 'http://domain.com/?var1=$email' );
?>
</body>
</html>


ou

Code: Tout sélectionner
<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: Tout sélectionner
<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 ?


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Ven Nov 14, 2008 17:53

au choix :
Code: Tout sélectionner
file_get_contents( 'http://domain.com/?var1='.$email );

ou bien :
Code: Tout sélectionner
file_get_contents( "http://domain.com/?var1=$email" );


et idéalement :
Code: Tout sélectionner
file_get_contents( 'http://domain.com/?var1=' . rawurlencode($email) );


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3324
Inscription: Mar Nov 16, 2004 18:27

Message le Sam Nov 15, 2008 0:21

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");


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Sam Nov 15, 2008 0:41

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.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3324
Inscription: Mar Nov 16, 2004 18:27

Message le Sam Nov 15, 2008 1:29

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';

Sisty
Nouveau WRInaute
 
Messages: 8
Inscription: Ven Nov 07, 2008 16:51

Message le Mar Nov 18, 2008 22:55

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 :)


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités