![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 18.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z skryptem którego zaprezentowałem poniżej. Skrypt się bez problemu uruchamia, ale nie robi tego co ma zrobić - czyli nie wysyła smsa na podany numer. Co jest nie tak, czy może mi ktoś pomóc rozwiązać ten problem? Paweł
Bardzo proszę o pomoc, na prawdę zależy mi na tym skrypcie.. Czekam na jakąś podpowiedź Proszę o pomoc Ten post edytował pablo86 20.07.2009, 14:43:34 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 94 Pomógł: 16 Dołączył: 24.07.2009 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze najpierw by trzeba zamknąć curl a potem zrobić returna
![]() Spróbuj do tego dodać
Możę curl ci jakiś błąd zwraca |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 18.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
curl nie zwraca błędu przed poprawką i po poprawce, co może być przyczyną, trudny orzech do zgryzienia ;/
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 3 Dołączył: 7.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
A więc do czego doszedłem po chwili główkowania:
Twój skrypt loguje się do serwisu poprawnie, kiedy jednak próbuje wysłać smsa, po wywaleniu efektu otrzymałem "Przepraszamy. Podana strona nie istnieje", czyli 404 orange. Może to być niepoprawny adres, może być zabezpieczenie forwardujące do strony 404 kiedy coś mu się nie zgadza. Pierwsza moja sugestia: Ustaw referera w cURLu. Poza tym zawartość POST jaką wysyła cURL, oraz zawartość POST jaką wysyła prawdziwy MultiBox nieco się różni: To jest POST Twojego skryptu: Kod _dyncharset = UTF-8 /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_type = sms _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_type = enabled = false /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_errorURL = /portal/map/map/message_box?mbox_view=newsms _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_errorURL = /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_successURL = /portal/map/map/message_box?mbox_view=messageslist _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_successURL = smscounter = 1 counter = 3 /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_to = 666 _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_to = _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_body = /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_body = asd _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create = /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create = Wy�lij _DARGS = /gear/mapmessagebox/smsform.jsp /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create_x = 10 /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create_y = 10 A to jest POST MultiBoxa: Kod _dyncharset = UTF-8 /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_type = sms _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_type = /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_token = 2xV1WzOU7yoO4hU _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_token = /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_to = 666 _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_to = _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_body = /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_body = od mikz: /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create_x = 39 /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create_y = 10 _D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create = /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_create = true _DARGS = /gear/guiextensions/multibox_sms.jsp.multibox-SMSForm Przede wszystkim zwróć uwagę na pole /amg/ptk/map/messagebox/formhandlers/MessageFormHandler_token w którym znajduje się być może jakiś cholerny ciąg weryfikujący czy cokolwiek w tym stylu. Tyle na dzisiaj, nie mam już siły nad tym siedzieć bo całą noc gryzłem się nad różnymi phpowymi rzeczami. Jutro spróbuję podłubać w tym Twoim skrypcie bo chciałbym go wykorzystać a i mam nadzieję że Tobie w czymś pomogłem. Aaaa, byłbym zapomniał. Sprawę analizy formularzy zdecydowanie ułatwia wyłączenie javascripta. Multibox nieźle sobie radzi na pure html a formy nie są wtedy submitowane przez ajax. Przepraszam za posta pod postem, ale za długie było żeby to w jednym upchnąć. Oto działająca wersja Twojego skryptu: Kod <?php header("Content-type: text/html; charset=UTF-8"); /** * Licencja CC BY-NC-SA * <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.pl" target="_blank">http://creativecommons.org/licenses/by-nc-sa/3.0/deed.pl</a> * Klasa mbox umożliwiająca wysyłanie wiadomości SMS * @author Kacper 'kacka' Szurek * @mail kacperszurek (poczta w gmail.com) * Jeżeli się przydało - napisz * Chcesz podziękować, pomóc masz pytanie - napisz * Skrypt przechowuje cookie w katalogu /dane/mbox.txt * */ class mbox { /** * Przechowuje identyfikator połączenia curl * * @var $ch */ protected $_curl; /** * Ułatwienie dostępu do curl * * @param string $url - adres strony * @param array $post - opcjonalnie tablica parametrów * @return string - zwraca pobraną treść */ public function curl($url, $post = null) { $this->_curl = curl_init(); $var = array( CURLOPT_URL => $url, CURLOPT_COOKIEJAR => dirname(__FILE__).'/dane/mbox.txt', CURLOPT_COOKIEFILE => dirname(__FILE__).'/dane/mbox.txt', CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true); if ( !is_null($post) ) { foreach ($post as $option => $value) { $tmp .= $option. '=' .urlencode($value). '&'; } $var[CURLOPT_POST] = true; $var[CURLOPT_POSTFIELDS] = $tmp; } curl_setopt_array($this->_curl, $var); $return = curl_exec($this->_curl); return $return; curl_close($this->_curl); } /** * Funkcja logująca do orange.pl * * @param string $user - użytkownik * @param string $password - hasło */ public function login($user, $password) { $data = array( '_dyncharset' => 'UTF-8', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginErrorURL' => 'http://www.orange.pl/portal/map/map/signin', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginErrorURL=' => '', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginSuccessURL' => 'http://www.orange.pl/portal/map/map/pim', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginSuccessURL' => '', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.login' => $user, '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.login' => '', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.password' => $password, '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.password' => '', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login.x' => 10, '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login.y' => 10, '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login' => '', '&_DARGS' => '/gear/static/signInLoginBox.jsp' ); $login = $this->curl('http://www.orange.pl/portal/map/map/signin', $data); if (preg_match('/Podałeś błędny login lub hasło. Sprawdź je i wpisz jeszcze raz/', $login)) { file_put_contents('/dane/mbox.txt', ''); throw new Exception('Błędne dane logowania.'); } } /** * Funkcja wysyłająca sms, sprawdza jego długość i poprawność numeru * * @param int $to - adres odbiorcy * @param string $message - treść wiadomości */ public function send($to, $message) { if (strlen($message) == 0 || strlen($message) > 640) { throw new Exception('Wiadomość musi mieć mniej niż 640 znaków'); } //Dodał Mikz $tokenStack = $this->curl('http://www.orange.pl/portal/map/map/message_box?mbox_view=newsms'); $position0 = strpos($tokenStack, '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.token'); $position = $position0-37; $token = substr($tokenStack, $position, 15); ///////////// $data = array( '_dyncharset' => 'UTF-8', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.type' => 'sms', '_D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.type' => '', 'enabled' => 'true', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.token' => $token, '_D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.token' => '', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.errorURL' => '/portal/map/map/message_box?mbox_view=newsms', '_D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.errorURL' => '', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.successURL' => '/portal/map/map/message_box?mbox_view=messageslist', '_D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.successURL' =>'', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.to' => $to, '_D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.to' => '', '_D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.body' => '', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.body' => $message, '_D:/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.create' => '', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.create' => 'Wyślij', '_DARGS' => '/gear/mapmessagebox/smsform.jsp', '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.create.x' => 10, '/amg/ptk/map/messagebox/formhandlers/MessageFormHandler.create.y' => 10 ); curl_setopt ($this->_curl, CURLOPT_REFERER, 'http://www.orange.pl/portal/map/map/message_box?mbox_view=newsms'); $send = $this->curl('http://www.orange.pl/portal/map/map/message_box?_DARGS=/gear/mapmessagebox/smsform.jsp', $data); if (preg_match('/Niepoprawny numer telefonu/', $send)) { throw new Exception('Podany numer telefonu jest błędny'); } if (preg_match('/Wyszukaj wiadomości, których/', $send)) { echo 'Wiadomość została prawidłowo wysłana.'; } } } try { if (!isset($_POST['login'])) { echo '<form method="post" action="test.php">Login:<input type="text" name="login"> Hasło:<input type="password" name="haslo"> Do kogo:<input type="text" name="do"> Wiadomość:<textarea name="tresc" rows="10" cols="40"></textarea><input type="submit" name="wyslij" value="Wyślij"></form>'; } else { $a = new mbox(); $a->login($_POST['login'], $_POST['haslo']); $a->send($_POST['do'], $_POST['tresc']); } } catch (Exception $e) { echo $e->getMessage(); } ?> Jeszcze Ci jakieś notice'y wywala po submicie, ale generalnie smsy wysyła. Pozdrawiam :-). Będę wdzięczny jeśli wyślesz mi całość skryptu przez PW jak go skończysz :-). Pozdrawiam Ten post edytował Mikz 1.08.2009, 04:54:16 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 9.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Powyższe skrypty już nie działają. Orange znowu trochę pozmieniało na stronie. Popełniłem nowy skrypt, który na dzień dzisiejszy - 09.10.2010 działa.
Smsy wysyłają się poprawnie. Skrypt też sprawdza, czy sms się wysłał. Jest to sprawdzane na podstawie ilości pozostałych smsów bezpłatnych. Tylko na takich testowałem. Nie wiem czy MBox udostępnia jakieś płatne smsy. Jeśli tak, może warto by dodać ich obsługę. Skrypt jest dostępny tutaj: http://amichalski.googlecode.com/files/sms.tar.gz Edit, 02.01.2011: Dokonałem dziś zmian w skrypcie, Orange znowu trochę pozmieniał parametrów POST na stronie logowania. Dnia 02.01.2011 działa ![]() Zaprszam do downloadu: http://amichalski.googlecode.com/files/sms.tar.gz Dodatkowo usunąłem jeszcze z kodu zapisywanie/odczytywanie pliku cookie. Teraz jest to robione ciut sprytniej. Zadne pomocnicze pliki cookie nie sa zapisywane na dysku. Ten post edytował adamek_82 2.01.2011, 00:59:40 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 27.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Dzisiaj się zainteresowałem tym skrypcikiem. Super sprawa lecz jest problem. Dla upewnienia piszę. pobrałem najnowszy skrypt. Zarejestrowałem sie w orange (nie jestem posiadaczem numeru wiec mogę wysyłac tylko do orange) Wywołałem podając mu jako argumenty
próbowałem również usuwać tą część bo jest chyba zbędna :
wtedy kod był
od tego momentu skrypt zaczął połowicznie działać mianowicie loguje sprawdza wysłane i dostępne esemesy ta funkcja (dla sprawdzenia wysłałem jednego ze strony orange), informacje wyświetla poprawnie lecz podczas wysyłania niestety nie wyświetla tokenu w zamian podając: Wysyłanie smsa nie powiodło się co jest oczywiste bo nie ubyło sms'ów.
prosze o pomoc i informacje czy skrypt jest jeszcze sprawny i metody użycia bo próbowałem na kilka sposobów i niestety. Ten post edytował trzykas 2.02.2011, 14:20:18 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Być może coś z wyrażeniami nie działa. Spróbuj wyświetlić te dwie zmienne i zobacz co zwraca:
echo $freeSmsCountAfterSend + 1 echo $freeSmsCount Tym niemniej SMS-a powinien wysłać bo nie zwrócił false tutaj: $res = http_visit_url("http://www.orange.pl/portal/map/map/message_box?_DARGS=/gear/mapmessagebox/smsform.jsp", $link, $cookie_file, $postData); if ($res === false) { echo "Błąd podczas połączenia ze stroną $link\n"; return false; } -------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 27.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
obie zmienne są sobie równe gdyż = 9 więc warunek jest spełniony gdyż dodajac jeden 10 != 9, nie mniej oznacza to błąd w skrypcie gdyż taką samą droga dedukcji uznałem że wcześniejsze polecenia musiały się wykonac bezbłędnie.
reasumujac skrypt loguje sie poprawnie na konto, poprawnie sprawdza ilość dostępnych sms'ow lecz nie wysyła sms'a na wskazany numer w sieci Orange, nie wiem czy skrypt sam rozpoznaje tokeny czy wyświetla obrazek do przepisana. zwracam uwagę na to iż wylogowany jestem z konta Orange oraz moje konto jest zarejestrowane bez numeru w Orange czy tpsa więc dlatego sprawdzam wysyłanie do sieci orange gdyż przy teście do sieci orange sms doszedł i z tąd liczba dostępnych smsów = 9 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 9.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Niepotrzebnie modyfikowałeś skrypt
![]() Parametry są takie jak pisze: Usage: orange_mbox.php [message] [phone number] message to tresc wiadomosci (w cudzyslowach jesli ma byc wiecej niz 1 slowo), phone number to numer tel. na ktory wysylasz, wiec np.: php orange_mbox.php "bardzo wazna wiadomosc sms" 500111222 spowoduje wyslanie "bardzo wazna wiadomosc sms" na 500111222 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 27.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
racja skrypt się wykona tyle tylko że z linii komend php a przez przeglądarke ? Po użyciu tej metody w pasku adresu przeglądarki - nie można wyświetlić strony. skrypt się wywołuje jakim zmiennym musze nadać wartości
chciałem mu wklepać z ręki np. www.costamgdziesta.pl/orange_mbox.php?m="bla bla bla bla"&t=51111111 niestety zrobiłem tak bez najmniejszych zmian w skrypcie tylko dopisałem 2 linijki na końcu skryptu
według mnie powinno działać niestety. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Teoretycznie jeśli ma być wywoływane z poziomu przeglądarki a nie linii komend to powinno się usunąć.
-------------------- gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet. Zarabianie bez wysiłku na domenach bez ruchu: prolink. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 364 Pomógł: 3 Dołączył: 29.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
no wiec jak ten skrypt teraz wyglada?
Mógłby ktos skompletować całość tak zeby wysyłała z poziomy przeglądarki? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
no wiec jak ten skrypt teraz wyglada? Mógłby ktos skompletować całość tak zeby wysyłała z poziomy przeglądarki? 1. Nie zaczynamy zdania od "no więc". 2. Odgrzewasz kotlety? 3. Temat: Logowanie na strone Orange i odczytywanie konkretnych informacji -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.06.2025 - 23:38 |