Marusz Logo
Strona główna
Artykuły
Premiery seriali
Kontakt
Promowane artykuły:
Dreamhost i czas warszawski
WinBinder - wprowadzenie
Prosty packer CSS
Zend Studio i Ubuntu
WebMail Claros Software
Miasto Plusa - bramka napisana w PHP
Płatnik na Laptopie - opis instalacji
Płatnik - przeniesienie programu
Captcha w PHP - prosty przykład

Skrypt do wysyłki SMS poprzez bramkę Miasta Plusa (Plus GSM)

2010-03-07 09:07

Jakiś czas temu Plus GSM całkowicie zmienił sposób obsługi wiadomości tekstowych rozsyłanych przez formularze dostępne w Mieście Plusa. Mój skrypt, który popełniłem w roku 2007, się rozsypał, więc postanowiłem spłodzić nowy. Całość pisana jest na kolanie i wymaga pewnikiem szeregu poprawek, niemniej smsy dochodzą - czego chcieć więcej? ;)

I jeszcze jedno. Skrypt ten wymaga podstawowej wiedzy i znajomości języka PHP. Proszę Was, googlujących tu i ówdzie, nie piszcie do mnie pytań typu: "co mam z tym zrobić?", albo tekstów w stylu "skopiowałem twój skrypt na pulpit, jak go odpalić?". W innych kwestiach służę pomocą.


<?php

$conf 
= array (
    
"login" => "twój login",
    
"password" => "twoje hasło",
    
"number" => "",
    
"message" => "",
    
"useragent" => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
    
"cookiepath" => dirname(__FILE__) . "/cookies.txt",
    
"timeout" => 10,
    
"separate" => chr(239) . chr(191) . chr(191)
);

function 
sendSms()
{

    global 
$conf;

    
$post = array (
        
"login="$conf["login"],
        
"action=login",
        
"password="$conf["password"],
        
"success-url=http://www1.plus.pl/bsm/auth"
    
);

    
$c curl_init();
    
curl_setopt($cCURLOPT_URL"https://www1.plus.pl/sso/logowanie/auth");
    
curl_setopt($cCURLOPT_POSTtrue);
    
curl_setopt($cCURLOPT_POSTFIELDSimplode("&"$post));
    
curl_setopt($cCURLOPT_COOKIEFILE$conf["cookiepath"]);
    
curl_setopt($cCURLOPT_COOKIEJAR$conf["cookiepath"]);
    
curl_setopt($cCURLOPT_USERAGENT$conf["useragent"]);
    
curl_setopt($cCURLOPT_TIMEOUT$conf["timeout"]);
    
curl_setopt($cCURLOPT_FOLLOWLOCATIONtrue);
    
curl_setopt($cCURLOPT_RETURNTRANSFERtrue);
    
curl_exec($c);
    
curl_close($c);

    
$header = array (
        
'Accept-Language: pl',
        
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        
'Accept-Encoding: gzip,deflate',
        
'Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7',
        
'Keep-Alive: 300',
        
'Connection: keep-alive',
        
'Pragma: no-cache',
        
'Cache-Control: no-cache',
        
'Content-Type: text/plain; charset=utf-8'
    
);

    
$s $conf["separate"];

    
$sms =
        
"3".$s."0".$s."11".$s."http://www1.plus.pl/bsm/".$s."0C1263E2047195AA1A9BA7FDDF8A4B74".$s.
        
"pl.plus.map.bsm.gwt.client.service.SendSmsService".$s."send".$s.
        
"pl.plus.map.bsm.core.gwt.dto.MessageTO".$s.
        
"pl.plus.map.bsm.core.gwt.dto.MessageTO/2025876352".$s."638fe7871b8f5e6bcb4e3fc6a44a69ce".$s.
        
$conf["message"].$s.$conf["number"].$s.$conf["login"].$s.
        
$s."1".$s."2".$s."3".$s."4".$s."1".$s."5".$s."6".$s."0".$s."0".$s."7".$s."0".$s."0".$s."8".$s."0".
        
$s."0".$s."1".$s."2".$s."0".$s."0".$s."0".$s."0".$s."0".$s."0".$s."0".$s."0".$s."0".$s."0".$s."0".
        
$s."0".$s."0".$s."0".$s."0".$s."9".$s."0".$s."0".$s."0".$s."10".$s."0".$s."0".$s."11".$s."0".$s."0".
        
$s."0".$s
    
;

    
$c curl_init();
    
curl_setopt($cCURLOPT_URL"http://www1.plus.pl/bsm/service/SendSmsService");
    
curl_setopt($cCURLOPT_POSTtrue);
    
curl_setopt($cCURLOPT_POSTFIELDS$sms);
    
curl_setopt($cCURLOPT_HTTPHEADER$header);
    
curl_setopt($cCURLOPT_REFERER"http://www1.plus.pl/bsm/");
    
curl_setopt($cCURLOPT_COOKIEFILE$conf["cookiepath"]);
    
curl_setopt($cCURLOPT_COOKIEJAR$conf["cookiepath"]);
    
curl_setopt($cCURLOPT_USERAGENT$conf["useragent"]);
    
curl_setopt($cCURLOPT_TIMEOUT$conf["timeout"]);
    
curl_setopt($cCURLOPT_FOLLOWLOCATIONtrue);
    
curl_setopt($cCURLOPT_RETURNTRANSFERtrue);
    
$return curl_exec($c);
    
curl_close($c);

    if (
preg_match("/java\.util\.Date/"$return))
    {

        return 
true;

    }
    else
    {

        return 
false;

    }

}

