file_get_contents aus der url, der Zugriff ist nur nach log-in auf website
Ich würde gerne ein php script, das kann Sie erfassen eine Seite von einer website. Denke file_get_contents($url).
Jedoch, diese website erfordert, dass Sie füllen Sie ein Benutzername/Passwort-log-in-Formular aus, bevor Sie Zugriff auf jede Seite. Ich kann mir vorstellen, dass wenn Sie sich angemeldet haben, die website sendet Ihr browser eine Authentifizierungs-cookie und mit jedem konsequenten browser-Anfrage, die die session-info ist wieder vergangen, um die website zu authentifizieren, die Zugriff.
Möchte ich wissen, wie ich simulieren kann dieses Verhalten der browser mit einem php-Skript, um den Zugriff und erfassen Sie eine Seite von dieser website.
Genauer gesagt, meine Fragen sind:
- Wie sende ich eine Anfrage, die
enthält meine log-in details, so dass
die website antwortet mit der session
Informationen/cookie - Wie lese ich die session
Informationen/cookie - Wie gebe ich diese Sitzung zurück
Informationen, die mit jeder konsequente
Anfrage (file_get_contents, curl) zu
die website.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Curl ist ziemlich gut, es zu tun. Sie brauchen nicht etwas besonderes tun, außer Satz
CURLOPT_COOKIEJAR
undCURLOPT_COOKIEFILE
Optionen. Sobald Sie angemeldet sind, indem die Formular-Felder aus der Seite wird das cookie gespeichert und Curl verwenden, das gleiche cookie für spätere Anfragen automatisch, wie das Beispiel unten zeigt.Beachten Sie, dass die untenstehende Funktion speichert die cookies zu
cookies/cookie.txt
so stellen Sie sicher, dass die Verzeichnis - /Datei existiert und beschrieben werden kann.Den http pecl Erweiterung kann es tun, auch PEAR::HTTP_Client, Snoopy und viele, viele andere Bibliotheken/Klassen.
Wenn Sie (aus welchem Grund auch immer) Sie wollen, erreicht das mit
file_get_contents
verwenden, können Sie die stream Kontext Optionen für den http-wrapper zu setzen, POST-und cookie-Parameter und stream_get_meta_data zum Lesen der Antwort-Header einschließlich der cookies.