Czy w PHP można wysyłać nagłówki HTTP z file_get_contents()
?
Wiem, że możesz wysłać agenta użytkownika ze swojego php.ini
pliku. Jednakże, można również wysłać inne informacje, takie jak HTTP_ACCEPT
, HTTP_ACCEPT_LANGUAGE
oraz HTTP_CONNECTION
z file_get_contents()
?
A może jest inna funkcja, która to umożliwi?
php
http-headers
Marcus
źródło
źródło
file_get_contents()
? czy to określa?ini_set('user_agent', 'SomeBrowser v42.0.4711');
przejdź do user-agent.me i skopiuj stamtąd swój .. lub edytuj php.ini, aby zmienić go globalnieOto, co zadziałało dla mnie (Dominic był krótki tylko o jedną linię).
źródło
header
przesłoniuser_agent
element tablicy, jeśli oba są określone.Możesz użyć tej zmiennej do pobrania nagłówków odpowiedzi po
file_get_contents()
funkcji.Kod:
Wynik:
źródło
Tak.
Podczas wywoływania
file_get_contents
adresu URL należy skorzystać zstream_create_context
funkcji, która jest dość dobrze udokumentowana na php.net.Jest to mniej więcej dokładnie omówione na następującej stronie php.net w sekcji komentarzy użytkowników: http://php.net/manual/en/function.stream-context-create.php
źródło
Korzystanie z bibliotek php cURL będzie prawdopodobnie właściwą drogą, ponieważ ta biblioteka ma więcej funkcji niż prosta
file_get_contents(...)
.Przykład:
źródło
file_get_contents
a ja jeszcze nie znalazłem przypadku użycia, który można osiągnąć tylko za pomocą cURL.Jeśli nie potrzebujesz protokołu HTTPS, a funkcja curl nie jest dostępna w Twoim systemie, możesz użyć
fsockopen
Ta funkcja otwiera połączenie, z którego możesz zarówno czytać, jak i pisać, tak jak w przypadku normalnego uchwytu pliku.
źródło
file_get_contents
więc jest to nieco nie na temat odpowiedzi.Niestety, wygląda na to, że nie
file_get_contents()
oferuje takiego stopnia kontroli. Rozszerzenie cURL jest zwykle pierwszym, które pojawia się jako pierwsze, ale bardzo polecam rozszerzenie PECL_HTTP ( http://pecl.php.net/package/pecl_http ) dla bardzo prostych i nieskomplikowanych żądań HTTP. (znacznie łatwiej się z nim pracuje niż cURL)źródło