Frage

Eigentlich ist es so chaotisch geworden, dass ich bin nicht einmal sicher, ob Locke der Schuldige ist. So, hier ist die PHP:

$creds = array(
    'pw' => "xxxx",
    'login' => "user"
    );

$login_url = "https://www.example.net/login-form"; //action value in real form.
$loginpage = curl_init();

curl_setopt($loginpage, CURLOPT_HEADER, 1);
curl_setopt($loginpage, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($loginpage, CURLOPT_URL, $login_url);
curl_setopt($loginpage, CURLOPT_POST, 1);
curl_setopt($loginpage, CURLOPT_POSTFIELDS, $creds);

$response = curl_exec($loginpage);
echo $response;

Ich erhalte die Header (die die Header einer normalen, erfolgreichen Anforderung entsprechen), die von der Login-Seite gefolgt (Ich vermute, diese curl gefangen aufgrund einer Umleitung), die einen Fehler auf die Wirkung von „Bad Kontakttyp hat “.

dachte ich, das Problem ist, dass der Antrag die Gastgeber hatte an den anfordernden Server festgelegt, nicht der Remote-Server, aber dann bemerkte ich (in Firebug), dass die Anfrage gesendet wird, wie GET, POST nicht.

Wenn ich die Login-Seite des Formulars zu kopieren, sie Streifen nach unten nur auf die Formelemente mit Werten, und legen Sie die vollständige URL für die Aktion, es funktioniert einfach toll. So würde ich denke, das ist kein Sicherheitsproblem ist, wo die Anmeldeanforderung auf den gleichen Server stammen hat usw. (ich selbst die leeren versteckt Werte loszuwerden und alle von der JS, das einige der anderen Cookies).

Dann wieder, bekomme ich ziemlich schnell verwirrt.

Irgendwelche Ideen, warum es zeigt sich, wie bekommen, oder warum es nicht funktioniert, was das betrifft?

War es hilfreich?

Lösung

Wenn die gesamte Klasse Fehlerbehebung von PHP-cURL-bezogene Problemen, Sie einfach auf CURLOPT_VERBOSE abbiegen und CURLOPT_STDERR eine Datei-Handle geben.

tail -f Datei, vergleichen Sie die Header und die Reaktion auf die, die Sie in Firebug zu sehen, und das Problem sollte klar werden.

Andere Tipps

Die Anforderung wird von dem Server vorgenommen, und wird nicht in Firebug auf. (Sie verwirrte wahrscheinlich mit einer anderen Anfrage von Ihrem Browser). Verwenden Sie wireshark um herauszufinden, was wirklich passiert. Sie sind nicht CURLOPT_FOLLOWLOCATION Einstellung; Umleitungen sollte nicht gefolgt werden.

zusammenfassend: Ratet mal weniger, mehr erstellt werden. Link zu einer pcap dump, und wir werden in der Lage, genau zu sagen, was Sie tun, ist falsch; oder per Post die genaue Ausgabe des PHP-Skript, und wir könnten.

Der gezeigte Code funktioniert ein mehrteiliger formpost (da Sie eine Hash-Array auf die POSTFIELDS Option übergeben), was wahrscheinlich ist, nicht das, was der Zielserver erwartet.

versuchen, in einem print_r(curl_getinfo($loginpage)) am Ende werfen, sehen, was die Kopfdaten sie zurückgeschickt, wie.

auch, wenn Ihr zu fälschen versuchen, dass Ihre Protokollierung von ihrer Website in Ihr machen gehen zu wollen, dass Ihr die korrekte Referrer mit Ihrem Beitrag zu senden, so dass sie „denken“ Sie auf der Website waren, wenn Sie es geschickt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top