cURL Login

Software von und für die Welt.

Moderator: Schrottie

Gesperrt
Martin1983
Geonewbie
Beiträge: 3
Registriert: Sa 14. Mai 2011, 11:05

cURL Login

Beitrag von Martin1983 » Sa 14. Mai 2011, 11:13

Hi,

hat schon jemand von euch einen cURL Login mit PHP zusammengebracht?

Bei mir scheitert es leider irgendwo... ich dachte ich bin mit diesem Codeteil schon eingeloggt und brauche bei jeder weiteren Abfrage nur das Cookie und den Viewstate mitgeben. Leider funktioniert das nicht so wie gedacht.

Kann mir jemand einen Tipp geben?

Code: Alles auswählen

$GCName = "xxx";
$GCPasswort = "xxx";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.geocaching.com/login/default.aspx');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24');
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
curl_setopt($ch, CURLOPT_POST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, ''); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$indexseite = curl_exec($ch);
curl_close($ch);

preg_match('/id="__VIEWSTATE".*?value="(.*?)"/mis', $indexseite, $matches);
$viewstate = $matches[1];

preg_match('/id=\"__EVENTVALIDATION\".*?value=\"(.*?)"/mis', $indexseite, $matches);
$eventvalidation = $matches[1];

$params = array(
   //'__EVENTTARGET' => '',
   //'__EVENTARGUMENT' => '',
   '__EVENTVALIDATION' => $eventvalidation,
   //'__VIEWSTATFIELDCOUNT' => '2',
   '__VIEWSTATE' => $viewstate,
   'ctl00$ContentBody$tbUsername' => $GCName,
   'ctl00$ContentBody$tbPassword' => $GCPasswort,
   //'ctl00$ContentBody$cookie' => 'on',
   //'ctl00$ContentBody$Button1' => 'Login',
   'ctl00$ContentBody$cbRememberMe' => '1',
   'ctl00$ContentBody$btnSignIn' => 'Login'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.geocaching.com/login/default.aspx');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24');
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, '', '&'));
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
$loginseite = curl_exec($ch);
curl_close($ch);

echo $loginseite;


lG. Martin

Werbung:
Benutzeravatar
arbor95
Geoguru
Beiträge: 4526
Registriert: So 4. Jan 2009, 20:28
Wohnort: 72800 Eningen u.A.
Kontaktdaten:

Re: cURL Login

Beitrag von arbor95 » Sa 14. Mai 2011, 12:39

erst mal würd ich https schreiben für die login Seite.
Bild

Martin1983
Geonewbie
Beiträge: 3
Registriert: Sa 14. Mai 2011, 11:05

Re: cURL Login

Beitrag von Martin1983 » So 15. Mai 2011, 00:50

Danke,

das habe ich aber leider schon versucht, es hat aber nichts geändert.

Gibt es sonst noch Ideen?

Martin1983
Geonewbie
Beiträge: 3
Registriert: Sa 14. Mai 2011, 11:05

Re: cURL Login

Beitrag von Martin1983 » Mo 16. Mai 2011, 00:22

Problem gelöst!

"http_build_query" ist in diesem Fall nicht richtig, da Dollarzeichen in dem Array sind, und diese falsch konvertiert werden.

ich habe diese einfach so aneinandergereiht, dann geht es.

Code: Alles auswählen

foreach ($params AS $key => $value) {
   $postfields .= $key . '=' . $value . '&';
}
$postfields = rtrim($postfields, '&');


Trotzdem Danke und
lG. Martin

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder