Marcin
Kapusta
iOS
Developer/Software
Developer/Music
Producer
Temat: CURL - Problem ze skryptem do wysyłania wiadomości
WitajciePró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. Od razu chcę zaznaczyć, że nie będzie to narzędzie do wysyłania spamu itp ponieważ na niektórych profesjonalnych forach ludzie nie chcą pomagać w rozwijaniu takiego typu skryptów. Robię to pod moją stronę w celu integracji wszystkich profilów z mojej strony z profilami naszej klasy, w tym celu chce wysyłać osobom, które podadzą swój numer profilu kod aktywujący, abym miał pewność, że podali prawidłowy numer profilu na naszej klasie. Kod aktywujący będzie wysyłany na pocztę na nk.pl, a następnie będą oni koiować ten kod i wklejać na stronie do mojego formularza w celu aktywacji informacji, że dany użytkownik posiada zweryfikowane konto na nk.pl
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 = array();
$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;
}
$matches = array();
// 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];
}
$matches = array();
$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 = array();
$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);
echo $result;
}
/**
* Funkcja przyjmuje tablice zmiennych i buduje z niej ciag znakow do wyslania metoda post
*/
function createPostString($aPostFields) {
foreach ($aPostFields as $key => $value) {
$aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
}
return implode('&', $aPostFields);
}