Ich habe eine sehr seltsame Curl Problem innerhalb von PHP. Wenn ich eine URL als Variable übergebe, gibt die Anfrage einen Fehler 400 zurück, der "Schlechte Anfrage - fehlender Angebots-ID-Cookie" sagt.PHP Curl Problem - Fehler, wenn eine Variable als die URL verwendet, aber eine Zeichenfolge funktioniert gut
Aber wenn die URL in den Code hart-Code anstelle einer Variablen übergeben, funktioniert es gut!
Hier ist mein Code -
function resolveURL($url) {
$ch = curl_init("$url");
echo var_dump("$url");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$results = curl_exec($ch);
curl_close($ch);
echo var_dump($results);
}
Die var_dump von url return $ - string(104) "http://click.linksynergy.com/fs-bin/click?id=SN4dmHdm/i8&offerid=462146.45&type=3&subid=0"
Die var_dump von $ Ergebnisse liefert
string(319) "HTTP/1.1 400 Bad Request Server: Apache-Coyote/1.1 Content-Length: 187 Date: Thu, 22 Dec 2016 14:14:38 GMT Connection: close Missing offer id cookie "
Aber wenn ich machen eine Änderung der obige Code -
$ch = curl_init("http://click.linksynergy.com/fs-bin/click?id=SN4dmHdm/i8&offerid=462146.45&type=3&subid=0");
Dann kehren das $ Ergebnisse der vollständigen Daten-I
string(1125) "HTTP/1.1 302 Found Server: Apache-Coyote/1.1 Set-Cookie: lsn_statp=SSUMBwoAAAAlJc5KdQpJiw%3D%3D; Domain=.linksynergy.com; Expires=Wed, 17-Dec-2036 14:16:14 GMT; Path=/ Set-Cookie: rmuid=e431e402-a482-4611-a78a-71aa74f859f5; Domain=.linksynergy.com; Expires=Fri, 22-Dec-2017 14:16:14 GMT; Path=/ Set-Cookie: lsn_qstring=SN4dmHdm%2Fi8%3A462146%3A; Domain=.linksynergy.com; Expires=Fri, 23-Dec-2016 14:16:14 GMT; Path=/ Set-Cookie: lsn_track=UmFuZG9tSVZDI%2Bw8hSY%2BdfkMlwCUwBvtWwSdxm0SOqHNgxhyQqiQeQ0nwzwxomWBIzUbWVW%2Ft7lFTQ3k3hZXdQ%3D%3D; Domain=.linksynergy.com; Expires=Sun, 20-Dec-2026 14:16:14 GMT; Path=/ Set-Cookie: lsclick_mid38366="2016-12-22 14:16:14.418|SN4dmHdm_i8-R8CHpEfhXw637RnHirbegw"; Version=1; Domain=.linksynergy.com; Max-Age=63072000; Expires=Sat, 22-Dec-2018 14:16:14 GMT; Path=/ P3P: policyref="/w3c/p3p.xml", CP="NOI DSP COR CURa ADMa DEVa OUR BUS STA" Expires: Thu, 01 Jan 1970 00:00:00 GMT Date: Thu, 22 Dec 2016 14:16:14 GMT Cache-Control: no-cache Pragma: no-cache Location: http://www.daskeyboard.com/?siteID=SN4dmHdm_i8-R8CHpEfhXw637RnHirbegw Content-Length: 0 Connection: close "
erwar- Warum ist dies der Fall? Ich sehe aus irgendeinem Grund, alles nach dem ersten &
wird gestrippt, wenn ich die URL als Variable verlassen, aber ich kann nicht erklären, warum.
Ich habe versucht, die $ url durch urlencode()
, htmlentities()
und htmlspecialchars()
laufen, aber ich bekomme immer noch die gleichen Ergebnisse. Ich habe versucht, $url
anstelle von "$url"
zu übergeben, und nichts behebt das Problem.
UPDATE: Wenn ich eine echo var_dump(curl_getinfo($ch));
nach der Einstellung der URL tun, sieht es so aus, als wäre die Länge der Zeichenfolge irgendwie länger als es sein sollte, wenn $url
übergeben wird, aber die richtige Länge bei Verwendung der hartcodierten Zeichenfolge. Hier sind die Ergebnisse -
//$url
`array(21) { ["url"]=> string(104) "http://click.linksynergy.com/fs-bin/click?id=SN4dmHdm/i8&offerid=462146.45&type=3&subid=0" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(0) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0) ["namelookup_time"]=> float(0) ["connect_time"]=> float(0) ["pretransfer_time"]=> float(0) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } } `
//hard-coded
`array(21) { ["url"]=> string(89) "http://click.linksynergy.com/fs-bin/click?id=SN4dmHdm/i8&offerid=462146.45&type=3&subid=0" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(0) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0) ["namelookup_time"]=> float(0) ["connect_time"]=> float(0) ["pretransfer_time"]=> float(0) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } } `
Kann jemand erklären, woher die zusätzlichen 15 Zeichen stammen, wenn ich die Variable verwende?
Update: Durch eine str_split
auf $url
tun, habe ich festgestellt, dass aus irgendeinem Grund gibt es eine versteckte ist ‚# 038;‘ in der Variablen nach jeder &
, die nicht zeigt, wenn ich die Zeichenfolge echo. Im Folgenden finden Sie, was das Array zurückgibt -
[56]=> string(1) "&" [57]=> string(1) "#" [58]=> string(1) "0" [59]=> string(1) "3" [60]=> string(1) "8" [61]=> string(1) ";"
Und hier ist, was es ..
$url= str_replace("#038;", "", $url);
Die tatsächliche Länge von 'http: //click.linksynergy.com/fs-bin/click? Id = SN4dmHdm/i8 & offerid = 462146.45 & type = 3 & subid = 0' ist 89. Aber in Ihrem Fall erhalten Sie' String (104) ', dh die Länge ist 104. Stellen Sie sicher, wo es falsch läuft. – Perumal
Danke, ich habe gerade festgestellt, dass, indem Sie ein 'echo var_dump (curl_getinfo ($ ch));' nach dem Einstellen der URL ... Ich werde meinen Beitrag mit den Ergebnissen zu aktualisieren, ich verstehe nicht, was dies verursachen würde. –
Wie übergeben Sie URL in der Funktion? – Perumal