Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script PHP et javascript de connexion par login mot de passe

7 réponses
Avatar
Didier
Bonjour à tous.
J'ai écrit un script php chargé de se connecter à une application dont
l'écran d'accueil initial demande un login et un mot de passe : un
simple formulaire à 3 champs : login, mot de passe, et bouton submit
Valider.
Mon script php reproduit le formulaire.
Tout fonctionne bien, lorsque je clique sur le bouton Valider j'accède
bien à l'écran suivant en étant connecté.
Lorsque je veux automatise le clic sur le bouton Valider par une
fonction javascript, la connexion semble ne pas se faire, et je retourne
au formulaire de login avec les champs vides, mais sans le message
d'erreur correspondant à un mauvais couple login/mot de passe. Voici le
contenu de la fonction javascript :
document.getElementById('connexion').submit()
où 'connexion' est l'id affecté au formulaire dans la balise <form>.
Si j'ai bien compris le php de l'application, après validation par le
bouton Valider, on revient au script login.php de l'application, qui
voit qu'on est connecté, et qui appelle le sript accueil.php.

Je ne vois pas ce que je rate.

Merci pour vos idées.
Didier.

7 réponses

Avatar
Clément
Le 01/05/2012 09:47, Didier a écrit :
Bonjour à tous.
J'ai écrit un script php chargé de se connecter à une application dont
l'écran d'accueil initial demande un login et un mot de passe : un
simple formulaire à 3 champs : login, mot de passe, et bouton submit
Valider.
Mon script php reproduit le formulaire.
Tout fonctionne bien, lorsque je clique sur le bouton Valider j'accède
bien à l'écran suivant en étant connecté.
Lorsque je veux automatise le clic sur le bouton Valider par une
fonction javascript, la connexion semble ne pas se faire, et je retourne
au formulaire de login avec les champs vides, mais sans le message
d'erreur correspondant à un mauvais couple login/mot de passe. Voici le
contenu de la fonction javascript :
document.getElementById('connexion').submit()
où 'connexion' est l'id affecté au formulaire dans la balise <form>.
Si j'ai bien compris le php de l'application, après validation par le
bouton Valider, on revient au script login.php de l'application, qui
voit qu'on est connecté, et qui appelle le sript accueil.php.

Je ne vois pas ce que je rate.

Merci pour vos idées.
Didier.


Que voulez-vous dire par "automatiser le clic sur Valider" ?
Dès que la page est affichée le formulaire est soumis (même si les
champs sont vides) ?
Si oui dans cas, ça peut être normal, si les champs sont vides,
l'utilisateur n'est pas trouvé, il ne sera pas identifié.
Avatar
Didier
Le 01/05/2012 12:33, Clément a écrit :
Le 01/05/2012 09:47, Didier a écrit :
Bonjour à tous.
J'ai écrit un script php chargé de se connecter à une application dont
l'écran d'accueil initial demande un login et un mot de passe : un
simple formulaire à 3 champs : login, mot de passe, et bouton submit
Valider.
Mon script php reproduit le formulaire.
Tout fonctionne bien, lorsque je clique sur le bouton Valider j'accède
bien à l'écran suivant en étant connecté.
Lorsque je veux automatise le clic sur le bouton Valider par une
fonction javascript, la connexion semble ne pas se faire, et je retourne
au formulaire de login avec les champs vides, mais sans le message
d'erreur correspondant à un mauvais couple login/mot de passe. Voici le
contenu de la fonction javascript :
document.getElementById('connexion').submit()
où 'connexion' est l'id affecté au formulaire dans la balise <form>.
Si j'ai bien compris le php de l'application, après validation par le
bouton Valider, on revient au script login.php de l'application, qui
voit qu'on est connecté, et qui appelle le sript accueil.php.

Je ne vois pas ce que je rate.

Merci pour vos idées.
Didier.


Que voulez-vous dire par "automatiser le clic sur Valider" ?
Dès que la page est affichée le formulaire est soumis (même si les
champs sont vides) ?
Si oui dans cas, ça peut être normal, si les champs sont vides,
l'utilisateur n'est pas trouvé, il ne sera pas identifié.


