remplir un formulaire en javascript

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Leporus
Lézard à collerette
Messages : 239
Inscription : 02 mars 2006, 15:51

Message par Leporus »

Benoit a écrit :Bon d'abord cela dépend de si tu connais le formulaire et ses champs a priori ou si tu dois d'abord l'analyser (le second cas est nettement plus compliqué).

En supposant que tu sais ce que tu dois envoyer, il y a encore deux solutions : soit le formulaire n'est pas très compliqué (pas de fichier joint) et le site accepte qu'on passe les champs dans l'URL (méthode GET). Là il suffit d'appeler l'URL suivie de tous les champs :

Code : Tout sélectionner

$var = fopen("http://www.example.com/monformulaire?login=toto&passwd=toto", "r");
Si la méthode GET ne fonctionne pas, il faut utiliser la méthode POST. Pour ça tu dois ouvrir une connexion avec
fsockopen et puis écrire dedans les instructions HTTP. C'est moins drôle.
Bopnjour, vous voulez dire que dans le lien login=toto&passwd=toto et sensé remplire le formulaire du login et du mots de passe sur la page ?

login et passwd se sont les nom des input de la page ?

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
Leporus
Lézard à collerette
Messages : 239
Inscription : 02 mars 2006, 15:51

Message par Leporus »

Sor google ça ne marche pas: https://www.google.com/accounts/Service ... asswd=toto

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
Nucleos
Lézard à collerette
Messages : 282
Inscription : 04 juil. 2003, 17:04

Message par Nucleos »

Absolument pas.

Benoit ne parlait pas de remplir le formulaire, il parlait d'envoyer les données.

J'explique : lorsque tu utilises un formulaire, tu le remplis, tu cliques sur Envoyer, et ça t'affiche une nouvelle page. OK, premier plan. Mais en fait ce n'est pas comme ça que ça se passe au niveau du serveur.

Le serveur, lui, il s'en moque bien que tu passes du temps (ou non) à écrire ton formulaire par exemple. Tout ce qu'il voit, c'est qu'il t'a envoyé un formulaire, et que tu lui renvoies des informations par la suite.

C'est au niveau du serveur qu'il faut que tu réfléchisses, dans la situation où tu utiliserais un script PHP pour je-ne-sais-quoi-de-légal--j'espère-en-bac-+5. :p

Et effectivement, comme l'a dit Benoit, le serveur PHP a deux moyens de recevoir une donnée d'un formulaire : en POST ou en GET (pour simplifier, parce que je crois qu'il y a d'autres méthodes inutilisées.) Disons que c'est plus compliqué que ça encore, parce que je dis il quand je parle du serveur, alors qu'en fait c'est le serveur peut-être, mais c'est surtout le type qui a codé tout ça derrière.

Et le type qui a codé tout ça, soit il a décidé qu'il prenait des données en POST et en GET sans faire de distingo, soit il n'en a pas eu besoin et il a décidé que les données ne devaient être fournies que sous la forme d'un POST. Un GET se transmet dans l'adresse (comme te l'a montré benoit... Tu sais décomposer l'URL http://www.google.fr/search?q=evolution quand même ! Le dernier terme de l'URL (q=evolution) est une variable (q) dont la valeur est "evolution" envoyée par la méthode GET.) et un POST se transmet au sein de la requête HTTP (c'est plus compliqué et invisible pour nous.)

Bref, ce que proposait Benoit, c'est, au cas où tu aurais envie d'envoyer les données d'un formulaire à un serveur, d'utiliser les deux seules méthodes possibles, soit GET, soit POST.

En fait, l'idéal, c'est qu'on sache précisément ce que tu veux faire.
« La clarté est la politesse des professeurs. » (E. Gerurez)
... Posons de bonnes questions !
Leporus
Lézard à collerette
Messages : 239
Inscription : 02 mars 2006, 15:51

Message par Leporus »

Merci beaucoup pour ces quelques explications :wink:

Ce que je veut faire exatement, c'est un script JavaScript qui ouvre une page web (par exemple google gmail), puis sur cette page remplisse les formulaires login et mots de passe (pour que je n'ai pas à le faire manuellement à chaque foi que je veux vérifié mon courier), puis le script simulerai un clique sur le bouton OK pour valider.

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
Nucleos
Lézard à collerette
Messages : 282
Inscription : 04 juil. 2003, 17:04

Message par Nucleos »

Leporus a écrit :Ce que je veut faire exatement, c'est un script JavaScript qui ouvre une page web (par exemple google gmail), puis sur cette page remplisse les formulaires login et mots de passe (pour que je n'ai pas à le faire manuellement à chaque foi que je veux vérifié mon courier), puis le script simulerai un clique sur le bouton OK pour valider.
D'accord, alors prenons cet exemple-là précisément : tu veux consulter tes mails Google. D'abord, il existe de meilleures solutions comme Gmail Manager et GmailNotifier, mais bon.

Ensuite, je ne vois pas l'intérêt (Benoit l'a dit avant moi) de simuler tout ça par javascript, puisque l'intérêt c'est plutôt simplement d'envoyer les données issues de ton formulaire au serveur distant.

