Подтвердить что ты не робот

Каковы самые большие различия между fopen и curl?

Я делаю веб-приложение на PHP и хочу читать контент из другого домена. Похоже, что мои основные варианты: fopen и curl.

Каковы основные различия между этими двумя методами, особенно в отношении безопасности и доступных опций?

Имеет ли значение, является ли URL-адрес http или https-сайтом?

4b9b3361

Ответ 1

Curl использует внешнюю библиотеку, и у нее гораздо больше возможностей настраивать пользовательские заголовки запроса, генерируя запрос POST, загружая файлы. Все, что вам нужно, я должен сказать.

Fopen ограничивается только тем, что делает только GET-запрос URL-адреса без дополнительной настройки.

Что касается безопасности, то на CURL не влияет настройка безопасности на PHP (например, запрет на открытие удаленных URL-адресов и т.д.).

Обе возможности возвращают вам данные, которые вы можете использовать всеми возможными способами. Если вы создаете дыру в вашем проекте, после получения данных ваша ошибка в конце концов.

Кроме того, я не совсем уверен, но я думаю, что fopen не может обрабатывать соединения SSL (https). Оба fopen и CURL поддерживают SSL (как отмечено Andy Shellam в комментарии ниже).

Ответ 2

См. Каковы важные различия между использованием fopen ($ url) и curl в PHP? для некоторых параметров безопасности, которые влияют на fopen, а именно allow_url_include.

Также обратите внимание, что с curl, если вы устанавливаете CURLOPT_FOLLOWLOCATION, тогда curl следует перенаправлениям в файл://для извлечения данных (по-прежнему зависит от open_basedir). Перенаправление на другие схемы, такие как ftp://, может быть хуже (не проверял ftp://). Без этого setopt curl не будет следовать перенаправлениям вообще. fopen работает с 302 по умолчанию, но только http://- > http://, а не http://- > file://.