Script d'envoi de sms depuis sfr

Soyez le premier à donner votre avis sur cette source.

Vue 12 755 fois - Téléchargée 833 fois

Description

Ce petit script vous permet d'envoyer des SMS depuis votre compte SFR (Vous avez besoin d'un identifiant et d'un mot de passe). Il se connecte pour vous sur le site de SFR par la librairie de CURL, fait l'authentification et l'envoi du texto.

Ca m'embêtait d'avoir à chaque fois à taper mes identifiants pour envoyer des textos depuis mon PC, alors voici un petit script qui s'occupe de tout ce qui est connexion, formulaire, validation.

Le script a BESOIN d'un fichier cookie et surtout d'un fichier vide. Ça peut paraître étrange mais c'est requis lors de l'envoi de la requête vers SFR.

Source / Exemple :


<?php
/**

  • Script d'envoi de textos depuis un compte SFR
  • Envoi possible si le message ne dépasse pas 3 * 160 caractères (3 textos)
  • @author Tristan F. <darkm60@gmail.com> http://esya-creations.com
  • @version 1.0
  • @todo Envoi de MMS/Tester les destinataires multiples/Tester vers l'étranger/Préciser les erreurs
  • /
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','06123456789'); //Login de votre compte SFR (Votre numéro) Define('PASSWORD','1234'); //Password de votre compte SFR $cible = "0611223344"; $message = "Message à envoyer"; if(send_sms($cible,$message)) echo("Texto envoyé !"); 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=&currentPage=&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&nbsp;!") === false) return 0; else return 1; return 1; } ?>

Conclusion :


Des améliorations seront à venir :
  • Gestion de l'envoi des MMS
  • Destinataires multiples (Je n'ai pas encore testé)
  • Textos vers l'étranger ?
  • Préciser les erreurs
  • Petit fichier HTML à côté avec un formulaire basique.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

sitajony
Messages postés
103
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
9 juin 2010
-
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...
sitajony
Messages postés
103
Date d'inscription
jeudi 6 novembre 2008
Statut
Membre
Dernière intervention
9 juin 2010
-
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
-
Ah non c'est bon c'est que j'ai pas la libraire curl...
DarkM60
Messages postés
37
Date d'inscription
dimanche 15 mai 2005
Statut
Membre
Dernière intervention
21 septembre 2009
-
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
-
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?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.