Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie die Adresse nach dem Sprung in PHP

So erhalten Sie die Adresse nach dem Sprung in PHP

PHPz
PHPzOriginal
2023-03-29 10:10:131238Durchsuche

Für PHP-Entwickler kann das Erhalten der Sprungadresse ein sehr häufiges Problem sein, beispielsweise die Notwendigkeit, die tatsächliche Sprungadresse im Crawler-Programm zu erhalten. In diesem Artikel erfahren Sie, wie Sie mit PHP die umgeleitete Adresse erhalten.

HTTP-Umleitung

Im HTTP-Protokoll bedeutet Umleitung, dass, wenn der Client (z. B. ein Website-Browser) den Server (z. B. einen Website-Server) anfordert, der Server eine Umleitungsantwort zurückgibt und den Client anweist, die Anfrage erneut zu senden einen anderen Server. Dieser Vorgang wird als HTTP-Umleitung bezeichnet.

Es gibt viele Möglichkeiten, eine HTTP-Umleitung zu implementieren. Die häufigste davon ist die Verwendung der HTTP-Statuscodes 302 (Gefunden) und 303 (Siehe Andere). Wenn der Server diese Statuscodes zurückgibt, führt der Client automatisch eine Umleitung durch und springt zur neuen URL-Adresse.

Erhalten Sie die umgeleitete Adresse

In PHP können wir Curl- und Header-Funktionen verwenden, um die umgeleitete Adresse abzurufen. Das Folgende ist ein Beispielcode für die Verwendung von Curl zum Abrufen der umgeleiteten Adresse:

function getRedirectUrl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    $redirectUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
    curl_close($ch);
    return $redirectUrl;
}

Diese Funktion akzeptiert eine URL als Parameter und gibt die neue Adresse nach der Umleitung dieser URL zurück. Bei dieser Funktion müssen wir auf die folgenden Punkte achten: Die Funktion

  1. curl_setopt wird verwendet, um einige Parameter der Curl-Anfrage festzulegen, z. B. URL, Rückgabedatentyp, ob dem Sprung gefolgt werden soll usw.; CURLOPT_RETURNTRANSFER weist Curl an, die erhaltenen Daten in Zeichenkettenrückgabe statt in eine direkte Ausgabe umzuwandeln.
  2. CURLOPT_FOLLOWLOCATION weist Curl an, automatisch zur Umleitungsadresse zu springen, wenn eine HTTP-3xx-Antwort auftritt Header an die Adresse vor dem Sprung, wenn automatisch gesprungen wird.
  3. Zusätzlich zur Verwendung von Curl können wir auch die Header-Funktion verwenden, um die umgeleitete Adresse abzurufen, wie unten gezeigt:
  4. function getRedirectUrl($url){
        $redirectUrl = null;
        $headers = get_headers($url, true);
        if (isset($headers['Location'])) {
            $redirectUrl = $headers['Location'];
        } else if(isset($headers['location'])) {
            $redirectUrl = $headers['location'];
        }
        return $redirectUrl;
    }
  5. Diese Funktion ruft die Funktion get_headers auf, um die Antwort-Header-Informationen der durch $url If angegebenen URL abzurufen Wenn der Antwortheader das Feld „Standort“ oder „Standort“ enthält, wird davon ausgegangen, dass die Anforderung umgeleitet wurde, und die Umleitungsadresse wird zurückgegeben. Es ist zu beachten, dass die Verwendung der Header-Funktion nur die Umleitung mit dem HTTP-Antwortstatuscode 302 oder 303 und keine anderen Statuscodes unterstützen kann.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie man mit PHP die Adresse nach der HTTP-Umleitung erhält. In Situationen, in denen wir die umgeleitete Adresse im Programm verfolgen müssen, können wir die Curl- oder Header-Funktion verwenden, um das Feld „Location“ im HTTP-Antwortheader abzurufen und die umgeleitete URL-Adresse zu erhalten.

Das obige ist der detaillierte Inhalt vonSo erhalten Sie die Adresse nach dem Sprung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist ein PHP-Dienst?Nächster Artikel:Was ist ein PHP-Dienst?