Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Script d'envoi de sms depuis sfr

0/5 (22 avis)

Vue 10 506 fois - Téléchargée 597 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

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.