Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/10/2011, 13h58   #1
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
Par défaut Question curl

Bonjour à tous,

J'aimerais avoir une précision sur le curl,

Je débute dans cette spécification et j'aimerais savoir comment faire pour passer d'un formulaire à l'envoi de celui ci en curl.

Voici le code complet :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
$postfields = array();
$postfields["action"] = "submit";
$postfields["EsendexUsername"] = "nom";
$postfields["EsendexPassword"] = "nom1";
$postfields["EsendexAccount"] = "nom2";
$postfields["EsendexFailurePage"] = "url1";
$postfields["EsendexSuccessPage"] = "url2";
$postfields["EsendexOriginator"] = $_POST['EsendexOriginator'];
$postfields["EsendexRecipient"] = $_POST['EsendexRecipient'];
$postfields["EsendexRecipient"] = $_POST['EsendexRecipient'];
 
$url = "https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx";
$useragent = "Mozilla/5.0";
$referer = $url; 
 
//Initialise une session CURL
$ch = curl_init($url);
//CURL options
curl_setopt($ch, CURLOPT_POST, 1);
//On poste les données du tableau $postfields
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
//On définit un useragent ici Mozilla/5.0
//souvent les bots se font passés pour googlebot ce qui finalement est stupide
//On passe donc un useragent banal
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($ch, CURLOPT_REFERER, $referer);
//on récupère le contenu de la page de résultat de la soumission dans une chaine
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// en cas de redirection (facultatif ici)
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//Page de résultats et fermeture de session
$result = curl_exec($ch);
curl_close($ch);
 
//on peut faire un echo du résultat obtenu
echo $result;
?>
 
<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
 
			<P><b>Nom</b><br/>
				<INPUT name="EsendexOriginator" id="EsendexOriginator" type="text"><br/>
			<P><b>Numero</b><br/>
				<INPUT name="EsendexRecipient" id="EsendexRecipient" type="text"><br/></P>
 
		        <P><b>Texte</b><br/>
				<TEXTAREA name="EsendexBody" id="EsendexBody" rows="6" cols="60" maxlength="320"></TEXTAREA><br/>
 
			<input type="submit" value="Envoyer" onclick="this.form.submit();this.disabled=true;this.value='Envoyer'">
</form>
J'ai testé cela avec mes propres variables mais le probleme c'est que ce script en a rien à faire de mon formulaire, il envoi deja les requêtes deja pres rempli du style $postfields["EsendexUsername"] = "nom"; alors que je veux qu'il attende que le bouton "envoyer" soit cliqué pour envoyer !

Merci de votre aide
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 14h49   #2
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
C'est normal, il faut que ton bout de code dans lequel tu génères ta requête et envoie celle-ci ne soit éxécuté que si les données dont tu attends qu'elles soient postées le soient vraiment.

Remplace la partie php par :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
if ((filter_input(INPUT_POST, $_POST['EsendexOriginator'])) && (filter_input(INPUT_POST, $_POST['EsendexRecipient'])))
{
   $postfields = array();
   $postfields["action"] = "submit";
   $postfields["Username"] = "nom";
   $postfields["Password"] = "nom1";
   $postfields["Account"] = "nom2";
   $postfields["FailurePage"] = "url1";
   $postfields["SuccessPage"] = "url2";
   $postfields["Originator"] = $_POST['EsendexOriginator'];
   $postfields["Recipient"] = $_POST['EsendexRecipient'];
 
   $url = "https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx";
   $useragent = "Mozilla/5.0";
   $referer = $url; 
 
   //Initialise une session CURL
   $ch = curl_init($url);
   //CURL options
   curl_setopt($ch, CURLOPT_POST, 1);
   //On poste les données du tableau $postfields
   curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
   //On définit un useragent ici Mozilla/5.0
   //souvent les bots se font passés pour googlebot ce qui finalement est stupide
   //On passe donc un useragent banal
   curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
   //On passe un referrer ici on passe la même page $url
   curl_setopt($ch, CURLOPT_REFERER, $referer);
   //on récupère le contenu de la page de résultat de la soumission dans une chaine
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   // en cas de redirection (facultatif ici)
   //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   //Page de résultats et fermeture de session
   $result = curl_exec($ch);
   curl_close($ch);
}
J'ai aussi enlevé le prefixe Essendex dans tes variables postées car d'après Essendex elles ne devraient pas l'avoir.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 16h58   #3
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
A ok, merci pour la précision

