Envoyer un sms en PHP, Java, Javascript ou depuis une url !

Salut à tous !! Je bricole en ce moment !! Et hier aprem j’étais sur un petit programme PHP/JAVA permettant de transformer son téléphone portable en webservice pour envoyer des SMS.

En effet il peux être pratique de pouvoir envoyer des sms depuis un script ou un programme, les applications sont multiples :

  • Pour avertir du down d’un serveur
  • Pour envoyer un code de confirmation a un internaute
  • Pour envoyer automatiquement un sms de joyeux anniversaire à un amis…
  • etc…etc…

Voila voila, avec mon petit programme vous pouvez donc envoyer des sms en tapant une url de ce type :

http://sms.idleman.fr/add/motDePasse/0687531254/Joyeuse fêtes mon poto !!

Explication de l’url :

sms.idleman.fr : Adresse vers votre script d’envois de sms

add: On indique qu’on souhaite ajouter un sms a la liste d’attente

motDePasse: On envois un mot de passe précédemment définis dans le script pour éviter que n’importe qui envois des sms avec votre portable 🙂

0687531254: On précise le numéro de portable du destinataire

Joyeuse fêtes mon poto !! : On précise le message à envoyer.

Bon à ce stade je pense que vous avez compris le principe, passons a la pratique !!

Avant tous les prérequis :

Prérequis :

  • Avoir un téléphone Android avec un forfait sms/internet illimité
  • Avoir un hébergement/serveur avec du PHP et une base Mysql et l’url rewriting activé.
  • Avoir deux sous de jugeote et savoir lire.

INSTALLATION

  • 1) Dans votre base de donnée mysql, créez la base a partir du fichier pws.sql disponible
  • 2) Configurez les accès a la base de données de la page index.php
  • 3) Envoyez le répertoire pws contenant au moins index.php et .htaccess (assurez vous que votre serveur a l’url
    rewriting activé).
  • 4) Le service partie serveur est installé !! Passons à la partie téléphone !
  • 5) Installez le fichiez PWS1.0.apk sur votre téléphone androïde
  • 6) Lancez l’application PWS sur votre téléphone et configurez les paramètres suivants:
    • ** hôte : Adresse url vers votre script php psw (ex: http://www.idleman.fr/pws)
      /!\ IMPORTANT : ne mettez pas de “/” à la fin de l’url !
    • ** Mot de passe : Il s’agit du mot de passe du webservice, il dois impérativement correspondre au mot
      de passe ‘USER_UID’ de la page index.php.
    • ** Rafraîchissement : Fréquence de la synchronisation entre votre téléphone et votre serveur, plus le
      temps sera court, plus vos sms seront envoyés vite, mais cela consommera plus de batterie sur votre téléphone.
  • 7) Redémarrez votre téléphone, le script est installé !

UTILISATION

Pour envoyer un sms, ouvrez un navigateur et tapez l’adresse :

http://votre.serveur.fr/pws/add/votre.mot.de.passe.webservice/numero.destinataire/votre.message

exemple : http://www.idleman.fr/pws/add/UV$–z56e/0687865123/Halu mec !

Votre message sera envoyé dans un certain laps de temps en fonction de votre fréquence de rafraîchissement définis.

Vous pouvez donc appeler ce web-service en PHP (via curl) en JavaScript (via Ajax) en JAVA (via les httprequest) etc… et envoyer gratuitement et en illimité des sms depuis n’importe quel script ou langage (oai le principe du webservice quoi 🙂 )

TÉLÉCHARGEMENT

Application androïde et script php ici : pws.zip

CRÉDITS

Script PHP, Application Androïde et concept par votre serviteur Idleman : http://blog.idleman.fr

 

