| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

04-06-2010, 12:19
|
|
spoetsch
Registrierter Benutzer
|
|
Registriert seit: Mar 2005
Beiträge: 14
|
|
Wie Weiterleitungen mittels cURL folgen?
Hallo,
ich möchte gerne den HTML-Code einer Webseite im Netz auslesen. Wenn die URI direkt auf diese Webseite verweist, dann ist das auch kein Problem. Sobald ich aber eine Weiterleitung dazwischen habe, knallt die Abfrage mit cURL. Ich bekomme zwar die Adresse der neuen URI, aber er folgt ihr nicht...
Meist bekomme ich "Invalid URI in request POST [...]" oder "The requested URL [...] was not found on this server"
PHP-Code:
$c = curl_init($link);
// Weiterleitung folgen
curl_setopt($c, CURLOPT_FOLLOWLOCATION, TRUE);
// POST verwenden
curl_setopt($c, CURLOPT_POST, 1);
// Ergebnis als String zurückgeben
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
// Header ausgeben
curl_setopt($c, CURLOPT_HEADER, 1);
$html_code = curl_exec($c);
mache ich dieselbe Abfrage mit
PHP-Code:
file_get_contents($link)
funktioniert das ganze einwandfrei aber ich bekomme dafür keine Information über die neue URI, dich in diesem Fall auch gerne wissen möchte.
Was muss ich an der cURL-Abfrage verändern, damit sie sich genauso wie file_get_contents verhält?
Danke im Voraus!
srp
|

04-06-2010, 12:24
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
wenn es sich genauso verhalten soll, musst du GET statt POST verwenden. Bei einer Umleitung ist POST verboten.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

04-06-2010, 13:00
|
|
spoetsch
Registrierter Benutzer
|
|
Registriert seit: Mar 2005
Beiträge: 14
|
|
Hallo,
danke für die schnelle Antwort.
Ich habe die Option jetzt CURLOPT_POST auskommentiert (GET is ja default) aber trotzdem bekomme ich immer noch HTML-Error-Codes 400 oder 404 zurückgeliefert.
Beispiel:
Simpler Beispiellink
Die Rückgabe sind dann wie folgt aus:
HTML-Code:
HTTP/1.1 404 Not Found
Date: Fri, 04 Jun 2010 10:58:55 GMT
Server: Apache/1.3.41 (Unix) mod_cap/1.2.3 mod_oas/5.8
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /http://www.manager-magazin.de/thema/
uhren_spezial/ was not found on this server.<P>
<HR>
<ADDRESS>Apache/1.3.41 Server at adserv.quality-channel.de
Port 80</ADDRESS>
</BODY></HTML>
Ich kapiere nicht wo der Fehler liegt... oder muss ich curl_exec für jeder Weiterleitung mit der neuen URI erneut aufrufen? Mit "file_get_contents" klappt es problemlos... bloß ohne die echte URI...
Danke und Gruß
srp
Geändert von spoetsch (04-06-2010 um 13:05 Uhr)
|

04-06-2010, 13:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Siehst du den Slash vor der URL? Das wird es sein.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

04-06-2010, 13:18
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von AmicaNoctis
Siehst du den Slash vor der URL? Das wird es sein. 
|
Ja - wenn man sich den genannten Link mal mit dem WebSniffer anschaut, sieht man da folgenden Location-Header in der Antwort:
Code:
Location: http://http://www.manager-magazin.de/thema/uhren_spezial/
Du hast dir leider zum Testen eine Adresse ausgesucht, deren Betreiber zu !%$# für sein Handwerk ist.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

04-06-2010, 14:42
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
@wahsaga
keine Ahnung was WebSniffer da macht, aber wenn ich das selbst mit einem GET-Request per fsockopen auslese, dann krieg ich
Code:
HTTP/1.1 302 Found
Date: Fri, 04 Jun 2010 12:39:53 GMT
Server: Apache/1.3.41 (Unix) mod_cap/1.2.3 mod_oas/5.8
Set-Cookie: RMID=538a43704c08f410; path=/; domain=.quality-channel.de
Location: http://www.manager-magazin.de/thema/uhren_spezial/
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
Ich kann da kein Problem bzgl. eines falsch gesetzten Location-Header sehen *kopfkratz*
EDIT:
Curl arbeitet bei mir mit der Beispieladresse auch einwandfrei.
__________________
Drelingdo
Krabonse
Simmannamando
Geändert von Quetschi (04-06-2010 um 14:46 Uhr)
|

04-06-2010, 14:58
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Quetschi
keine Ahnung was WebSniffer da macht
|
Stimmt, da macht der WebSniffer wohl Mist.
Der hat auch einige andere Macken in letzter Zeit - Schade, damit taugt der als on-the-fly-Debugwerkzeug wohl nicht mehr besonders viel.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

04-06-2010, 16:14
|
|
spoetsch
Registrierter Benutzer
|
|
Registriert seit: Mar 2005
Beiträge: 14
|
|
Zitat:
Zitat von Quetschi
EDIT:
Curl arbeitet bei mir mit der Beispieladresse auch einwandfrei.
|
Hm... das heißt, wenn du den Link
"http://adserv.quality-channel.de/RealMedia/ads/click_lx.ads/www.manager-
magazin.de/homepage/center/1523005648/Right1/qc/MO20XX5474XXHOME
/MO20XX5474XXHOME_02.html/36643562366331333463303863656430?http:
//www.manager-magazin.de/thema/uhren_spezial/"
mit eingangs von mir erwähnten Code nutzt, dann löst er die URI richtig auf und liefert dir auch den Quellcode der Zielseite zurück??
Was mache ich dann falsch?
Danke und Gruß
srp
|

04-06-2010, 16:22
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Zitat:
Zitat von spoetsch
Hm... das heißt, wenn du den Link
"http://adserv.quality-channel.de/RealMedia/ads/click_lx.ads/www.manager-
magazin.de/homepage/center/1523005648/Right1/qc/MO20XX5474XXHOME
/MO20XX5474XXHOME_02.html/36643562366331333463303863656430?http:
//www.manager-magazin.de/thema/uhren_spezial/"
mit eingangs von mir erwähnten Code nutzt, dann löst er die URI richtig auf und liefert dir auch den Quellcode der Zielseite zurück??
|
ja
Zitat:
Zitat von spoetsch
Was mache ich dann falsch?
|
k.A.
Was hast du denn für eine PHP-Version am laufen?
__________________
Drelingdo
Krabonse
Simmannamando
|

06-06-2010, 11:33
|
|
spoetsch
Registrierter Benutzer
|
|
Registriert seit: Mar 2005
Beiträge: 14
|
|
Hi,
ich habe PHP Version 5.3.1 drauf...
Außerdem ist der "safe_mode" = "Off" und "open_basedir" = "No value"... hab einige Einträge bei Google gesehen, dass das wohl auch zu Fehlern führen kann bei CURLOPT_FOLLOWLOCATION...
Hab echt keine Ahnung, wieso das bei mir nicht läuft... sind doch nur 5 Zeilen-Code...
srp
|

06-06-2010, 13:49
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Hmm - laut Header-Expose ist bei WebSniffer auch 5.3.1 am werkeln - evtl. was faul in der Version?
__________________
Drelingdo
Krabonse
Simmannamando
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|