[RESOLU] Curl, formulaire et afficher resultat

carlescampi
Invité n'ayant pas de compte PHPfrance

21 nov. 2010, 03:48

Bonjour,

Je suis débutant en Curl, mon objectif est de valider un formulaire et voir le resultat de la page qui suit le formulaire.

A vrais dire il y a longtemps que je teste mais le site me bloque l'acces en tant que "erreur generique", donc je dois certainement oublier des informations...

le FORM est le suivant:
<form action="GeneralServlet" method="post" name="InicioForm" autocomplete="off">
<input type="hidden" name="ajax" value="permitido">
<input name="idioma" type="hidden" value="">
<input name="pageOperation" type="hidden" value="LOGIN">

<input name="login" type="text" value="" maxlength="12">
<input name="password" id="password" type="password" value="" maxlength="12" onfocus="mostrarTeclado()">
<input type="submit" value="Entrar" class="boton">
</form>
Et le script php est le suivant :
<?php
// Données à envoyer
$post = array();
$post["ajax"] = "permitido";
$post["idioma"] = "";
$post["pageOperation"] = "LOGIN";
$post["login"] = "AAAAA";
$post["password"] = "BBBBB";
$post["submit"] = "Entrar";

$message_sous_forme_de_chaine = http_build_query($post);
// On effectue la requête avec cURL
$useragent = "Mozilla/5.0";
$url = "https://interconnexio2.bibm.ad/GeneralServlet"; //argument action dans form
$referer = $url; 

//Initialise une session CURL
$ch = curl_init($url);

curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_HEADER, FALSE );
//on récupère le contenu de la page de résultat de la soumission dans une chaine
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//CURL options
curl_setopt($ch, CURLOPT_POST, TRUE);
//On poste les données du tableau $postfields
curl_setopt($ch, CURLOPT_POSTFIELDS, $message_sous_forme_de_chaine);
//a mettre absoluement sinon, la liste de certificats existants ne sera pas prise en compte
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
//On passe un referrer ici on passe la même page $url
curl_setopt($ch, CURLOPT_REFERER, $referer);
//On définit un useragent ici Mozilla/5.0
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

// en cas de redirection (facultatif ici)
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//Page de résultats et fermeture de session
//$result = 

$ret = curl_exec($ch);
if (!$ret) {
    echo curl_error($ch);
} else {
    echo 'Envoi OK !';
	echo '<br>'.$ret;
}
curl_close($ch);
?>
le site en question est : https://interconnexio2.bibm.ad/GeneralServlet , c le site de ma banque.

Je vous serai très reconnaissant de bien vouloir jeter un petit coup d'oeuil a ce code, je suis sur que quelque chose doit manquer...

Merci

carlescampi
Invité n'ayant pas de compte PHPfrance

23 nov. 2010, 02:49

UP ?

Eléphant du PHP | 245 Messages

23 nov. 2010, 12:41

cURL simule un envoi de formulaire.

Avant de tester cURL il faut donc voir ce qu'il se passe lorsque tu envoies le formulaire à la banque.
Si la banque n'affiche pas un retour correct dans le navigateur, c'est qu'il y a une erreur de paramètre dans le formulaire.

Une fois que le formulaire soumis à la banque est vérifié sans l'usage de cURL, on passe alors au debuggage de cURL, sinon pas la peine d'aller plus loin, il faut voir le paramètre qui pose problème (y compris en appelant les techniciens de la banque).

Si le formulaire marche, c'est à dire si le navigateur renvoie la chaine de caractères que l'on souhaitait, on le teste avec cURL.
Ton code à l'air correct, à priori, tu n'as rien oublié, peut être même que tu as ajouté des options non indispensables :
par exemple, je n'utilise pas les deux derniers car ma banque ne les vérifie pas :
//On passe un referrer ici on passe la même page $url
curl_setopt($ch, CURLOPT_REFERER, $referer);
//On définit un useragent ici Mozilla/5.0
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
Mais à mon avis l'erreur ne vient pas de cURL mais des paramètres envoyés à la banque :
soit tu en as oublié un.
soit il y en a un qui est mal formaté.
Mais ça, il faut le tester sans cURL et voir avec le support technique de la banque ce qu'il manque.

carlescampi
Invité n'ayant pas de compte PHPfrance

03 déc. 2010, 02:04

Bonsoir,

Merci pour la réponse (et excuse moi du retard, j'avais perdu le lien).

A vrais dire en envoyant le formulaire manuellement, ça marche, et donne le résultat que j'aimerais récupérer. Mais avec Curl, on dirait qu'il ne le laisse pas accéder a l'intérieur. ça doit être une sorte de sécurité. :shock:
L'informaticien de la banque ne trouve pas l'intérêt de cette démarche et me demande d'y accéder manuellement, chose que je veux éviter. :non:
L'intérêt pour moi est celle de regrouper 3 comptes que j'ai dans cette même banque, faire une sorte de comptabilité automatique. :!:

Vous croyez que c'est impossible d’accéder dans cette page via Curl ? :?

Peut être j'ai oublié un post du Formulaire.... peut être il y a un cookie? je ne suis pas expert dans ce domaine, si quelqu'un pouvait me donner des renseignements :priere:

Petit nouveau ! | 4 Messages

08 déc. 2010, 22:28

Y'a cet element qui te manque dans ton formulaire, virtualKey => 0, puis les cookies (logique).

carlescampi
Invité n'ayant pas de compte PHPfrance

10 déc. 2010, 19:48

Merci, je vais essayer.

Et les cookies comment on fait ?

Petit nouveau ! | 4 Messages

13 déc. 2010, 18:35