SCRIPT D'ENVOI DE SMS DEPUIS SFR

sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010 - 20 sept. 2009 à 19:55
cs_debutante Messages postés 9 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 1 septembre 2009 - 15 févr. 2012 à 15:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50592-script-d-envoi-de-sms-depuis-sfr

cs_debutante Messages postés 9 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 1 septembre 2009
15 févr. 2012 à 15:44
Bonjour à tous,

Je suis contente de trouver cet exemple, car je vais essayer de m'en inspirer pour mon besoin perso, qui y ressemble un peu !

Je voudrais automatiser en php ces instructions :
- aller sur http://www.unsite.html/moncompte/index.php une première fois car à la première connexion de la journée, un pavé s'affiche demandant de cliquer pour accéder au site (il doit y avoir le dépôt d'un cookie, car d'un autre ordinateur avec la même IP ça recommence)
- aller sur http://www.unsite.html/moncompte/index.php une seconde fois pour y entrer mon identifiant et mon mot de passe
- recevoir et mémoriser la page renvoyée une fois connectée
- aller sur http://www.unsite.html/moncompte/logout.php pour me déconnecter de mon compte.
- traiter les informations mémorisées

J'ai essayé de le faire en javascript à partir d'un parent pour gérer une frame ou tout autre contenant, c'est impossible pour une faille de sécurité xxs ou xss (je ne sais plus).

Je reviendrai vous donner le fruits de mes adaptations.
Si vous avez des suggestions, elle seront bienvenues, évidemment ;-)
mafarette Messages postés 10 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010
27 janv. 2011 à 22:38
nous y travaillons c'est un prob de cookies
cs_Luxure Messages postés 1 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 27 décembre 2010
25 juin 2010 à 21:30
Bonjour,

Même problème, il semblerait qu'SFR ait changé de système de manière à bloquer ce genre d'utilisation afin que les gens souscrivent à leurs APIs ...
Il reste donc à trouver une alternative, ou un moyen de passer ce nouveau système :)
ajeans Messages postés 2 Date d'inscription vendredi 28 juillet 2006 Statut Membre Dernière intervention 15 mars 2007
18 mai 2010 à 16:14
Bonjour,
Merci beaucoup pour ce script.
J'ai réussit a le faire fonctionner au mois de février et depuis ce temps, je ne t'avais pu utilisé.

J'ai voulu ré-utilisé ce code, mais il ne fonctionne plu. Est ce que le problème est le même chez vous ?

Cordialement.
mafarette Messages postés 10 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010
31 janv. 2010 à 11:17
plus de probleme
<?php
/**
* Script d'envoi de textos depuis un compte SFR

*/

Define('AUTHENTIFICATION', 'http://www.sfr.fr/communiquer/messagerie/sfr-messagerie/authentification/');
Define('COOKIE_FILE','cookie.txt'); //Fichier COOKIE
Define('EMPTY_FILE',"emptyfile.txt"); //DOIT être un fichier vide
Define('USER_AGENT','Mozilla/5.0'); //User-agent
Define('LOGIN','000000000'); //Login de votre compte SFR (Votre numéro)
Define('PASSWORD','00000'); //Password de votre compte SFR

$tel = $_POST['$tel'];

$cible= $_POST['$cible'];
$ciblefin = $_POST['$ciblefin'];
$image = "image1.jpg";
$message = "Message a envoyer";


if(send_sms($cible,$message,$image)) echo("sms ok au : $cible");
else echo("Impossible de trouver le token ou message trop long. Message non transmis. Mauvais logins ?");

/**
* Fonction d'envoi de sms
*
* @param int $cible Numéro de téléphone du destinataire
* @param int $message Message pour le destinataire. Supporte les accents. Jusqu'à 480 caractères.
* @return int 1 si succès 0 en cas d'échec.
*/
function send_sms($cible,$message)
{
//Encodage d
$message = utf8_decode($message);

$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, AUTHENTIFICATION);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, USER_AGENT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

