Wie wir Curl, verwenden Sie das gleiche cookie mit der browser von PHP
Ich habe ein PHP-Skript wird eine HTTP-Anfrage auf den Namen des Browsers und die Ausgänge der Antwort an den browser. Problem ist wenn ich auf die links aus dem browser auf diese Seite, es beschwert sich über die cookie-Variablen. Ich nehme an es muss der Browser Cookies(N) für die Website.
wie kann ich das abfangen und leitet es an die remote-site?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht.
Wenn, locken Sie die Anforderung, Sie müssen analysieren Sie die Ausgabe, und ersetzen Sie alle links, so dass Sie gehen durch Ihren server.
Der einzige Weg dies funktionieren würde ist wenn Sie permanente cookies in Ihrem curl Anfrage. CURL halten können cookies selbst. Weisen Sie ein session-ID cookie-Datei (in curl), so dass nachfolgende Anfragen bekommen die gleichen cookies. Wenn ein Benutzer auf einen link klickt, werden Sie brauchen, Rollen Sie die Anforderung erneut.
Ist es eine Frage der Sicherheit zu ermöglichen site1 cookies für site2. Stell dir vor, du könntest das setzen von cookies im browser für paypal und Tricks den Benutzer zu denken, Sie hatten protokolliert, int oder eine andere böswillige Aktion.
Dies ist, wie ich vorn alle browser-cookies zu Rollen und auch wieder alle cookies für die curl-Anfrage an den browser zurück. Dazu brauchte ich einige Probleme zu lösen, wie immer, die cookies von curl Parsen der http-header senden mehrere cookies und session-locking:
In der Tat, es ist möglich. Du musst einfach die Cookies des browser und übergeben Sie es als parameter für curl-mimik browser.
Es ist wie eine Sitzung Aufbocken...
Hier ist ein Beispiel-code:
Funktioniert es sehr gut, wenn Ihr Zweck ist der Aufruf einer anderen website, aber dieser schlägt fehl, wenn Sie rufen Sie Ihren web-server (die gleiche, bringt mit dem curl-Befehl). Es ist, weil Ihre session-Datei noch geöffnet/verschlossen durch dieses Skript also die URL, die Sie anrufen können nicht darauf zugreifen.
Wenn Sie wollen, umgehen diese Einschränkung (Aufruf einer Seite auf dem gleichen server), müssen Sie die Sitzung schließen, Datei mit diesem code vor der Ausführung der curl :
Hoffe, dies hilft jemand 🙂
Vom
curl_setopt
:Jedoch müssen Sie möglicherweise die cookies direkt, was gemacht werden kann:
Das ist das gleiche wie der 'Set-Cookie' HTTP-header. Überprüfen Sie sind nicht mit
curl_setopt($ch, CURLOPT_COOKIESESSION, true)
denn dies wird libcurl ignorieren einige cookies.Das Cookie wird in der Regel gesendet, mit der HTTP-request-header, wie
Also denke ich, das Sie nur ändern müssen, um den cookie-Teil in Ihrem Kopf.
PiTheNumber Antwort war Super, aber ich lief in einige Probleme mit, die es verursacht, dass es trotzdem gedruckt werden, der Header der Seite. Also habe ich eingestellt, dass die zuverlässiger
curl_getinfo
Funktion. Diese version folgt auch leitet.