Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt wysyłający smsy w T-Mobile, wysyłka na kilka numerów., Nie działa wysyłanie smsów do kilku osób naraz.
koko887
post 1.04.2013, 15:23:18
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2009

Ostrzeżenie: (0%)
-----


Witam, próbuję przerobić skrypt znaleziony w internecie (o TUTAJ), aby można było za jego pomocą wysłać smsa do np. 10 osób naraz. Skrypt korzysta z bramki sieci T-Mobile, która udostępnia do niej dostęp skryptowy (szczegóły TUTAJ).

Tak wygląda skrypt:
  1. <?php
  2. # napisał Michał Oracz [michal@oracz.net], 8.02.2006
  3. # Jeśli skorzystasz ze skryptu to w ramach rewanżu możesz
  4. # umieścić link do mojej strony: www.oracz.net
  5. # wyjściami są $error, $limit oraz $cost
  6.  
  7. # $error=
  8. # 0 - wysyłka bez błędu
  9. # 1 - awaria systemu
  10. # 2 - użytkownik nieautoryzowany
  11. # 3 - dostęp zablokowany
  12. # 5 - błąd składni
  13. # 7 - wyczerpany limit
  14. # 8 - błędny adres odbiorcy
  15. # 9 - wiadomość zbyt długa
  16. # 10 - brak wymaganej liczby żetonów
  17.  
  18. # -------------------------------------------------------------------------------------------------
  19.  
  20. # dane dostępowe
  21. $login="48123123123"; # ! login do omnixa - numer Twojego telefonu
  22. $password="haselko"; # ! hasło do konta na omnixie
  23.  
  24.  
  25. # ustawienie wysyłki
  26. $message="Jakas tresc"; # ! treść wiadomości
  27. $to="48668426399"; # ! numer telefonu, na który będzie wysłana wiadomość, to wlasnie chcialbym jakos zmienic
  28.  
  29.  
  30. # dane stałe
  31. $host="www.t-mobile.pl"; # host - omnix
  32. $failure="www.t-mobile.pl"; # adres przekierowania po nieudanym wysłaniu (dowolny, bo i tak nie będzie przecież przekierownia)
  33. $success="www.t-mobile.pl"; # adres przekierowania po udanym wysłaniu (dowolny - jak wyżej)
  34. $gate="/msg/api/do/tinker/omnix"; # adres bramki płatnej
  35. $mms="false"; # ! jeśli true to wysyła jako MMSa, jeśli false jako SMSa
  36.  
  37.  
  38. # zamiana ogonków
  39. $ogonki=explode(" ","ą ę ć ń ó ł ś ż ź Ą Ę Ć Ń Ó Ł Ś Ż Ź");
  40. $bezogonki=explode(" ","a e c n o l s z z A E C N O L S Z Z");
  41. $message=str_replace($ogonki,$bezogonki,$message);
  42.  
  43.  
  44. # zmiana metody kodowania wiadomości
  45. $message=urlencode($message);
  46.  
  47.  
  48. # połączenie z hostem
  49. $fp = fsockopen($host, 80, $errno, $errstr, 5);
  50.  
  51. if (!$fp) {
  52.  
  53. echo "$errstr ($errno)";
  54.  
  55. } else {
  56.  
  57. # dogadywanie się z bramką za pomocą HTTP 1.1
  58.  
  59. $out = "GET $gate?message=$message&number=$to&password=$password&login=$login&failure=$failure&success=$success&mms=$mms HTTP/1.1\r\n";
  60.  
  61. $out .= "Host: $host\r\n";
  62.  
  63. $out .= "Connection: Close\r\n\r\n";
  64.  
  65.  
  66.  
  67. fwrite($fp, $out);
  68.  
  69.  
  70. # analiza odpowiedzi bramki
  71.  
  72. while (!feof($fp)) {
  73.  
  74. $response=fgets($fp, 128);
  75.  
  76.  
  77.  
  78. # wyszukanie w odpowiedzi linii przekierowania
  79.  
  80. if (substr($response, 0, 10) == "Location: ") {
  81.  
  82.  
  83.  
  84. # wycięcie adresu url
  85.  
  86. $pos1=10;
  87.  
  88. $pos2=strpos($response,"\r");
  89.  
  90. $url=substr($response,$pos1,$pos2-$pos1);
  91.  
  92.  
  93.  
  94. # zamiana parametrów podanych przez omnix na bardziej przyjazne
  95.  
  96. $url=str_replace("X-ERA-error","error",$url);
  97.  
  98. $url=str_replace("X-ERA-counter","limit",$url);
  99.  
  100. $url=str_replace("X-ERA-tokens","limit",$url);
  101.  
  102. $url=str_replace("X-ERA-cost","cost",$url);
  103.  
  104.  
  105.  
  106. # zamiana informacji przekazanych w adresie na zmienne
  107.  
  108. $parse_url=parse_url($url);
  109.  
  110. $query=$parse_url["query"];
  111.  
  112. parse_str($query);
  113.  
  114.  
  115.  
  116. echo "błąd: $error;";
  117. echo "pozostało: $limit;";
  118. echo "koszt: $cost";
  119.  
  120.  
  121.  
  122. break;
  123.  
  124. }
  125.  
  126. }
  127.  
  128.  
  129.  
  130. fclose($fp);
  131.  
  132. }
  133.  
  134. ?>