curl_close($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.sfr.fr/cas/login?service=https://www.sfr.fr/j_spring_cas_security_check");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,"target=&_eventId=¤tPage=&username=".LOGIN."&password=".PASSWORD);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$ret = curl_exec($ch);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/index.do");

$ret = curl_exec($ch);

if ($ret === FALSE) {
die(curl_errno($ch));
}

preg_match("!"CSRFToken" value="([0-9]*)!",$ret,$out);

if(!isset($out[1]))
{
return 0;
}

$token = $out[1];

$array = Array(
"CSRFToken" => $token,
"idMessage" => '',
"submitMethod" => 'web',
"todo" => '',
"boxId" => 'sent',
'galleryItem' => '-1',
'msisdns' => $cible,
'emails' => '',
'emoticones' => ':)',
'message' => $message,
'file' => '@'.realpath(EMPTY_FILE)
);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/submit.do");
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$ret = curl_exec($ch);

preg_match("!"CSRFToken" value="([0-9]*)!",$ret,$out);
$token = $out[1];

//Confirmation
$array = Array(
"CSRFToken" => $token,
"idMessage" => '',
"submitMethod" => 'web',
"todo" => '',
"boxId" => 'sent',
'emoticones' => ':)',
'mms' => 'false',
'message' => $message
);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/confirm.do");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$ret = curl_exec($ch);

curl_close($ch);

if(strpos($ret,"Le Texto a été expédié avec succès !") === false) return 0;
else return 1;

return 1;
}
?>

<html>
<head>
<title>Destination 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<meta http-equiv="refresh" content="3; URL=http://localhost:8888/MMS/serveur/mms1.php">

</html>
mafarette Messages postés 10 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010
18 déc. 2009 à 19:09
bonjour a tous un petit détail vous avez un compte illimité SFR oui
ok mette cette ligne

http://www.sfr.fr/communiquer/messagerie/sfr-mobile/authentification/

votre n de tel
et votre code

et mon pas sfr-messagerie ok le script fonctionne très bien en intern ou sur serveur extern

message reçu

Texto envoyé !

bon passons au chose sérieuse
je cherche un programmeur php

pour création prog avec base de donnée
mon tel : 0148857225

0617454091
campus-descartes.net
prince418 Messages postés 2 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 octobre 2009
14 oct. 2009 à 10:34
Hello,

un kit php est déjà fourni par sfr pour ce type d'action

http://devzone.ateliersfr.fr/drupal/content/le-dev-kit-php
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
7 oct. 2009 à 15:58
La configuration n'a pas a augmenter la difficulté (d'ailleurs on recherche qqch de configurable simplement mais pas a plonger dans la technique en réutilisation).
Le niveau de difficulté est au niveau métier ou architecture, dans le cas présent c'est un script qu'on déroule, un one shot. Je trouve vraiment rien de compliqué débutant (allez intermédiaire) aurait suffit.

Mais bon soit...
momouloud Messages postés 1 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 30 septembre 2009
30 sept. 2009 à 14:30
bonjour,
j'ai le même problème que sitajony, j'ai vérifié et mon serveur n'est pas en safe_mode (phpinfo() m'indique safe_mode off off )
est-ce que l'erreur peut provenir d'autre part, ou alors y a t il un paramètre de php.ini à modifier ?
le_brunard Messages postés 2 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 24 septembre 2009
24 sept. 2009 à 17:59
Bon, ça y est , j'ai testé avec mon Nabaztag ! Ça marche d'enfer ! Encore merci.
Par contre, si j'en ai l'autorisation, j'aimerais bien publier ton code sur les forums des propriétaires de Nabaztag.
DarkM60 Messages postés 37 Date d'inscription dimanche 15 mai 2005 Statut Membre Dernière intervention 21 septembre 2009
24 sept. 2009 à 14:43
@Teclis01 : C'est fait à la va vite et d'une traite, et fonctionnel, et pour l'instant je le laisse comme tel, mais dans mes projets je code toujours objet et me base sur des frameworks.

Cependant le niveau initié est totalement justifié, un débutant ne sait pas comment utiliser HTTPS, les certificats SSL, de plus CURL est très mal documenté à mes yeux sur les options comme VERIFY PEER etc., il faut donc savoir déjà bien manipuler CURL sur les protocoles HTTP et HTTPS.

@LE_BRUNARD: Je veux un nabaztag T_T
le_brunard Messages postés 2 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 24 septembre 2009
24 sept. 2009 à 09:39
Alors j'ai pas encore testé ! Par contre, pour ceux qui ont un nabaztag c'est trop bien ! Merci !
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
22 sept. 2009 à 12:45
Par contre le niveau initié pour ça me parait "un peu" osé... débutant plutot, le niveau sera a revoir selon la conception du bouzin!
Good Luck & Have Fun
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
22 sept. 2009 à 12:43
ça manque cruellement d'objet mais le script sera utile à quelques personnes.
Bonne initiative
cs_dadoo1 Messages postés 13 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 31 mars 2009
21 sept. 2009 à 16:50
Il a l'air génial ce code mais es-ce légal d'installer un tel script sur son site web ?
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010
20 sept. 2009 à 21:24
Ah oui ok merci je pensais bien mais bon... Et j'avais testé en local (avec Movamp) mais sa marchais pa j'ai surement désactivé un truc dans php.ini...
DarkM60 Messages postés 37 Date d'inscription dimanche 15 mai 2005 Statut Membre Dernière intervention 21 septembre 2009
20 sept. 2009 à 21:21
Sitajony > Ca signifie que ton serveur est en safe mode. En gros... Tu devrais faire ça en local :). Tu installes WAMP, Easyphp, LAMP.. Ce que tu veux, tu actives CURL et là ça ira tout seul. Le safe mode c'est un mode plein de restrictions pour les hébergements mutualisés.
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010
20 sept. 2009 à 20:07
Ah ok... Oui ou sinon je ferais un script contant le nombre de messages envoyé tout les 160 caractères...
Sinon j'ai trouvé un hebergeur avec la librairie CURL mais sa affiche sa:
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /var/www/hbg.fr/s/i/sitajony/sfr/index.php on line 43

Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /var/www/hbg.fr/s/i/sitajony/sfr/index.php on line 59
Impossible de trouver le token ou message trop long. Message non transmis. Mauvais logins ?
C'est quoi le probleme?
DarkM60 Messages postés 37 Date d'inscription dimanche 15 mai 2005 Statut Membre Dernière intervention 21 septembre 2009
20 sept. 2009 à 20:03
Hmm.. Mon script ne gère que l'envoi sachant que j'ai un forfait illimité personnellement c'est le dernier de mes soucis :3. Après tu peux toujours te connecter sur SFR de temps en temps voir où tu en es.
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010
20 sept. 2009 à 20:01
Ah non c'est bon c'est que j'ai pas la libraire curl...
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010
20 sept. 2009 à 19:59
Euh je suis peut être nul mais euh la fonction curl_init() n'est pas défini... C'est où le problemme?
sitajony Messages postés 103 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 9 juin 2010
20 sept. 2009 à 19:55
Ah ba sa sa ve me servir je vasi tester sa car j'envoie de message par SFR donc sa serait cool si sa marcherais super bien... Mais comment savoir combien d'sms ils nous reste de gratuit? (On peut envoyer 10SMS/Jour gratuitement vers SFR...
Rejoignez-nous