/**
 * Przyklad uzycia skryptu
 */

$conf["number"] = "100000000";
$conf["message"] = "tresc wiadomosci";

if (
sendSMS())
{

    echo 
"wiadomosc wyslana poprawnie";

}
else
{

    echo 
"wystapil blad...";

}

?>



Enjoy!

Komentarze

limak @ 83.15.80.*

wysłany: 2010-03-19 00:46

Mam błąd w linikjach z:
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); //usunięcie tej linijki nie powinno niczym skutkować, bo tak samo miałem na bramce orange i działa bez tego :)
po usunięciu i tak funkcja zwraca "wystapil blad..."
Czy bramka przypadkiem nie działa tylko pod Twoim loginem?

limak @ 83.15.80.*

wysłany: 2010-03-19 00:51

znalazłem błąd:
curl_setopt($c, CURLOPT_URL, "https://www1.plus.pl/sso/logowanie/auth");
trzeba zamienić na:
curl_setopt($c, CURLOPT_URL, "http://www1.plus.pl/bsm/auth");
pozdrawiam i dzięki za skrypt :)

limak @ 83.15.80.*

wysłany: 2010-03-19 01:22

Jednak skrypt cały działa poprawnie, miałem coś źle ustawione. :)

limak @ 83.15.80.*

wysłany: 2010-03-19 01:23

Dodam jeszcze tylko, że skrypt działa nawet jak wpiszemy byle jaki login i hasło, więc logowanie można usunąć.

Marusz @ 78.8.60.*

wysłany: 2010-03-19 08:03

1. to nie jest możliwe, abyś mógł wysłać wiadomość bez logowania się. Jeśli wyrzuciłeś procedurę logowania, to jedyne co może wtedy działać, to standardowa bramka - z limitem smsów i innymi cudami.

2. Jak skrypt przestanie działać, z miejsca o tym poinformuję. Na tą chwilę używam tego dzień w dzień, więc powyższe wypociny MUSZĄ działać poprawnie. Jeśli nie będą działać, sprawdźcie Wasze ustawienia curla, firewalla, php, etc... a na końcu dopiero badajcie skrypt :D Oszczędzicie trochę czasu.

Grins @ 89.74.137.*

wysłany: 2010-04-20 00:48

Racja, nie jest wymagane logowanie do serwisu. Wiadomości są wysyłane z darmowej bramki. Wszystko działa jak natura chciała. Pięknie dziękuje ;)

plus @ 78.8.61.*

wysłany: 2010-05-14 21:17

Plus to śmierdząca skarpetka... z grzybem...

Cuban @ 87.199.17.*

wysłany: 2010-05-18 20:58

Wkleilem caly kod w dokument php i jedyne co widze po wejsciu na strone to

"wystapił bład..."

Marusz @ 78.8.235.*

wysłany: 2010-05-19 17:49

Powodów błędu może być kilka: zły login, złe hasło, zły numer wiadomości. Skrypt przed odpaleniem trzeba skonfigurować.

Używam DOKŁADNIE tej kopii cały czas (i dostaję non stop potwierdzenia, że nie tylko ja) i działa. Zawsze.


Wpisz swoje imię, pseudonim:

Wpisz treść: