Próbuje napisać skrypt do wysyłania wiadomości na nk.pl. Nie chodzi mi jednak o śledzika tylko o wiadomości na pocztę innego użytkownika.
Jeśli ktoś umiałby przeanalizować poniższy skrypt do wysyłania wiadomości na nk to byłbym bardzo wdzięczny. Skrypt loguje się poprawnie (linie od 16 do 32) otwiera formularz do wysyłania wiadomości do użytkownika o danym numerze profilu (linie od 34 do 42), sczytuje wszelkie zmienne zabezpieczające z pól hidden (linie od 44 do 62), wypełnia pola topic i content odpowiedzialne za temat wiadomości i treść i wszystko co ma być wysłane postem zapisuje do zmiennej $post linie od 64 do 71), ale zachowuje się tak jakby nie mógł wysłać metodą post wiadomości (linie od 73 do 78). Następnie skrypt się wylogowuje i to działa poprawnie (linie od 81 do 83). Z góry dziękuje za odpowiedzi.
// INIT CURL $ch = curl_init(); //echo '=> Loggin...'; //sleep(1); //********************** LOGIN //curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_USERAGENT, self::$USER_AGENT); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($ch, CURLOPT_REFERER, 'http://nk.pl'); curl_setopt($ch, CURLOPT_URL, 'https://nk.pl/login'); curl_setopt ($ch, CURLOPT_POST, 1); $post['login'] = 'nazwa_uzytkownika'; $post['password'] = 'haslo_logowania'; $post['remember'] = '1'; $post['ssl'] = '1'; curl_setopt ($ch, CURLOPT_POSTFIELDS, $this->createPostString($post)); curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); $store = curl_exec ($ch); if(!$store) { //echo '========> RETURNED: FALSE -> TERMINATING...'; return; } //echo '=> Logged'; $nrProfilu = 11143965; // numer profilu do ktorego nalezy wyslac wiadomosc curl_setopt($ch, CURLOPT_REFERER, 'http://nk.pl/profile/'.$nrProfilu); curl_setopt($ch, CURLOPT_URL, 'http://nk.pl/poczta/compose/'.$nrProfilu); $messagePage = curl_exec ($ch); if(!$messagePage) { //echo '========> RETURNED: FALSE -> TERMINATING...'; return; } // zmienne formularza ktory wysyla wiadomosc do uzytkownika $auto_form_ticket = ''; $mail_recipient_input = ''; $mail_recipient_search = ''; $__utm_admin = ''; $target = ''; $result = preg_match('/<input type="hidden" name="auto_form_ticket" value="([^"]+)"><input type="hidden" name="__utm_admin" value="([^"]+)">/',$messagePage,$matches); if ($result) { $auto_form_ticket = $matches[1]; $__utm_admin = $matches[2]; } $result = preg_match('/<input class="clean" readonly="readonly" tabindex="5" id="compose_mail_recipient_input" name="mail_recipient_input" type="text" value="([^"]+)"><input id="mail_recipient" type="hidden" name="mail_recipient_search" value="([^"]+)">/',$messagePage,$matches); if ($result) { $mail_recipient_input = $matches[1]; $mail_recipient_search = $matches[2]; } $post['auto_form_ticket'] = $auto_form_ticket; $post['mail_recipient_input'] = $mail_recipient_input; $post['mail_recipient_search'] = $mail_recipient_search; $post['__utm_admin'] = $__utm_admin; $post['target'] = 'http://nk.pl/profile/'.$nrProfilu; $post['topic'] = 'Temat'; $post['content'] = 'Test treści wiadomości'; curl_setopt($ch, CURLOPT_REFERER, 'http://nk.pl/poczta/compose/'.$nrProfilu); curl_setopt($ch, CURLOPT_URL, 'http://nk.pl/poczta/compose/'.$nrProfilu); curl_setopt ($ch, CURLOPT_POSTFIELDS, $this->createPostString($post)); // wysłanie wiadomości. Tu coś jest nie tak bo w $result pojawia się strona z wypełnionym formularzem tak jakby nie był wysłany $result = curl_exec($ch); // wylogowanie z nk curl_setopt ($ch,CURLOPT_URL, 'http://nk.pl/logout?l=1'); curl_exec($ch); // zamkniecie sesji curl_close ($ch); } /** * Funkcja przyjmuje tablice zmiennych i buduje z niej ciag znakow do wyslania metoda post */ function createPostString($aPostFields) { foreach ($aPostFields as $key => $value) { } }
--
Pozdrawiam
Marcin
Zapraszam na moją stronę promującą tanie wspólne podróżowanie i tani przewóz osób
Nikt nie wie dlaczego ten formularz na naszej klasie nie chce przejść?