Artykuły na każdy temat
[PHP] Logowanie do phpBB by Przemo za pomocą cURL
<?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
$ch = curl_init($config['address'].'login.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
// Ucięto wysyłanie nagłówków (browser, lang, etc.)
curl_setopt($ch, CURLOPT_POSTFIELDS, prepare_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:
<?php
$config['address'] = 'http://adres.do/forum/';
$path['cookie'] = dirname(__FILE__).'/cookies.txt';
$ch = curl_init($config['address'].'index.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
curl_exec($ch);
curl_close($ch);
?>
Komentarze
Dodaj komentarz
d3x