2010-06-13 9 views
14

Ich muss eine Get-Anfrage durchführen und Header zusammen mit ihm senden. Was kann ich dafür verwenden?PHP-GET-Anfrage, Kopfzeilen senden

Der Hauptheader, den ich einstellen muss, ist der Browser eins. Gibt es einen einfachen Weg, dies zu tun?

+1

Sind Sie PHP-Code schreiben die GET-Anforderung zu erfüllen, oder möchten Sie um Ihren Browser (oder etwas anderes) zu simulieren, um verschiedene Benutzeragenten anzufordern, die Ihre PHP-Seiten anfordern? – grossvogel

+0

Ich schreibe Code, um die Anfrage auszuführen und die Antwort als eine Zeichenkette zu speichern. –

+0

Was "Browser" Header meinen Sie? Sie müssen die User-Agent-Zeichenfolge zurückgeben? –

Antwort

29

Wenn Sie cURL verwenden, können Sie curl_setopt ($handle, CURLOPT_USERAGENT, 'browser description') verwenden, um den User-Agent-Header der Anforderung zu definieren.

Wenn Sie file_get_contents verwenden, überprüfen file_get_contents für dieses zwicken eines Beispiels auf der Mann-Seite:

// Create a stream 
$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "Cookie: foo=bar\r\n" . 
       "User-agent: BROWSER-DESCRIPTION-HERE\r\n" 
) 
); 

$context = stream_context_create($opts); 

// Open the file using the HTTP headers set above 
$file = file_get_contents('http://www.example.com/', false, $context); 
+0

Danke gelöst :) –

+0

Danke dafür! hat perfekt funktioniert. – jones

+0

Kann ich eine HTTPS-Anfrage machen? –

-2

können Sie verwenden, um die header Funktion für das, Beispiel:

header('Location: http://www.example.com?var=some_value'); 

Beachten Sie, dass:

diesen Header Merken() muss aufgerufen werden, bevor eine Ausgabe gesendet wird , entweder durch normale HTML-Tags, leere Zeilen in einer Datei oder von PHP. Es ist ein sehr häufig Fehlercode mit include(), oder require(), Funktionen oder eine andere Dateizugriffsfunktion, und haben Leerzeichen oder leere Zeilen, die ausgegeben werden, bevor header() aufgerufen wird. Das gleiche Problem existiert, wenn Sie eine einzige PHP/HTML-Datei verwenden.

+0

Ich muss die Antwort von der Anfrage in einer Zeichenfolge für die Verarbeitung speichern. So kann ich diese Methode nicht verwenden. –

+0

@ James Jeffery: Ich verstehe nicht, was Sie damit meinen. Können Sie genauer sein oder mehr Details zu Ihrer Frage hinzufügen? Danke – Sarfraz

+0

Versuchen Sie AJAX zu verwenden? Oder greifen Sie auf PHP-Variablen mit Javascript zu? –

1

Wenn Sie eine Seite anfordern, cURL verwenden.

Um die Header (in diesem Fall zu setzen, die User-Agent Header in der HTTP-Anforderung, würden Sie diese Syntax verwenden:

<?php 
$curl_h = curl_init('http://www.example.com/'); 

curl_setopt($curl_h, CURLOPT_HTTPHEADER, 
    array(
     'User-Agent: NoBrowser v0.1 beta', 
    ) 
); 

# do not output, but store to variable 
curl_setopt($curl_h, CURLOPT_RETURNTRANSFER, true); 

$response = curl_exec($curl_h); 
Verwandte Themen