Bonjour a tous,

Je suis actuellement confronté a un problème en CURL, et je n'ai pas vu pareil problème actuellement.

Alors voila, je me connecte ,grâce a curl, a un site en remplissant un formulaire de login, puis je souhaite faire une autre action , qui demande donc de remplir un autre formulaire, mais ce formulaire semble un peu différent.

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<form method="post" action="message.php">
<input id="receiver" name="receiver">
<input name="titre">
<textarea id="message" name="message">
<button id="s1" name="s1">
<input name="c"> <!-- ça c'est un champs qui est pré-remplis et caché -->
</form>

Alors voici mon code php (je passe les referer tout ça)

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<?php 
 
$ch = curl_init('http://monsite.fr/message.php');
 
curl_setopt ($ch, CURLOPT_POST, TRUE);
curl_setopt ($ch, CURLOPT_POSTFIELDS,"receiver=nom&titre=test&message=test&c=xxx");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 
curl_exec($ch);
 
?>

Mais cela ne fonctionne pas.
Donc j'ai lancer wireshark afin de savoir quel chaine on envoyais en mode utilisateur, et je me suis aperçue que c'était la bonne chaine, mais qu'il y avait une autre requête faite juste avant qui est envoyer a une autre page.

Donc apparemment le formulaire une fois envoyé demande si le destinataire existe, et si c'est le cas permet l'envoie du message.

Donc je copie cette requête et l'envoie a la page

voici le code :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
 
$ch = curl_init('http://monsite.fr/page.php');
curl_setopt ($ch, CURLOPT_POST, TRUE);
curl_setopt ($ch, CURLOPT_POSTFIELDS,"cmd=checkRecipient&recipient=nom");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 
curl_exec($ch);
// cela retourne un {"success":"success"} 
 
curl_setopt ($ch, CURLOPT_URL,'http://monsite.fr/message.php' );	
curl_setopt ($ch, CURLOPT_POST, TRUE);
curl_setopt ($ch, CURLOPT_POSTFIELDS,"receiver=nom&titre=test&message=test&c=xxx");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 
curl_exec($ch);
?>

Mais cela ne marche pas, et je doit avouer que je bloque sur ce formulaire a deux étape..
Si quelqu'un vois une solution (n'hésitez pas a demander plus d'information).