Effectivement je n'ai pas été clair, toutes mes excuses.
Dans mon script php, je préremplis (à l'aide de leur propriété value)
les champs login et mot de passe avec des valeurs valides.
Si je n'active pas la fonction javascript qui fait le submit, j'ai donc
à l'écran mon formulaire, avec des champs remplis, et je clique sur le
bouton Valider, et la connexion se fait : l'application me renvoie
l'écran suivant cette authentification.
Si j'active (je décommente dans le script php) la fonction qui fait le
submit, la connexion ne se fait pas.
Merci pour la réponse.
Didier.
Avatar
Olivier Miakinen
Bonjour,

Le 01/05/2012 20:17, Didier a écrit :

[...]
Lorsque je veux automatise le clic sur le bouton Valider par une
fonction javascript, la connexion semble ne pas se faire, et je retourne
au formulaire de login avec les champs vides, mais sans le message
d'erreur correspondant à un mauvais couple login/mot de passe. [...]
Si j'ai bien compris le php de l'application, après validation par le
bouton Valider, on revient au script login.php de l'application, qui
voit qu'on est connecté, et qui appelle le sript accueil.php.





Effectivement je n'ai pas été clair, toutes mes excuses.
Dans mon script php, je préremplis (à l'aide de leur propriété value)
les champs login et mot de passe avec des valeurs valides.
Si je n'active pas la fonction javascript qui fait le submit, j'ai donc
à l'écran mon formulaire, avec des champs remplis, et je clique sur le
bouton Valider, et la connexion se fait : l'application me renvoie
l'écran suivant cette authentification.
Si j'active (je décommente dans le script php) la fonction qui fait le
submit, la connexion ne se fait pas.



Voici quelques idées en vrac.

1) Est-ce que le code javascript attend bien la fin de l'affichage de la
page avant de s'exécuter ?

2) Si je comprends bien, après validation c'est le même script qui est
rappelé, avec donc le code javascript qui est soit inactif les deux
fois, soit actif les deux fois. Ce ne serait pas ça le problème ?

3) Sinon, quand la connexion ne se fait pas, est-ce que les champs sont
toujours pré-remplis, et dans ce cas est-ce que cliquer manuellement
sur le bouton valider fait réussir la connexion ?

Et si ces quelques idées ne t'aident pas, tu peux toujours publier le
code en question (bien sûr en masquant le mot de passe s'il est en
clair).
Avatar
Didier
Le 01/05/2012 22:04, Olivier Miakinen a écrit :
Bonjour,

Le 01/05/2012 20:17, Didier a écrit :

[...]
Lorsque je veux automatise le clic sur le bouton Valider par une
fonction javascript, la connexion semble ne pas se faire, et je retourne
au formulaire de login avec les champs vides, mais sans le message
d'erreur correspondant à un mauvais couple login/mot de passe. [...]
Si j'ai bien compris le php de l'application, après validation par le
bouton Valider, on revient au script login.php de l'application, qui
voit qu'on est connecté, et qui appelle le sript accueil.php.





Effectivement je n'ai pas été clair, toutes mes excuses.
Dans mon script php, je préremplis (à l'aide de leur propriété value)
les champs login et mot de passe avec des valeurs valides.
Si je n'active pas la fonction javascript qui fait le submit, j'ai donc
à l'écran mon formulaire, avec des champs remplis, et je clique sur le
bouton Valider, et la connexion se fait : l'application me renvoie
l'écran suivant cette authentification.
Si j'active (je décommente dans le script php) la fonction qui fait le
submit, la connexion ne se fait pas.



Voici quelques idées en vrac.

1) Est-ce que le code javascript attend bien la fin de l'affichage de la
page avant de s'exécuter ?

2) Si je comprends bien, après validation c'est le même script qui est
rappelé, avec donc le code javascript qui est soit inactif les deux
fois, soit actif les deux fois. Ce ne serait pas ça le problème ?

3) Sinon, quand la connexion ne se fait pas, est-ce que les champs sont
toujours pré-remplis, et dans ce cas est-ce que cliquer manuellement
sur le bouton valider fait réussir la connexion ?

Et si ces quelques idées ne t'aident pas, tu peux toujours publier le
code en question (bien sûr en masquant le mot de passe s'il est en
clair).