Par-contre je viens de mettre le code et sa me dit sa :

Fatal error: Call to undefined function: filter_input() in /homez.356/frenchal/www/sms/sms.php on line 110

:/
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h02   #4
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Ah mince, t'es en quelle version de php?
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h08   #5
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
4.4.9
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h14   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
chez quel hébergeur ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h19   #7
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
OVH
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h27   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Epliknot Voir le message
OVH
ils ont PHP 5.3
http://guide.ovh.com/Php5ChezOvh
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h39   #9
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
J'ai modifier mon htaccess pour passer en 5.3 mais l'envoi ne marche pas !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
if ((filter_input(INPUT_POST, $_POST['EsendexOriginator'])) && (filter_input(INPUT_POST, $_POST['EsendexRecipient'])) && (filter_input(INPUT_POST, $_POST['EsendexBody'])))
{
   $postfields = array();
   $postfields["action"] = "submit";
   $postfields["Username"] = "user";
   $postfields["Password"] = "pass";
   $postfields["Account"] = "account";
   $postfields["FailurePage"] = "http://.../wrong.php";
   $postfields["SuccessPage"] = "http://.../ok.php";
   $postfields["Originator"] = $_POST['EsendexOriginator'];
   $postfields["Recipient"] = $_POST['EsendexRecipient'];
   $postfields["Body"] = $_POST['EsendexBody'];
 
   $url = "https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx";
   $useragent = "Mozilla/5.0";
   $referer = $url; 
 
   //Initialise une session CURL
   $ch = curl_init($url);
   //CURL options
   curl_setopt($ch, CURLOPT_POST, 1);
   //On poste les données du tableau $postfields
   curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
   //On définit un useragent ici Mozilla/5.0
   //souvent les bots se font passés pour googlebot ce qui finalement est stupide
   //On passe donc un useragent banal
   curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
   //On passe un referrer ici on passe la même page $url
   curl_setopt($ch, CURLOPT_REFERER, $referer);
   //on récupère le contenu de la page de résultat de la soumission dans une chaine
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   // en cas de redirection (facultatif ici)
   //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   //Page de résultats et fermeture de session
   $result = curl_exec($ch);
   curl_close($ch);
}
?>
<center>
<h4><strong>ENVOI DE SMS</strong></h4>
<br/>
<form method="post" action="https://www.esendex.com/secure/messenger/formpost/SendSMS.aspx">
			<P><b>Num&eacute;ro ou nom de l'&eacute;metteur du sms:</b><br/>
				<INPUT name="EsendexOriginator" id="EsendexOriginator" type="text"><br/>
 
			<P><b>Numero du destinataire:</b><br/>(Vous pouvez ajouter plusieurs destinataires, exemple : 0694757364, 0684635264, ...)<br/>
				<INPUT name="EsendexRecipient" id="EsendexRecipient" type="text"><br/></P>
 
			<P><b>Votre message:</b><br/><FONT COLOR="#FE0101"><b>ATTENTION :</b> Certains characteres ne sont pas support&eacute;s !</font><br/>
				<TEXTAREA name="EsendexBody" id="EsendexBody" rows="6" cols="60" maxlength="320"></TEXTAREA><br/>
 
			<input type="submit" value="Envoyer" onclick="this.form.submit();this.disabled=true;this.value='Envoyer'">
</form>
</center>
Réponse de esendex :

You can link to this page to send an SMS message using the HTML Form Post protocol. The table below shows the fields you can include in your form. The fields marked with an asterisk (*) are mandatory.
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h56   #10
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
T'as pas moyen via ton compte esendex de voir passer les requêtes?
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 18h05   #11
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
non aucunement... :s
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 18h56   #12
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
Je ne suis pas sur que ce que je vais dire est juste, mais je pense, en examinant le formulaire que la requête php n'arrive pas... car normalement en ayant uniquement les identifiants et un numéro même avec un texte vide sa valide...
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 18h27   #13
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
C'est bon probleme résolu

Apres m’être creusé la tête pendant 3h, j'ai finit par trouver une solution (toute conne en plus)
Code :
1
2
3
4
5
6
7
8
9
 
<?php
if (isset($_POST['Envoyer']))
{
* Script curl *
}
?>
 
<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
Merci pour ton aide
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h38.


 
 
 
 
Partenaires

Hébergement Web