[PHP]envoyer une variable sur un autre site
Fermé
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
-
Modifié par zimeau le 23/03/2010 à 15:47
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 - 26 mars 2010 à 14:26
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 - 26 mars 2010 à 14:26
A voir également:
- [PHP]envoyer une variable sur un autre site
- Site de telechargement - Accueil - Outils
- Site comme coco - Accueil - Réseaux sociaux
- Site inaccessible - Guide
- Quel site remplace coco - Accueil - Réseaux sociaux
- Site pour vendre des objets d'occasion - Guide
20 réponses
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
23 mars 2010 à 17:49
23 mars 2010 à 17:49
Je n'ai pas très bien compris.
Tu aimerais envoyer le formulaire sans changer ou recharger la page ?
Si oui ? AJAX
Tu aimerais envoyer le formulaire sans changer ou recharger la page ?
Si oui ? AJAX
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
23 mars 2010 à 18:20
23 mars 2010 à 18:20
sa a l'air d'être une solution, je ne connait pas l'ajax, je me renseigne dessus.
ce que je voudrais, c'est envoyer le formulaire de manière transparente. si j'utilise mon code tel quel, il m'affichera index.php lorsque j'appuierais sur valider. je veux qu'il traite les donner sans afficher la page.
ce que je voudrais, c'est envoyer le formulaire de manière transparente. si j'utilise mon code tel quel, il m'affichera index.php lorsque j'appuierais sur valider. je veux qu'il traite les donner sans afficher la page.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
23 mars 2010 à 18:36
23 mars 2010 à 18:36
AJAX à l'air de correspondre à tes besoins.
Par contre, il faut que la page cible soit sur le même domaine que la page contenant le formulaire.
Par contre, il faut que la page cible soit sur le même domaine que la page contenant le formulaire.
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
23 mars 2010 à 19:17
23 mars 2010 à 19:17
alors j'ai 2 probleme. le 1er, c'est que ma page cible n'est pas sur le meme domaine que mon formulaire. de plus, mon hebergeur n'a pas l'air de gerer l'ajax. j'ai essayer une code simple :
cela ne marche pas.
il n'y aurais pas une solution en php (que je connait mieux)? je pensais à faire un include de la page cible dans la page hote, et cacher visuellement ce qui apparait dans l'include avec du css. je ne sais pas si lorsque j'envoie un formulaire, il est aussi transmit à une page situer dans un include. je vais essayer.
<html> <head> <script> 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", "data.xml", true); xhr.send(null); } </script> </head> <body> <FORM method="POST" name="ajax" action=""> <INPUT type="BUTTON" value="Submit" ONCLICK="submitForm()"> <INPUT type="text" name="dyn" value=""> </FORM> </body> </html>
cela ne marche pas.
il n'y aurais pas une solution en php (que je connait mieux)? je pensais à faire un include de la page cible dans la page hote, et cacher visuellement ce qui apparait dans l'include avec du css. je ne sais pas si lorsque j'envoie un formulaire, il est aussi transmit à une page situer dans un include. je vais essayer.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
23 mars 2010 à 19:35
23 mars 2010 à 19:35
AJAX est géré côté client, rien à voir avec ton hébergeur.
Crées un script PHP qui va envoyer la requête avec les données POST grâce à cURL.
C'est ce script que tu devras appeler avec AJAX.
Crées un script PHP qui va envoyer la requête avec les données POST grâce à cURL.
C'est ce script que tu devras appeler avec AJAX.
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
23 mars 2010 à 20:08
23 mars 2010 à 20:08
j'ai peut être mal coder mon ajax, tu vois une erreur dans mon code? je l'ai mis dans un fichier html (sa devrais marcher ainsi je pense). j'ai utiliser ce tuto pour tester l'ajax https://www.xul.fr/xml-ajax.html
il y a une page de demo pour voir ce que le code qui correspond fait. je prend le code et le met sur mon hébergeur, sa ne marche pas, alors que sa marche sur le site du tuto. (seul l'hébergeur change entre le code du tuto et celui que j'ai mis sur mon hébergeur.
il y a une page de demo pour voir ce que le code qui correspond fait. je prend le code et le met sur mon hébergeur, sa ne marche pas, alors que sa marche sur le site du tuto. (seul l'hébergeur change entre le code du tuto et celui que j'ai mis sur mon hébergeur.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
23 mars 2010 à 22:04
23 mars 2010 à 22:04
xhr.open( GET", "data.xml", true);Je doute que le fichier data.xml soit celui que tu veux "contacter".
Crées un script PHP qui se chargera d'envoyer une requête sur le serveur externe avec les données POST grâce à cURL. C'est ce fichier qu'il faudra contacter avec AJAX.
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
23 mars 2010 à 23:44
23 mars 2010 à 23:44
j'ai fait quelque test avec cURL, le problème est que comme la fonction include, elle ne permet pas de contacter une autre page que celle qui sont sur le serveur. j'arrive bien à afficher ma page d'accueil, mais quand je met une autre page en paramètre, elle ne s'affiche pas.
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
Modifié par zimeau le 24/03/2010 à 09:26
Modifié par zimeau le 24/03/2010 à 09:26
j'ai trouvé une petit balise qui fait presque ce que j'ai besoin :
ça m'affiche bien index.php a partir de n'importe qu'elle hébergeur, mais le problème est qu'il ne prend pas les variable envoyé.
si dans index.php, j'ai le code
il n'affichera pas la variable test envoyé depuis ma page.
<object type="text/html" data="http://zimeau.fr/index.php" width="500px" height="500px">
ça m'affiche bien index.php a partir de n'importe qu'elle hébergeur, mais le problème est qu'il ne prend pas les variable envoyé.
si dans index.php, j'ai le code
echo $_POST['test'];
il n'affichera pas la variable test envoyé depuis ma page.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 mars 2010 à 13:13
24 mars 2010 à 13:13
Le but de cURL est justement d'envoyer des requêtes HTTP, donc il y a un problème si tu ne peux en envoyer sur le serveur interne.
Et cURL n'a rien à voir avec include : include() inclus le code source PHP, cURL passe par HTTP donc le PHP est exécuté (comme quand tu vas sur la page avec le navigateur).
Et cURL n'a rien à voir avec include : include() inclus le code source PHP, cURL passe par HTTP donc le PHP est exécuté (comme quand tu vas sur la page avec le navigateur).
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
Modifié par zimeau le 24/03/2010 à 16:14
Modifié par zimeau le 24/03/2010 à 16:14
j'ai essayé l'exemple suivant dans un test.php :
si je met a la place de http://www.example.com/ une page de qui se situe sur le même serveur que mon test.php, alors j'ai bien le contenu de ma page dans example_homepage.txt. si je met une autre page, alors le fichier example_homepage.txt ne change pas.
<?php $ch = curl_init("http://www.example.com/"); $fp = fopen("example_homepage.txt", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); ?>
si je met a la place de http://www.example.com/ une page de qui se situe sur le même serveur que mon test.php, alors j'ai bien le contenu de ma page dans example_homepage.txt. si je met une autre page, alors le fichier example_homepage.txt ne change pas.
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
Modifié par zimeau le 24/03/2010 à 16:13
Modifié par zimeau le 24/03/2010 à 16:13
après un peu de persévérance, j'ai finalement réussis à afficher la page google.fr avec curl. le problème viens en faite du site que j'essaye d'afficher qui reste vide lorsque j'essaye de l'afficher avec curl. est ce qu'il y a un moyen de faire afficher les erreur de curl pour savoir pourquoi il affiche bien certain site comme google et pas d'autre?
en attendant, je poursuit mes tests sur google. disons qu'avec mon formulaire, je veuille afficher la page google donnant le résultat de ma recherche. j'ai fait ce petit morceaux :
le problème est que lorsque je clique sur "test Google", il essaye de charger la page http://www.mondomaine.fr/search?q=&btnG=Recherche+Google
ce qui est normal vu que ma form pointe vers /search. mais si je demande qu'il pointe vers www.google.fr/search (action='www.google.fr/search'), j'aurai comme recherche http://www.mondomaine.fr/www.google.fr/search?q=&btnG=Recherche+Google. ce qui est normal aussi. comment puis je faire une tentative d'envoi de la variable sur l'url du site curl plutot que sur mon domaine?
Edit :
si je met l'action de ma form vide (action=''), alors j'ai un meilleur résultat : http://www.mondomaine.fr/google.php?q=test&btnG=Recherche+Google
google.php étant la page ou je fait mes test. il passe donc bien les variables dans la barre de navigation, mais elle ne sont pas utiliser par cURL :(
en attendant, je poursuit mes tests sur google. disons qu'avec mon formulaire, je veuille afficher la page google donnant le résultat de ma recherche. j'ai fait ce petit morceaux :
<?php // Création d'une ressource cURL $ch = curl_init(); // Définition de l'URL et autres options appropriées curl_setopt($ch, CURLOPT_URL, "https://www.google.fr/?gws_rd=ssl"); // Récupération de l'URL et passage au navigateur curl_exec($ch); // mon formulaire echo "<form name='f' action='/search'>"; echo "<input value='' title='Recherche Google' class='lst' size='55' name='q' maxlength='2048' autocomplete='off'>"; echo "<input type='submit' class='lsb' value='test Google' name='btnG'>"; echo "</form>"; // Fermeture de la ressource cURL et libération des ressources systèmes curl_close($ch); ?>
le problème est que lorsque je clique sur "test Google", il essaye de charger la page http://www.mondomaine.fr/search?q=&btnG=Recherche+Google
ce qui est normal vu que ma form pointe vers /search. mais si je demande qu'il pointe vers www.google.fr/search (action='www.google.fr/search'), j'aurai comme recherche http://www.mondomaine.fr/www.google.fr/search?q=&btnG=Recherche+Google. ce qui est normal aussi. comment puis je faire une tentative d'envoi de la variable sur l'url du site curl plutot que sur mon domaine?
Edit :
si je met l'action de ma form vide (action=''), alors j'ai un meilleur résultat : http://www.mondomaine.fr/google.php?q=test&btnG=Recherche+Google
google.php étant la page ou je fait mes test. il passe donc bien les variables dans la barre de navigation, mais elle ne sont pas utiliser par cURL :(
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 mars 2010 à 16:21
24 mars 2010 à 16:21
Il faut que tu utilises AJAX sur ta page qui contient le formulaire pour contacter ton script PHP en lui passant les variables (et leurs valeurs).
Après, avec cURL, tu te charges d'envoyer la requête sur le serveur externe en repassant ces variables par POST.
Après, avec cURL, tu te charges d'envoyer la requête sur le serveur externe en repassant ces variables par POST.
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
25 mars 2010 à 14:09
25 mars 2010 à 14:09
Genial! j'ai réussis a utiliser ajax! (je ne connaissait pas du tout ce langage jusque la, merci le site du zero xD ) il est plutôt intéressant de comprendre comment il fonctionne.
Bon, on va pouvoir progresser maintenant que j'ai bien compris le système de communication d'ajax et que j'ai commencer à faire marcher langage.
voila ce que j'ai fait (lecture complète du code non obligatoire pour finir de résoudre mon problème):
Donc en résumer, ce code est donc mon index.php qui envoi les donner par post à reponse.php, qui affiche les réponse. Ensuite, je fait afficher ce qu'il y a dans reponse.php entre les balise <div id="content"></div> avec un bouton "Valeur".
Tout marche très bien à un tout petit détail prêt. La variable $ct qui contient soit "+33", soit "+61", soit "+43" ne s'affiche pas correctement lorsque je la fait apparaitre avec mon bouton "Valeur". Le + disparait et je n'ai plus que 33, 61 ou 43. pourquoi mon "+" disparait-il? Je ne sais pas si il disparait au moment de l'envoie sur réponse.php ou lors de son affichage s
on affichage sur index.php; Il ne me reste que ce détail à voir puis je pourrais envoyer mon formulaire sur mes autres pages, sur mes autres hébergeur.
Bon, on va pouvoir progresser maintenant que j'ai bien compris le système de communication d'ajax et que j'ai commencer à faire marcher langage.
voila ce que j'ai fait (lecture complète du code non obligatoire pour finir de résoudre mon problème):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <title>test</title> <?php $ct=$_POST['ct']; $to=$_POST['to']; $text=$_POST['text']; $send=$_POST['send']; ?> <script type="text/javascript"> function plop() { var xhr_object = null; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else { if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else // XMLHttpRequest non supporté par le navigateur { alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } } var method = "POST"; var filename = "reponse.php"; var requete = "ct=<?php echo $ct; ?>&to=<?php echo $to; ?>&text=<?php echo $text; ?>&send=<?php echo $send; ?>"; xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { var reponse = xhr_object.responseText; document.getElementById("content").innerHTML = reponse; } } xhr_object.open(method, filename, true); xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send(requete); } </script></head> <body> <form action="" method="post"> <table> <tr> <td>SMS gratuit</td> </tr> <tr><td>Destinataire</td><td><select name="ct"> <option selected="selected" value="+33">France</option> <option value="+61">Australia</option> <option value="+43">Austria</option> </select><input onkeyup="if(this.value[0]==0||this.value[0]=='+') this.value='';" name="to" size="25" maxlength="15" title="entrez le numero de téléphone sans le 0" type="text"><br></td></tr> <tr><td>Message</td><td><textarea name="text" cols="45" rows="5"></textarea></td></tr> <tr><td colspan="2" align="center"><input value="Send" name="send" type="submit"></td></tr> </table> </form> <input value="Valeur" type="submit" onclick="plop()"> <div id="content"></div> </body></html>
Donc en résumer, ce code est donc mon index.php qui envoi les donner par post à reponse.php, qui affiche les réponse. Ensuite, je fait afficher ce qu'il y a dans reponse.php entre les balise <div id="content"></div> avec un bouton "Valeur".
Tout marche très bien à un tout petit détail prêt. La variable $ct qui contient soit "+33", soit "+61", soit "+43" ne s'affiche pas correctement lorsque je la fait apparaitre avec mon bouton "Valeur". Le + disparait et je n'ai plus que 33, 61 ou 43. pourquoi mon "+" disparait-il? Je ne sais pas si il disparait au moment de l'envoie sur réponse.php ou lors de son affichage s
on affichage sur index.php; Il ne me reste que ce détail à voir puis je pourrais envoyer mon formulaire sur mes autres pages, sur mes autres hébergeur.
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
25 mars 2010 à 15:53
25 mars 2010 à 15:53
bon, rectification, je n'ai pas besoin du "+" finalement. le problème est que a première vu, ça ne fonctionne pas. Il y a un défaut avec ajax, c'est que si il y a une erreur quelque par, on a aucun message (avec php, si on oublie un ";" ou que quelque chose ne va pas, on le sais). peut être n'arrive t-il pas a joindre le site? peut être que les variable ne sont pas envoyé?
et quel serait l'utilisation de cURL la dedans finalement?
et quel serait l'utilisation de cURL la dedans finalement?
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
25 mars 2010 à 19:00
25 mars 2010 à 19:00
Pour commencer AJAX n'est pas un langage, c'est un concept.
Pour récupérer la valeur d'un champ en Javascript :
var requete = "ct=<?php echo $ct; ?>&to=<?php echo $to; ?>&text=<?php echo $text; ?>&send=<?php echo $send; ?>";D'où sortent ces variables ? Elles sont déclarées nul part avant.
Pour récupérer la valeur d'un champ en Javascript :
document.getElementById('id_du_champ').value
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
25 mars 2010 à 20:40
25 mars 2010 à 20:40
oui en effet, c'est pas vraiment un langage (même pas du tout) mais maitrisé l'ajax, c'est dire qu'on maitrise le php, javascript, css, html. c'est pas du tout mon cas (sinon j'aurais pas besoin d'aide xD ).
mes variables sont déclarer dans le formulaire de ma pagne (index.php) :
au 1ere chargement de la page index.php, rien n'est envoyer à reponse.php, et lorsque je click sur Send, les valeur sont envoyer par POST sur index.php (sur elle meme), je les récupère avec
puis
avec le bouton Valeur, j'execute la fonction plop() qui les envois les valeur avec ajax sur reponse.php puis qui m'affiche les valeur qui sont sur reponse.php. voici le code de reponse.php :
mes variables sont déclarer dans le formulaire de ma pagne (index.php) :
<select name="ct"> <input onkeyup="if(this.value[0]==0||this.value[0]=='+') this.value='';" name="to" size="25" maxlength="15" title="entrez le numero de téléphone sans le 0" type="text"> <textarea name="text" cols="45" rows="5"> <input value="Send" name="send" type="submit">
au 1ere chargement de la page index.php, rien n'est envoyer à reponse.php, et lorsque je click sur Send, les valeur sont envoyer par POST sur index.php (sur elle meme), je les récupère avec
$ct=$_POST['ct']; $to=$_POST['to']; $text=$_POST['text']; $send=$_POST['send'];
puis
avec le bouton Valeur, j'execute la fonction plop() qui les envois les valeur avec ajax sur reponse.php puis qui m'affiche les valeur qui sont sur reponse.php. voici le code de reponse.php :
pays : <?php echo $_POST['ct'] ; ?><br /> numero : <?php echo $_POST['to'] ; ?><br /> message : <?php echo $_POST['text'] ; ?><br /> bouton send : <?php echo $_POST['send'] ; ?>
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
26 mars 2010 à 12:55
26 mars 2010 à 12:55
je continue d'apprendre l'ajax via le site du zéro pour m'y familiarisé au mieux et faire ce dont j'ai besoin, mais je suis tombé sur la fonction XMLHttpRequest cross-domain qui parait être ce dont j'ai besoin (mais qui n'est malheureusement pas vraiment exploitable pour les utilisateurs) : https://openclassrooms.com/fr/courses/245710-ajax-et-lechange-de-donnees-en-javascript/245581-lxmlhttprequest-cross-domain
cela voudrait-il dire que XMLHttpRequest ne peut pas communiquer d'un domaine a l'autre? et que je ne peux donc pas trouver de solution à ce que je voudrais faire?
cela voudrait-il dire que XMLHttpRequest ne peut pas communiquer d'un domaine a l'autre? et que je ne peux donc pas trouver de solution à ce que je voudrais faire?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
26 mars 2010 à 13:38
26 mars 2010 à 13:38
<select name="ct">
<input onkeyup="if(this.value[0]==0||this.value[0]=='+')
this.value='';" name="to" size="25" maxlength="15" title="entrez le numero de téléphone sans le 0" type="text">
<textarea name="text" cols="45" rows="5">
<input value="Send" name="send" type="submit">
/ou il manque des lignes ou alors ton code n'est vraiment pas bon
<select ...> il faut a la suite des <option>
et à la fin </select>
<textarea ...> il faut aussi </textarea>
zimeau
Messages postés
711
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
117
26 mars 2010 à 14:26
26 mars 2010 à 14:26
en regardant un peu plus haut, on vois dans le code :
pareille pour le textarea.
monde code html ne posera aucun soucis, je le maitrise bien. Je pense que sa viens plutôt de l'ajax que je ne connait que depuis 2 jours, ou peut être du php que je connait que depuis quelque semaine...
<select name="ct"> <option selected="selected" value="+33">France</option> <option value="+61">Australia</option> <option value="+43">Austria</option> </select>
pareille pour le textarea.
monde code html ne posera aucun soucis, je le maitrise bien. Je pense que sa viens plutôt de l'ajax que je ne connait que depuis 2 jours, ou peut être du php que je connait que depuis quelque semaine...