OK, merci, j'essaie de regarder ça demain et je vous dis.
Lors du passage sur la partie connexion dans mon script (il y aura
d'autres parties, destinées à simuler une saisie), je positionne une
variable pour éviter de resoumettre le formulaire une deuxième fois.
Mon script est destiné à ne se dérouler qu'une seule fois. C'est celui
de l'application cible qui s'appelle lui-même, pour soit demander
login/mdp, soit vérifier que c'est Ok et passer à la page d'accueil
proprement dite.
Didier.
Quand la connexion ne se fait pas, je reçois effectivement à nouveau la
page de login avec les champs vides.
Avatar
Olivier Miakinen
Avant-hier, Didier a écrit :

OK, merci, j'essaie de regarder ça demain et je vous dis.



Dois-je supposer que le problème est résolu ? ;-)

Cordialement,
--
Olivier Miakinen
Avatar
Didier
Le 03/05/2012 23:21, Olivier Miakinen a écrit :
Avant-hier, Didier a écrit :

OK, merci, j'essaie de regarder ça demain et je vous dis.



Dois-je supposer que le problème est résolu ? ;-)

Cordialement,


Non, pas encore, mais dos bloqué -> je ne vais pas au boulot -> je n'ai
pas essayé.
Les bugs se logent à des endroits parfois ...
Je vous tiens au courant, d'autant que j'ai eu un contact avec le
développeur de l'application cible, qui va regarder de son côté.
Merci.
Didier.
Avatar
Didier
Le 01/05/2012 22:04, Olivier Miakinen a écrit :
Bonjour,

Le 01/05/2012 20:17, Didier a écrit :

[...]
Lorsque je veux automatise le clic sur le bouton Valider par une
fonction javascript, la connexion semble ne pas se faire, et je retourne
au formulaire de login avec les champs vides, mais sans le message
d'erreur correspondant à un mauvais couple login/mot de passe. [...]
Si j'ai bien compris le php de l'application, après validation par le
bouton Valider, on revient au script login.php de l'application, qui
voit qu'on est connecté, et qui appelle le sript accueil.php.





Effectivement je n'ai pas été clair, toutes mes excuses.
Dans mon script php, je préremplis (à l'aide de leur propriété value)
les champs login et mot de passe avec des valeurs valides.
Si je n'active pas la fonction javascript qui fait le submit, j'ai donc
à l'écran mon formulaire, avec des champs remplis, et je clique sur le
bouton Valider, et la connexion se fait : l'application me renvoie
l'écran suivant cette authentification.
Si j'active (je décommente dans le script php) la fonction qui fait le
submit, la connexion ne se fait pas.



Voici quelques idées en vrac.


J'ai pu faire quelques essais cet après-midi :

1) Est-ce que le code javascript attend bien la fin de l'affichage de la
page avant de s'exécuter ?


J'ai mis l'appel de la fonction javascript après l'affichage de
l'ensemble du formulaire, donc elle ne devrait pas s'exécuter avant
(elle est déclarée dans le head de la page).

2) Si je comprends bien, après validation c'est le même script qui est
rappelé, avec donc le code javascript qui est soit inactif les deux
fois, soit actif les deux fois. Ce ne serait pas ça le problème ?


Le formulaire a comme action un script login.php de l'application
ciblée. Quand ce script est appelé avec les données du formulaire
passées en POST, il contrôle l'authentification et si ok appelle un
script accueil.php, sinon il se rappelle lui-même avec le formulaire vide.

3) Sinon, quand la connexion ne se fait pas, est-ce que les champs sont
toujours pré-remplis, et dans ce cas est-ce que cliquer manuellement
sur le bouton valider fait réussir la connexion ?


Non, la page s'affiche avec les champs vides, mais sans le message
d'erreur d'une authentification echouée, donc comme une première demande
d'authentification.

Et si ces quelques idées ne t'aident pas, tu peux toujours publier le
code en question (bien sûr en masquant le mot de passe s'il est en
clair).


Pour ne pas trop vous mobiliser pour rien, j'ai pris contact avec le
développeur de l'application ciblée, qui va regarder ce qui se passe.
C'est certainement une finasserie de son script, et une mauvaise
programmation de ma part.

Merci.
Didier.