PHP simplexml_load_file yakalamak 403

2 Cevap php

Ben aşağıdaki PHP kullanıyorum:

$xml = simplexml_load_file($request_url) or die("url not loading");

I kullanın:

$status = $xml->Response->Status->code;

Yanıtın durumunu kontrol etmek için. 200 selim her şey tamam, devam.

Ben bir 403 erişim engellendi hatası alırsanız Ancak, bunu nasıl PHP yakalamak yüzden ben kullanıcı dostu bir uyarı dönebilirsiniz?

2 Cevap

simplexml_load_file() çağrısından HTTP yanıt kodu almak için, bildiğim tek yol PHP'nin az bilinen $http_response_header kullanmaktır. Bu değişken automagically ayrı ayrı yanıt başlığını içeren bir dizi olarak oluşturulur, her HTTP sargı üzerinden bir HTTP isteği yapmak. Diğer bir deyişle, her "http://" ile başlayan bir URL ile simplexml_load_file() veya file_get_contents() kullanın

Bir print_r() gibi ile içerik inceleyebiliriz

$xml = @simplexml_load_file($request_url);
print_r($http_response_header);

Senin durumunda olsa da, file_get_contents() then, test whether you got a 4xx response, then if not, pass the body to simplexml_load_string() ile ayrı ayrı XML almak isteyebilirsiniz. Örneğin:

$response = @file_get_contents($request_url);
if (preg_match('#^HTTP/... 4..#', $http_response_header[0]))
{
    // received a 4xx response
}

$xml = simplexml_load_string($response);

Sen {[içine onlardan dize geçmek, sonra bir HTTP hatası tespit onlar tarafından sağlanan işlevselliği kullanmak ardından, the cURL module veya the HTTP module dosya almak için gibi bir şey kullanmak zorunda olacak (2)]}.