Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Curl Login Form Http/Https Post [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Curl Login Form Http/Https Post


 
vitalinka
12-06-2010, 11:26 
 
Hallo Profis!
Ich drehe bald durch. Curl Login funzt nicht. Ich habe tausend Beispiele angesehen und ausprobiert. Es wird einfach nicht eingeloggt. Ich bekomme die Seite mit Formular und nichts weiter. Kein Fehler oder so. Was mache ich falsch?

$url = 'http://www.domain.de';
$ch = curl_init();

//Variablen setzen
$arrSubmit="usrname=admin&pass=123456";

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrSubmit);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);


//Ausführen der Aktionen
$result = curl_exec($ch);
$code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);

switch($code)
{
case 200:
$message = 'Access Granted';
$success = 1;
break;
case 401:
$message = 'Access Denied';
break;
default:
$message = 'Result unknown, access denied.';
break;
}
//Session beenden
curl_close($ch);
echo $message.'<br>'.$code.'<br>'.$result;

 
AmicaNoctis
12-06-2010, 20:52 
 
Hallo,

mir fällt auf Anhieb nur eins auf: Du akzeptierst keine Cookies. (CURLOPT_COOKIEFILE und CURLOPT_COOKIEJAR setzen.)

Wenn der Login im Browser mit temporär abgestellten Cookies dennoch funktioniert, liegt es doch nicht daran und du solltest dich dann nochmal melden.

Achso: Code gehört in entsprechende Tags, bitte Beitrag ändern und das beheben (siehe Forenregeln)!

Gruß,

Amica

 
vitalinka
14-06-2010, 12:34 
 
Danke für die Antwort. Ich habe es schon früher mit cookie ausprobiert, kein unterschied. Auch an verschiedenen Seiten, gleiche Ergebnis.
$url="http://domain.de/index.php";
$ch = curl_init();

//Variablen setzen
$arrSubmit="bla=bla&blad=blad";

$cookies="cooc.txt";
//Session Optionen setzen

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrSubmit);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);

//Ausführen der Aktionen
$result = curl_exec($ch);
$code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);

switch($code)
{
case 200:
$message = 'Access Granted';
$success = 1;
break;
case 401:
$message = 'Access Denied';
break;
default:
$message = 'Result unknown, access denied.';
break;
}
//Session beenden


#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

echo $message.$code.$result;

 
AmicaNoctis
14-06-2010, 12:50 
 
Bitte bearbeite den ersten Beitrag und formatiere den Code (Ändern => Erweitert)!

Warum siehst du dir nicht erstmal an, was vom Server überhaupt zurückkommt (CURLOPT_HEADER, CURLOPT_RETURNTRANSFER)?

Gruß,

Amica

 
wahsaga
14-06-2010, 12:57 
 
Es wird einfach nicht eingeloggt. [...] Was mache ich falsch?
Wenn ich sehe, dass du in deinem Code auf den HTTP-Statuscode 401 abfragst - dann vermute ich, dass du gar keinen „Login“-Mechanismus meinst, sondern HTTP Authentication.

Ich sehe aber nirgends, dass du CURLOPT_USERPWD und CURLOPT_HTTPAUTH benutzt hättest.

 
vitalinka
14-06-2010, 13:20 
 
Server Antwort:
Access Granted200HTTP/1.1 200 OK Date: Mon, 14 Jun 2010 11:13:21 GMT Server: Apache/2.2.3 (CentOS) Set-Cookie: UICSESSION=12j1vfg7cersf3rit167lfmgq5; path=/ Expires: Sat, Jan 01 2000 01:01:01 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: ui_language=germany Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8
Da hast du recht Wahsaga. Es ist ganz normales Login Html POST Formular.
Kann es sein, dass Server,PHP Einstellungen eine Rolle spielen?
MfG

 
AmicaNoctis
14-06-2010, 13:29 
 
Gegenfrage: Woran erkennst du, ob der Login erfolgreich war, ohne dir die Response Entity mit CURLOPT_RETURNTRANSFER angesehen zu haben?


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:56 Uhr.