Skrypt działa prawidłowo, ale tylko kiedy wysyłamy smsa na jeden numer. I tu jest mój problem, chciałbym, aby skrypt wysyłał smsa na numery umieszczone w pliku tekstowym (np. numery.txt). Plik ten zbudowany jest w następujący sposób:
Kod
Imię1||Nazwisko1||numer_tel1
Imię2||Nazwisko2||numer_tel2
...
Imię10||Nazwisko10||numer_tel10


Domyślam się, że jest to możliwe do wykonania, ale ja siedzę nad tym już 2 dzień i nie wychodzi mi to sad.gif
Rozumiem, że aby wyciągnąć z pliku numery.txt listę numerów muszę użyć pętli foreach(). Napisałem takie coś:
Kod
foreach ($to as $linia){
$data = explode('||', $linia);
$numer_tel = $data[2];}


Dodatkowo w pierwotnym skrypcie zmieniłem linijkę ze zmienną $to w sposób następujący:
Kod
$to = file('http://www.mojastrona.pl/numery.txt');


I w tym miejscu utknąłem, numery są ładnie pobierane z pliku numery.txt, ale smsy nie są wysyłane. Czy wie ktoś co trzeba dodać do tego kodu, aby smsy poszły na wszystkie 10 numerów? Zamieszczam jeszcze fragment kodu, który zmieniłem w stosunku do oryginalnego skryptu:
Kod
# ustawienie wysyłki
$message="Jakas tresc";            # ! treść wiadomości
$to = file('http://www.mojastrona.pl/numery.txt');         # ! numer telefonu, na który będzie wysłana wiadomość, to wlasnie chcialbym jakos zmienic


...


# połączenie z hostem
$fp = fsockopen($host, 80, $errno, $errstr, 5);

if (!$fp) {

    echo "$errstr ($errno)";

} else {

# dogadywanie się z bramką za pomocą HTTP 1.1
    foreach ($to as $linia){
    $data = explode('||', $linia);
    $numer_tel = $data[2];
    
    $out = "GET $gate?message=$message&number=$numer_tel&password=$password&login=$login&failure=$failure&success=$success&mms=$mms HTTP/1.1\r\n";
    }
    
    $out .= "Host: $host\r\n";

    $out .= "Connection: Close\r\n\r\n";



Domyślam się, że powinna być zrobiona jakaś pętla, która wykona skrypt tyle razy, ile jest numerów w pliku numery.txt. Niestety ja tego nie potrafię ogarnąć. Jeśli ktoś mógłby na to spojrzeć i coś podpowiedzieć to byłbym naprawdę wdzięczny.

Pozdrawiam i życzę Wesołych Świąt smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 03:21