54 réactions au sujet de « Envoyer un sms en PHP, Java, Javascript ou depuis une url ! »

  1. Clem4541 Réponse

    Superbe idée, moi je dis bravo
    Moyen le mot de passe dans l url mais l idée est géniale. Je vais garder ça dans le coin de ma tête. ( vu que j ai de la place ça devrait pas poser de problème)

    • Idleman Auteur ArticleRéponse

      Haa ben ça fait plaisir de te revoir parmi nous mon ptit clem !!

      Oui effectivement le mot de passe c’est gênant, surtout dans le cas d’une attaque type man in the middle, a la base j’avais mis un htacess (facilement utilisable avec php curl par exemple) mais ce système bloquais les appels via javascript/html/direct url etc… or j’aimerais conserver cet accessibilité, donc si tu a une suggestion pour régler le problème, je sous tout ouïe 🙂

  2. Tozman Réponse

    Pourquoi ne pas envoyer un paramètre de vérification qui serait un hash salé du numéro de téléphone (ou déjà du mot de passe), ça limiterait déjà les possibilités d’interception de l’url…

    Coté téléphone, il faudrait vérifier que le hash alors stocké dans la base de données corresponde au hash du numéro de tel… un truc comme ça quoi 😉

  3. Idleman Auteur ArticleRéponse

    Pour le numéro de téléphone, ça serait craignos… ça voudrait dire que la personne qui connais ton numéro et le hash du script (qui est en téléchargement libre) pourrais générer le mot de passe en 5 sec.

    Après il est clair qu’on pourrais crypter le mot de passe actuel dans l’url 🙂

  4. Fab31400 Réponse

    Bonjour à tous,
    Merci pour cet article très interessant…
    Cher idleman, te serait-il possible de faire de faire une version 1.1 de ton appli Android PWS afin de pouvoir acheminer des SMS faisant plus de 140 octets ?
    Ou sinon, peux-tu nous mettre à disposition le code source de ton appli ?
    En effet, j’ai constaté qu’un message dépassant la limite de 160 caractères encodés en 7bits n’est pas envoyé.
    Sinon, pour les autres, je vous conseille d’utiliser l’encodage utf-8 plutôt que le latin.

    Merci,
    F.

    • Idleman Auteur ArticleRéponse

      Salut !! 🙂 Je n’ai plus le temps de faire évoluer ce genre d’appli, en revanche je dois pouvoir te retrouver les sources :), je les publies sur mon gestionnaire de projet DiZplay dès que c’est le cas 🙂

      • zoporang Réponse

        slt idleman. jaime bcp ton invention. laisse moi ton num sur mon email.stp. merci

  5. Fab31400 Réponse

    Super Idleman, tu me dis quand le projet sera sur le repo DiZplay ?
    Merci beaucoup.
    F.

  6. jacques yildiz Réponse

    Super! mais y a un hic je pense non ?
    Ma page web me met :
    Fatal error: Call to undefined function: json_encode() in /mnt/105/sda/2/5/jacquesyildiz/pws/index.php on line 97

    Or on ne touche pas a l’index.php (le body) pourtant j’ai configurer le DDB, PASS, HOTE, …

    Merci pour ce super script

    • Idleman Auteur ArticleRéponse

      C’et que ta version de PHP doit être trop vielle, la fonction json_encode est disponible en natif sur PHP depuis la version 5.2.0, essaye de mettre a jour ta version de PHP ça devrais mieux aller. 🙂

        • Idleman Auteur ArticleRéponse

          Tu peux verifier la version du php utilisée sur ton site en executant un fichier php qui contient :

          Pour que php5 soit utilisé par défaut sur les pages perso de free.fr, il faut placer à la racine du site un fichier “.htaccess” qui contienne :

          php 5

          En revanche j’ignore si c’est la 5.2 et supérieure…

  7. Stéphane Réponse

    Un grand bravo pour cette application. Je dois dire que pour c’est c’est un peu magique d’envoyer un SMS par PHP et qui soient traité par mon smarphone puis distribué!

    Pour ajouter un couche de sécurité, j’encode mon mot de passe en base64.
    Voici la ligne que j’ai ajouter à la ligne 54:

    if(isset($_['uid']) && base64_decode($_['uid']) ==USER_UID){

    Encore une autre modification

    J’ai changé le champs date de la BD pour employer les perfs du server SQL:

    --
    -- Structure de la table `pws_sms`
    --
    CREATE TABLE IF NOT EXISTS `pws_sms` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `phone` varchar(30) NOT NULL,
      `message` text NOT NULL,
      `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `state` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

    Et la requête INSERT:

    if(!mysql_query('INSERT INTO pws_sms (`phone`,`message`,`date`,`state`)VALUES("'.$_['phone'].'","'.$_['message'].'", NOW() ,"0")')){
    
    • Idleman Auteur ArticleRéponse

      Non, désolé j’ai déjà cherché et suis arrivé a la conclusion que je les avait perdues (shame on me) cela dis les apk sont décompilables a l’aide de quelques programmes il y a des tutos sur le net pour ça, normalement c’est pas très “légale” mais j’autorise officiellement la décompilation de mon apk étant donné que je ne parviens plus a mettre la main sur ces fichues sources.

  8. logorn Réponse

    merci .. continue sur la section raspberry et domotique … je suis tres interressé par le sujet.

  9. logorn Réponse

    Salut,

    J’ai testé ta solution sur un server nginx.

    très bien tout ça.

    a++

  10. Ping Nono’s Vrac 24 « m0le'o'blog

  11. jean-louis Réponse

    bonjour,

    j’ai essayé, de mon coté ca fonctionne bien mais pas plus de 10-12 heures, après les sms ne sont plus envoyés, si j’arrete et redemarre le service coté android ca re fonctionne …
    testé avec un galaxy note2

    j’aime bien le coté envoi a la base mysql puis recuperation sur le mobile… comme j’ai besoin d’envoyer des messages d’alerte sms , y a t il quelqu’un qui a une idée ? qq un a t il déjà rencontré le meme souci ??

    merci,
    jl

  12. Debutant Réponse

    Slt en premier lieu merci pour ce travail :C’est un truc que je veux faire depuis plusieurs mois …
    Il doit me manquer quelques connaissances :
    Je suis en local , j’utilise xampp-control
    dans htdocs j’ai mis :
    -Fichier .htaccess
    -Index.php
    ——————————————————————
    Le fichier index.php a été modifié :
    define(‘DB_HOST’,’localhost’); //nom du host
    define(‘DB_LOGIN’,’root’); //Login d’acces au mysql
    define(‘DB_MDP’,”); //mdp d’acces au mysql
    define(‘DB_BDD’,’pws’); //nom de la base de donnée
    define(‘USER_UID’,’1234′); //Mot de passe du web service
    ———————————————————————————–
    Dans la base de donnée :
    Import du fichier,pws.sql dans mysql
    -nom de la base de donnée : pws
    -Pas de mot de passe
    -identifiant :Root
    //————————————————–
    serveur téléphone
    -identifiant :www.idleman.fr/pws
    -mdp :1234
    -1(rafraîchissement …)
    —–
    //Après execution

    Not Found

    The requested URL /pws/add/4516/0641687087/Hello mec, bon anniv!! was not found on this server.’

    Pourrai je avoir une aide ?

    • Idleman Auteur ArticleRéponse

      Tout m’a l’air bon sauf ça

      //————————————————–
      serveur téléphone
      -identifiant :www.idleman.fr/pws

      pourquoi met tu l’adresse de mon site web comme identifiant ? oO

  13. Guillaume Réponse

    Bonjour je trouve ça top!

    Cependant j’ai une question, j’ai un site internet marchand, je souhaite informer mes clients de l’expedition de leur commande par sms, et j’ai acheté un modeme GSM wavecom (avec 16 cartes Sim).
    L’appareil est relié via USB et je me demande comment interfacer cette box en utilisant le script PHP…
    Je sais que la question n’a rien à voir avec le sujet… mais je tente ma chance 😉
    Bonne soirée!
    Guillaume

  14. Francois Réponse

    Bonjour à tous,

    Je trouve cette application super !! Cependant, est-il possible de modifier l’expediteur du SMS afin de ne pas divulguer le numéro de téléphone ??

    • Idleman Auteur ArticleRéponse

      Non, le sms est envoyé depuis le téléphone, pas moyen de spoofer et c’est pas plus mal 🙂

  15. Is Réponse

    Bonjour,

    Je ne sais pas si cette application marche toujours ou pas. Je viens d’en tester, et ça n’a pas l’air de marcher. Je suis connecté dans un réseau local, et j’ai fais en sorte que l’application se connecte à mon serveur à mon serveur appache (sur lequel le rewriting est activé).

    Merci de me tenir au courant.

    • Idleman Auteur ArticleRéponse

      Normalement oui ça fonctionne toujours, le problème viens peut être de ton réseau…as tu regardé les logs d’apache quand tu tente de te connecter via le téléphone?

      • Francois Réponse

        Je confirme, l’application fonctionne correctement chez moi, une pure merveille !! 😉 <3

  16. Francois Réponse

    Bonjour à tous,

    A tout hasard, je recherche comment envoyer des MMS mais aussi j’aimerai que lorsque je reçois un SMS sur ce portable, celui-ci soit transférer soit par mail soit par sur un autre numéro de téléphone, est ce que l’un d’entre vous aurez cette connaissance ?

    En vous remerciant par avance !

    • Idleman Auteur ArticleRéponse

      Il te faut une application adaptées, as tu essayé aairdroid ? Ou, si tu souhaite ne pas intervenir, il y a une application qui est spécialisées dans les actions réactions sur android qui pourrais te convenir mais je ne me rappelle plus du nom dsl.

      • Francois Réponse

        Salut Idleman,
        Comment vas tu ? Je te suis beaucoup et je tenez à te féliciter pour toutes tes interventions !

        Entre nous, j’ai utilisé MAILSMS pour récuperer les sms par mail.

        Je cherche toujours le moyen de modifier le destinataire à l’envoi du SMS si quelqu’un passe par ici ..

        Merci à tous & bon week-end ! 😀

  17. Karl Réponse

    Bonjour,

    Bravo pour votre site, très instructif. Juste une petite question: j’avais un petit projet de SMS : ayant trouvé votre application, j’ai essayé de l’implémenter en SQLAnywhere-webServer (SAP-Sybase) et de le re-écrire en SQL, mais ne connaissant pas PHP, je voulais savoir s’il était possible de connaitre le format d’entrée de votre module “PWS1.0.apk” par un exemple, comme :

    {“succes”:”true”, “count”:”1″, “messages”:{“id”:”1″, “phone”:”0678912345″, “message”:”mon Message”, “date”:”2014-10-01 08:30:00″, “state”:”0″}}

    (ceci est un exemple conforme à la requête que je renvoie à la demande de PWS1.0.apk, mais qui n’exécute rien.)

    Si quelqu’un peut m’aider, un grand merci

  18. MrThomas Réponse

    moi sa marche pas :
    ——————————————PHP——————————————
    define(‘DB_HOST’,’localhost/phpmyadmin/’); //nom du host
    define(‘DB_LOGIN’,’root’);//Login d’acces au mysql
    define(‘DB_MDP’,”);//mdp d’acces au mysql
    define(‘DB_BDD’,’pws’);//nom de la base de donnée
    define(‘USER_UID’,’123abc’);//Mot de passe du web service
    —————————————ANDROID————————————–
    Hôte: http://192.168.1.13/pws/
    Mot de passe 123abc
    tdr(secondes)
    1
    sauver: votre fichier est crrectement configuré
    ————————————–AU PC——————————-
    http://192.168.1.13/pws/add/123abs/monnumer/test
    ————————————SMS———————————–
    Rien
    sa fonctionne aussi en wifi ??? Xo

  19. Karl Réponse

    Bonjour,
    J’ai tenté de transcrire votre module serveur sur un serveur Sybase (SQLAnywhere) en SQL mode webserver. Je reçois correctement les demandes GET, et aussitôt que j’envoie la réponse dans le format :
    {“succes”:true,”count”:”1″,”messages”:[{“id”:”2″,”phone”:”0612345678″,”message”:”Envoi de SMS”,”date”:”2014-11-25T09:38:01.296Z”,”state”:”0″}]}
    mon téléphone indique que
    – L’application “PWS1.0” s’est arrêtée
    (Sans avoir émit le SMS), et plus rien ne se passe.
    Y aurait-il une erreur dans le format que j’envoie, sachant que j’indique bien en header ‘content-type=application/json’ ?

    avec un grand merci pour toute aide !

  20. Mohamed Réponse

    Merci pour votre application, mais il ne marche pas chez moi, mon telephone android et mon site en hebergement local sont tous connecte a un reseau wifi, j’ai integre le script a mon site tout en changeant les parametres, mais nada: aidez moi svp. MERCI

  21. Saber Réponse

    Merci bien pour l’appli ! j’aimerai savoir si c’est possible de faire l’inverse avec cette application, c’est à dire traiter les SMS entrant sur le téléphone et les renvoyer par la suite sur le serveur.. ça sera très utile en cas de réaction d’un système suite à une demande client. merci d’avance.

  22. krief Réponse

    Bonjour

    super projet
    mais après avoir fais le tour de la question il me renvoi une page d’erreur
    les paramètres sont bons mais il ne retrouve pas la page

    si vous avez un peu de temps pour de l’aide ce serait bien volontier !!

    cordialement

  23. Bazook Réponse

    Merci pour ce tuto au top !!
    Je viens d’essayer cela sur mon Rasperry Pi configuré en Home Serveur, et tout marche nickel avec mon téléphone Androïd, c’est de la bombe 😉

    Encore un grand merci à toi Idleman

  24. MM Réponse

    Bonjour,

    L’application fonctionne trés bien, sauf que le destinataire reçoit le même sms plusieurs fois, au fait non stop

    Avez vous rencontrez ce genre de problème et y’a t’il un moyen d’y remédier ?

  25. olivier Réponse

    Bonjour et merci pour cette application forte utile.

    Le souci que j’ai c’est que cette application .apk ne fonctionne pas sur tous les terminaux et je me pose la question de savoir pourquoi.

    Ex sur les galaxie samsung, je n’ai aucun PB notamment le S3 mais sur le RISE 30 de chez orange, l’application ne semble pas vouloir se lancer toutes les xxxx secondes pour lire la BDD et envoyer les sms ayant un etat 0.
    Je sais que c’est un peu hors sujet, mais qu’est ce qui pourrait y a avoir d’incompatible entre certaines terminaux comme le RISE 30 et cette application, sachant qu’ils tournent tous les deux sous KITKAT de chez Android ? Cette Application fait elle appelle avec une class ou un protocole qui nécessiterait une manip selon les terminaux ?

    Merci pour votre retour.

    Excellente journée a tous.

    • Idleman Auteur ArticleRéponse

      Bonne question, cette application date un peu je n’ai plus le code en tête mais de souvenir elle n’utilise pas grand chose a part un timer, le système de sms de l’os et une classe de gestion du server http, c’est peut être elle qui pose problème, à part ça je ne vois pas désolé.

    • webchl Réponse

      bonjour,
      j’ai le meme probleme et dans le coup je cherche une appli permettant de redemarrer regulierement ce service ou processus pws
      une idée?

      merci

  26. Ramos Réponse

    Salut, désolé de déterrer ce sujet mais je comptais toujours utiliser ce bijoux.
    Malheureusement, sous la dernière version d’Android (Samsung Galaxy S6), je ne peux pas envoyer de message depuis ton application.
    Du coup, ça fonctionne, le “state” se change bien de 0 à 1, cependant aucun message ne s’envoie, malheureusement.

    Si tu aurais une solution ! Ça serais niquel 🙂
    Merci à toi 😀

  27. Lokomass Réponse

    Salut,
    Génial ton programme, juste une petit question.
    Comment fait-on pour les accents ? A chaque message j’ai é à la place de mon “é” par exemple.
    Avec un logiciel j’ai bien réussi à décompiler ton programme mais je ne sais pas du tout quoi modifier et encore moins comment recompiler pour que ça fonctionne, peux-tu me filer un petit coup de main rapide ?
    Merci encore

  28. Olivier Réponse

    Bonsoir, j’ai le même problème que RAMOS, le state change bien mais l’application n’envoie pas le message.
    Dans un autre exemple j’ai rajouté des champs dans la table (idA et idB), modifié le fichier .htaccess et le fichier index.php pour que le message s’enregistre bien en appelant l’url suivante :
    http://www.nomdedeomaine.fr/sms/add/motdepasse/numerodetel/idA/idB/textetextextext
    La table enregistre bien le message ajouté, par contre je n’arrive pas a renseigner l’application : http://www.nomdedeomaine.fr/sms/ pour qu’elle interroge la table et envoie les sms dont le state est 0?
    Merci pour toute votre aide.
    Bonne soirée

  29. Olivier K Réponse

    Re, je vous ai fais un DON pour un PACK DE BIÈRES, via paypal ..lol,
    J’ai vraiment besoin s’il vous plait d’aide sur pourquoi l’apply n’envoi plus de sms mais change bien le state de ‘0’ a ‘1’ ..
    mon email de Paypal :k….O……@H…….com
    Très bonne soirée.
    Olivier

    • Idleman Auteur ArticleRéponse

      Salut olivier,
      Merci pour la bière.
      Je n’ai rien changé sur cette application depuis que je l’ai développée il y a 6 ans, le problème semble venir de la partie androïde et plus précisément de ton téléphone qui refuse d’envoyer les SMS bien qu’il atteigne le webservice PHP (d’ou le changement d’état). Vérifie que ton téléphone autorise toujours l’application a envoyer des sms et que tu n’a pas fait récemment une mise à jour du téléphone qui aurait rendu l’application incompatible.

      Je ne peux pas faire grand chose de plus étant donné l’ancienneté de cette application, j’ai perdu la source il y a quelques années déja.

  30. Olivier Réponse

    De rien pour la bière c est la moindre des choses. Par contre je n ai pas eu de mise a jour de mon Android, je suis toujours sur kitkat et l application indique bien qu elle peut envoyer des SMS dans sa configuration des applications installees. Donc je suis au point mort. Je vais tenter de decompiler le fichier apk, et demander de l aide sur la class sms, mais je n aime pas ca, j ai le sentiment de hacker ton programme en faisant ca.
    En tout cas, tout mon projet depuis 2ans tournait autour de ton apply d envoi sms, donc je suis dans la m……
    Merci pour ta reponse, et merci pour ces années d utilisation.
    Bonne soiree
    Olivier

  31. Kristen Réponse

    Salut Idleman !
    Désolé de déterrer cette vieille histoire, mais apparemment PWS ne fonctionne pas avec les nouvelles versions d’Android… Le state passe bien de 0 à à 1 mais pas d’envoi… Alors ok, tu l’as mérité ton pseudo Idleman, mais quand même, vu que :
    1 – je n’ai rien trouvé d’équivalent sur le net
    2 – c’est quand même génial comme idée et qu’on est très nombreux à vouloir l’utiliser
    3 – tu n’avais qu’à bien ranger tes affaires,
    la Cour condamne le sieur Idleman à réécrire vite fait bien fait son APK
    Lorsque le dit sieur aura purgé sa peine, la purge continuera avec une caisse de chouchen (tu as déjà la bière si j’en crois un post précédent)
    et bonne saint Valentin,

    Kristen

Répondre à Karl Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.