De ton point de vue, cliquer sur le bouton OK est important, mais du point de vue du serveur, l'important c'est les données, pas le bouton OK.

Tu pourrais commencer par comprendre comment marchent les formulaires en HTML (à partir de Openweb et Allhtml) puis comprendre comment ça marche en PHP (à partir de phpdebutant peut-être...)

Voilà...
« La clarté est la politesse des professeurs. » (E. Gerurez)
... Posons de bonnes questions !
Leporus
Lézard à collerette
Messages : 239
Inscription : 02 mars 2006, 15:51

Message par Leporus »

Merci encore :wink:

Mais justement on m'a déjà donné un script:

Code : Tout sélectionner

<input type="site" id="popup_site"/> <input type="button" onclick="rempliFormulair(document.getElem entById('popup_site').value)"/> ; 


<script type="text/javascript"> 
function rempliFormulair(url) { 
  fenetrePopup = window.open(url, "fenetrePopup", ""); 

  fenetrePopup.getElementById('form_login'). value = "Mon Login"; 
  fenetrePopup.getElementById('form_pass').v alue = "Monmotdepasse"; 
  fenetrePopup.getElementById('form_submit') .submit(); 
} 
</script>
Mais il ne fonctionne pas.

Si quelqu'un ourait m'éclairer ?

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Si tu l'as copié tel quel de ton site, il y a déjà de grandes chances que ce soit à cause de l'espace au milieu de getElementById dans

Code : Tout sélectionner

onclick="rempliFormulair(document.getElem entById('popup_site').value)"
et des erreurs similaires plus loin.

Mais ce code fait vraiment beaucoup de choses inutiles, parce qu'il essaie de simuler les actions effectuées par un humain (ouvrir le popup, remplir les champs du formulaire, soumettre le formulaire). Tu vas parler à une machine (le serveur), il faut donc raisonner comme une machine. Tout ce dont il a besoin le serveur c'est de recevoir des variables en paramètre à une requête. Il ne "voit" même pas qu'il y avait un formulaire au départ.

Ici, ce que tu devrais faire c'est analyser la fenêtre de login, regarder l'adresse à laquelle il sera envoyé (ou remplir le formulaire toi-même et analyser la communication HTTP avec un analyseur quelconque -LiveHTTPHeaders, Firebug, Ethereal...) et faire simplement un appel à

adresse-submit?form_login=Mon%20Login&form_pass=Monmotdepasse&form_submit=Cequilyasurlebouton
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Leporus
Lézard à collerette
Messages : 239
Inscription : 02 mars 2006, 15:51

Message par Leporus »

Bonjour et merci :wink:

Il n'y a pas d'espace sur getElementById dans le code de ma page test.

J'ai essayer ceci, mais sans suxcé:

Code : Tout sélectionner

https://www.google.com/accounts/ManageAccount?login=toto&passwd=toto
Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Je ne suis pas sûr que tu aies bien compris comment fonctionne un formulaire. L'URL à appeler est dans l'attribut "action" de l'élément FORM, tandis que les noms des variables sont les attributs "name" des champs (éléments INPUT).

En l'occurence, l'action du formulaire sur Google Accounts est "LoginAuth", le nom du champ de login est "Email" et celui du mot de passe est "Passwd".

Cela devrait donner quelque chose comme :

Code : Tout sélectionner

https://www.google.com/accounts/LoginAuth?Email=toto&Passwd=toto
Normalement, il est prévu pour utiliser une méthode POST plutôt que GET (le passage direct des paramètres dans l'URL), mais ça fonctionne peut-être directement comme ça.

Sinon il faudra comme je te le disais plus haut utiliser les sockets ou peut-être que ton serveur permet d'utiliser http_post_data, il faut voir.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Leporus
Lézard à collerette
Messages : 239
Inscription : 02 mars 2006, 15:51

Message par Leporus »

OK, merci beaucoup :wink:

Et on peut ajouter le clic sur OK ?

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Le bouton "Sign in" ? Je ne sais pas très bien, son nom est "null" chez moi.

En supposant qu'il ait une signification :

Code : Tout sélectionner

https://www.google.com/accounts/LoginAuth?Email=toto&Passwd=toto&null=Sign%20in
Là vraiment il faut essayer.
Leporus
Lézard à collerette
Messages : 239
Inscription : 02 mars 2006, 15:51

Message par Leporus »

Encore merci :wink:

De toute facon je viens de tester ça marche même sans.

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
madmass

et pour EMPECHER ça?

Message par madmass »

Bonjour,

Moi, j'ai le problème inverse : j'utilise un petit script en php pour le livre d'or de mon site, sans sql, juste avec un fichier texte. Je le trouve pratique pour les gens comme moi qui ne maitrisent pas bien les languages de programmmation, mais depuis quelques jours, des publicités apparaissent dessus. J'imagine que ce sont des robots qui les mettent, et je voudrais savoir s'il est possible de les empêcher de pourrir mon site qui n'a rien demandé...


Merci bcp

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités