Artykuły na każdy temat

[PHP] Logowanie do phpBB by Przemo za pomocą cURL

Dodano 21.06.2011r. o 18:08
Jakiś czas temu zrobiłem logowanie do phpBB by Przemo. Po pewnym okresie czasu znowu zostałem poproszony, przez kolejnego znajomego, o zrobienie tego samego. Publikuje to banalne rozwiazanie, bo pomyślałem sobie, że komuś może się także przydać.
Kod:
<?php
$config['address'] = 'http://adres.do/forum/';

$path['cookie'] = dirname(__FILE__).'/cookies.txt';

$post['username'] = '';
$post['password'] = '';
$post['redirect'] = ''// Nie ruszaj
$post['login'] = 'Zaloguj'// Tego też nie Smile

$ch curl_init($config['address'].'login.php');
curl_setopt($chCURLOPT_RETURNTRANSFERfalse);
curl_setopt($chCURLOPT_HEADERtrue);
curl_setopt($chCURLOPT_COOKIEFILE$path['cookie']);
curl_setopt($chCURLOPT_COOKIEJAR$path['cookie']);
// Ucięto wysyłanie nagłówków (browser, lang, etc.)
curl_setopt($chCURLOPT_POSTFIELDSprepare_request($post));
curl_exec($ch);
curl_close($ch);

// Funkcja pomocnicza
function prepare_request($query)
{
 if(is_array($query) && !empty($query)) // Nie zapomnij o isset() rygorystyczny draniu!
 {
  foreach($query as $key => $value)
  {
   $query[$key] = urlencode($key).'='.urlencode($value);
  }

  return implode('&'$query);
 }
 else
 {
  return false;
 }
}
?>
Ogólnie skrypt jest na tyle banalny, że nie ma, co tłumaczyć. Całą konfigurację macie w kilku pierwszych linijkach. Przy sprawdzaniu odpowiedzi przeanalizujcie, nagłówki, które są zwracane przez serwer w przypadku powodzenia (HTTP/1.1 302 Found + Location + Set-Cookie) bądź niepowodzenia operacji. Gdy doszło już do załogowania to przeglądanie przykładowej strony (np. strony głównej) wygląda następująco:
Kod:
<?php
$config['address'] = 'http://adres.do/forum/';

$path['cookie'] = dirname(__FILE__).'/cookies.txt';

$ch curl_init($config['address'].'index.php');
curl_setopt($chCURLOPT_RETURNTRANSFERfalse);
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_COOKIEFILE$path['cookie']);
curl_setopt($chCURLOPT_COOKIEJAR$path['cookie']);
curl_exec($ch);
curl_close($ch);
?>

Komentarze

Publikowane komentarze są prywatnymi opiniami użytkowników serwisu. Serwis nie ponosi odpowiedzialności za treść opinii. W trosce o zachowanie poziomu dyskusji wszystkie komentarze podlegają akceptacji przed ich publikacją dlatego proszę cierpliwie czekać aż komentarz zostanie opublikowany.

d3x

Dodano 23.11.2011r. o 23:18
Używam najnowszej wersji phpbb, na localhoscie, php 5.2.5. Coś z cookie chyba jest nie tak, nie pozwala się zalogować ponownie jeśli się go fizycznie nie usunie najpierw.

CapaciousCore

Dodano 23.11.2011r. o 22:18
@d3x podaj adres tego forum. Jeżeli to local to podaj wersje skryptu to sprawdzę. Powinno wszystko grać jeżeli ciastko przy oglądaniu konkretnej strony jest "ładowane".

d3x

Dodano 22.11.2011r. o 19:15
Witam
Po wykonaniu skryptu udaje się logowanie, jednak phpBB po paru sekundach przekierowuje na stronę główną, a wtedy zalogowany już nie jestem. Co zrobić, aby po przekierowaniu nadal być zalogowanym ?

Dodaj komentarz

Zostaw komentarz jeżeli możesz! Nie bądź przysłowiowym botem! Nie bądź obojętny! Ciebie to nic nie kosztuje, a mi sprawi uśmiech na twarzy.
Zezwolono używać: BBCode
Zabroniono używać:
znaczników HTML

(Wymagany)

(Wymagany, niepublikowany)

(Nie wymagana)

Token:

Obrazek dla bota

(Przepisz tylko cyfry!)

(Wymagana)