Tak wygląda skrypt:
<?php # napisał Michał Oracz [michal@oracz.net], 8.02.2006 # Jeśli skorzystasz ze skryptu to w ramach rewanżu możesz # umieścić link do mojej strony: www.oracz.net # wyjściami są $error, $limit oraz $cost # $error= # 0 - wysyłka bez błędu # 1 - awaria systemu # 2 - użytkownik nieautoryzowany # 3 - dostęp zablokowany # 5 - błąd składni # 7 - wyczerpany limit # 8 - błędny adres odbiorcy # 9 - wiadomość zbyt długa # 10 - brak wymaganej liczby żetonów # ------------------------------------------------------------------------------------------------- # dane dostępowe $login="48123123123"; # ! login do omnixa - numer Twojego telefonu $password="haselko"; # ! hasło do konta na omnixie # ustawienie wysyłki $message="Jakas tresc"; # ! treść wiadomości $to="48668426399"; # ! numer telefonu, na który będzie wysłana wiadomość, to wlasnie chcialbym jakos zmienic # dane stałe $host="www.t-mobile.pl"; # host - omnix $failure="www.t-mobile.pl"; # adres przekierowania po nieudanym wysłaniu (dowolny, bo i tak nie będzie przecież przekierownia) $success="www.t-mobile.pl"; # adres przekierowania po udanym wysłaniu (dowolny - jak wyżej) $gate="/msg/api/do/tinker/omnix"; # adres bramki płatnej $mms="false"; # ! jeśli true to wysyła jako MMSa, jeśli false jako SMSa # zamiana ogonków # zmiana metody kodowania wiadomości # połączenie z hostem if (!$fp) { } else { # dogadywanie się z bramką za pomocą HTTP 1.1 $out = "GET $gate?message=$message&number=$to&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"; # analiza odpowiedzi bramki # wyszukanie w odpowiedzi linii przekierowania # wycięcie adresu url $pos1=10; # zamiana parametrów podanych przez omnix na bardziej przyjazne # zamiana informacji przekazanych w adresie na zmienne $query=$parse_url["query"]; break; } } } ?>
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
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

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];}
$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";
$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
