Отправка post-запросов в curl

Команды Curl для HTTP

Curl также можно использовать c прокси-сервером. Если вы находитесь за прокси-сервером, прослушивающим порт 8090 на sampleproxy.com, загрузите файлы, как показано ниже:

curl -x  sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz

В приведённом выше примере вы можете выбросить -U username:password, если прокси-сервер не требует метода аутентификации.

Типичный HTTP-запрос всегда содержит заголовок. Заголовок HTTP отправляет дополнительную информацию об удалённом веб-сервере вместе с фактическим запросом. С помощью инструментов разработчика в браузере вы можете посмотреть сведения о заголовке, а проверить их можно с помощью команды curl.

Пример ниже демонстрирует, как получить информацию о заголовке с веб-сайта.

curl -I www.testdomain.com

Используя curl, вы можете сделать запрос GET и POST. Запрос GET будет выглядеть следующим образом:

curl http://mydomain.com

А вот пример запроса POST:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp

Здесь text=Hello — это параметр запроса POST. Такое поведение похоже на HTML-формы.

Вы также можете указать несколько методов HTTP в одной команде curl. Сделайте это, используя опцию –next, например:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp —next https://myDomain.com/displayResult.jsp

Команда содержит запрос POST, за которым следует запрос GET.

Каждый HTTP-запрос содержит агент пользователя, который отправляется как часть запроса. Он указывает информацию о браузере клиента. По умолчанию запрос содержит curl и номер версии в качестве информации об агенте пользователя. Пример вывода показан ниже:

“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”

Вы можете изменить дефолтную информацию об агенте пользователя, используя следующую команду:

curl -I http://mydomain.com –-user-agent “My new Browser”

Теперь вывод будет выглядеть так:

“GET / HTTP/1.1” 200 “_” ”My new Browser”

Часто используемые функции CURL и константы

  • curl_init — Инициализирует сеанс;
  • curl_close — Завершает сеанс;
  • curl_exec — Выполняет запрос;
  • curl_errno — Возвращает код ошибки;
  • curl_setopt — Устанавливает параметр для сеанса, например:
    • CURLOPT_HEADER – значение 1 означает, что необходимо вернуть заголовки;
    • CURLOPT_INFILESIZE — параметр для указания ожидаемого размера файла;
    • CURLOPT_VERBOSE — значение 1 означает что CURL будет выводить подробные сообщения о всех производимых операциях;
    • CURLOPT_NOPROGRESS – отключение индикатора прогресса операции, значение 1;
    • CURLOPT_NOBODY – если Вам не нужен документ, а нужны только заголовки, то поставьте значение 1;
    • CURLOPT_UPLOAD — для закачки файла на сервер;
    • CURLOPT_POST – выполнить запрос методом POST;
    • CURLOPT_FTPLISTONLY — получение списка файлов в директории FTP сервера, значение 1;
    • CURLOPT_PUT — выполнить запрос методом PUT, значение 1;
    • CURLOPT_RETURNTRANSFER — возвратить результат, не выводя в браузер, значение 1;
    • CURLOPT_TIMEOUT – максимальное время выполнения в секундах;
    • CURLOPT_URL – указание адреса для обращения;
    • CURLOPT_USERPWD — строка с именем пользователя и паролем в виде :;
    • CURLOPT_POSTFIELDS – данные для POST запроса;
    • CURLOPT_REFERER — задает значение HTTP заголовка «Referer: »;
    • CURLOPT_USERAGENT —  задает значение HTTP заголовка «User-Agent: »;
    • CURLOPT_COOKIE — содержимое заголовка «Cookie: », который будет отправлен с HTTP запросом;
    • CURLOPT_SSLCERT- имя файла с сертификатом в формате PEM;
    • CURLOPT_SSL_VERIFYPEER – значение 0, для того чтобы запретить проверку сертификата удаленного сервера (по умолчанию 1);
    • CURLOPT_SSLCERTPASSWD — пароль к файлу сертификата.
  • curl_getinfo — Возвращает информацию об операции, вторым параметром может выступать константа для указания, что именно нужно показать, например:
    • CURLINFO_EFFECTIVE_URL — последний использованный URL;
    • CURLINFO_HTTP_CODE — последний полученный код HTTP;
    • CURLINFO_FILETIME — дата модификации загруженного документа;
    • CURLINFO_TOTAL_TIME — время выполнения операции в секундах;
    • CURLINFO_NAMELOOKUP_TIME — время разрешения имени сервера в секундах;
    • CURLINFO_CONNECT_TIME — время, затраченное на установку соединения, в секундах;
    • CURLINFO_PRETRANSFER_TIME — время, прошедшее от начала операции до готовности к фактической передаче данных, в секундах;
    • CURLINFO_STARTTRANSFER_TIME — время, прошедшее от начала операции до момента передачи первого байта данных, в секундах;
    • CURLINFO_REDIRECT_TIME — время, затраченное на перенаправление, в секундах;
    • CURLINFO_SIZE_UPLOAD — количество байт при закачке;
    • CURLINFO_SIZE_DOWNLOAD — количество байт при загрузке;
    • CURLINFO_SPEED_DOWNLOAD — средняя скорость закачки;
    • CURLINFO_SPEED_UPLOAD — средняя скорость загрузки;
    • CURLINFO_HEADER_SIZE — суммарный размер всех полученных заголовков;
    • CURLINFO_REQUEST_SIZE — суммарный размер всех отправленных запросов;
    • CURLINFO_SSL_VERIFYRESULT — результат проверки SSL сертификата, запрошенной с помощью установки параметра CURLOPT_SSL_VERIFYPEER;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD — размер загруженного документа, прочитанный из заголовка Content-Length;
    • CURLINFO_CONTENT_LENGTH_UPLOAD — размер закачиваемых данных;
    • CURLINFO_CONTENT_TYPE — содержимое полученного заголовка Content-type, или NULL в случае, когда этот заголовок не был получен.

Подробнее о функциях CURL и константах к ним можете посмотреть на официальном сайте PHP — php.net

На этом все, для начинающих я думаю достаточно Удачи!

Строки запроса и параметры

Параметры почтового индекса (), идентификатора приложения () и единиц () были переданы в конечную точку с помощью «строк запроса». Знак добавленный к URL указывает начало строки запроса. Параметры строки запроса — это параметры, которые появляются после знака :

После строки запроса каждый параметр объединяется с другими параметрами через символ амперсанда . Порядок параметров в строке запроса не имеет значения. Порядок имеет значение только в том случае, если параметры находятся слева от строки запроса (и, следовательно, являются частью самого URL-адреса). Любые настраиваемые части конечной точки, которые появляются перед строкой запроса, называются (разберем их позже).

Forms explained

Forms are the general way a website can present a HTML page with fields for
the user to enter data in, and then press some kind of ‘OK’ or ‘Submit’
button to get that data sent to the server. The server then typically uses
the posted data to decide how to act. Like using the entered words to search
in a database, or to add the info in a bug tracking system, display the
entered address on a map or using the info as a login-prompt verifying that
the user is allowed to see what it is about to see.

Of course there has to be some kind of program on the server end to receive
the data you send. You cannot just invent something out of the air.

Получение информации

Ещё одним дополнительным шагом является получение данных о cURL запросе, после того, как он был выполнен.

// ...

curl_exec($ch);

$info = curl_getinfo($ch);

echo 'Took ' . $info . ' seconds for url ' . $info;

// …

Возвращаемый массив содержит следующую информацию:

  • “url”
  • “content_type”
  • “http_code”
  • “header_size”
  • “request_size”
  • “filetime”
  • “ssl_verify_result”
  • “redirect_count”
  • “total_time”
  • “namelookup_time”
  • “connect_time”
  • “pretransfer_time”
  • “size_upload”
  • “size_download”
  • “speed_download”
  • “speed_upload”
  • “download_content_length”
  • “upload_content_length”
  • “starttransfer_time”
  • “redirect_time”

Some debug tricks

Many times when you run curl on a site, you’ll notice that the site doesn’t
seem to respond the same way to your curl requests as it does to your
browser’s.

Then you need to start making your curl requests more similar to your
browser’s requests:

  • Use the option to store fully detailed logs of the requests
    for easier analyzing and better understanding

  • Make sure you check for and use cookies when needed (both reading with
    and writing with )

  • Set user-agent (with ) to
    one like a recent popular browser does

  • Set referer (with ) like
    it is set by the browser

  • If you use POST, make sure you send all the fields and in the same order as
    the browser does it.

PHP cURL POST

Разница между  и  запросами — это синтаксиc для отправки. Для  можно указать больше параметров, например, поля, которые будут отправляться. Допустим, вы хотите отправить форму на сайте куда делаете запрос, тогда в данном случае вам точно понадобиться .

// Для начала скажем, что мы хотим использовать cURL
$curl = curl_init();
// Определение прааметров. Ссылку (куда будет делаться запрос), какие заголовки будут у этого запроса, задаем, что запрос должен быть в формате POST и передаем параметры этого запроса в виде массива 'ключ' => 'значение'. 
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'http://testcURL.com',
    CURLOPT_USERAGENT => 'Codular Sample cURL Request',
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => 
]);
// Отправляем запроса и сохраняем его в $res
$res = curl_exec($curl);
// Закрываем запрос и удаляем инициализацию $curl
curl_close($curl);

Процедура отправки этого запроса почти идентична тому, что было в  за исключением двух дополнительных строчек. С помощью  мы говорим cURL о том, что хотим отправить  запрос и затем прописываем параметры для отправки с  в виде массива (сначала имя параметра и затем его значение).

CURLOPT_POSTFIELDS => 

Обратите внимание на то, что если на форме будет стоять капча (проверка на ботов), тогда зарегистрироваться автоматически не получится

?‍? Опрос

Проверьте свою внимательность. Что означают следующие параметры?

Tip: Использование curl в Терминале или iTerm OS Mac обеспечивают намного более простую работу, чем использование командной строки в Windows. Если серьезно относиться к документации API, работая на ПК, стоит подумать о переходе с OS Windows. Будет много утилит, которые мы установим при помощи Терминала, который просто работает на Mac. Кроме того, находясь в Силиконовой долине, и используя ПК вместо Mac можно показаться старомодным для окружающих (см. Почему большинство стартапов покупают MacBook для своих сотрудников).

Для более подробного изучения curl в документировании REST API можно посмотреть REST-esting with curl.

Cookie Basics

The way the web browsers do «client side state control» is by using
cookies. Cookies are just names with associated contents. The cookies are
sent to the client by the server. The server tells the client for what path
and host name it wants the cookie sent back, and it also sends an expiration
date and a few more properties.

When a client communicates with a server with a name and path as previously
specified in a received cookie, the client sends back the cookies and their
contents to the server, unless of course they are expired.

Many applications and servers use this method to connect a series of requests
into a single logical session. To be able to use curl in such occasions, we
must be able to record and send back cookies the way the web application
expects them. The same way browsers deal with them.

Результат запроса

Ну а после того, как CURL-запрос был выполнен, неплохо бы было знать, что он вернул:

А вот какие еще даные мы можем получить:

Индекс массива Значение Индекс массива Значение
url string(17) «https://intop24.ru» content_type string(24) «text/html; charset=utf-8»
http_code int(200) header_size int(218)
request_size int(49) filetime int(-1)
ssl_verify_result int(0) redirect_count int(0)
total_time float(0.009419) namelookup_time float(1.3E-5)
connect_time float(1.3E-5) pretransfer_time float(1.4E-5)
size_upload float(0) size_download float(46523)
speed_download float(4939271) speed_upload float(0)
download_content_length float(-1) upload_content_length float(0)
starttransfer_time float(0.009374) redirect_time float(0)
certinfo array(0) { } redirect_url string(0) «»

Команда curl

Команда curl чаще всего используется в Linux для загрузки силами одноименной утилиты различных файлов из сети Интернет. Эта утилита позволяет не только загружать, но и отправлять файлы на серверы, поддерживает огромное количество протоколов, в том числе, HTTP(S) и FTP(S), но, в отличие от популярной утилиты wget, не позволяет загружать данные в рекурсивном режиме.

Базовый синтаксис команды выглядит следующим образом:

Утилита поддерживает огромное количество параметров, но на практике используется лишь малая часть из них. По умолчанию утилита выводит данные загружаемого из сети файла посредством стандартного потока вывода. По этой причине в подавляющем большинстве случаев используется либо перенаправление потока вывода, либо параметр -o, позволяющий указать результирующий файл. Параметр -O позволяет записывать данные в файл с именем из URL. Для корректной обработки перенаправлений URL может использоваться параметр -L. Для продолжения загрузки файла может использоваться параметр -C -. Если же нужно ограничить скорость загрузки, может использоваться параметр —limit-rate. Еще одним полезным параметром является параметр -#, превращающий текстовые отчеты о процессе загрузки в псевдографический индикатор прогресса.

Загрузка файла

Для загрузки файла из Интернет нужно использовать один из способов указания имени результирующего файла.

Это пример перенаправления потока вывода:

Это пример указания имени результирующего файла:

А это — пример сохранения загруженных данных в файле с именем из URL:

Три приведенные выше команды аналогичны — в результате их исполнения загруженные данные будут сохранены в файле с именем alpine-standard-3.8.0-x86.iso.

Продолжение загрузки файла

Для того, чтобы продолжить загрузку файла с того места, на котором была прервана предыдущая операция загрузки, достаточно использовать параметр -C -:

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

Загрузка файла с ограничением скорости

Для ограничения скорости загрузки файла достаточно использовать параметр —limit-rate и указать максимальную скорость загрузки:

В результате файл будет загружаться с максимальной скоростью в 1024 байта в секунду.

Загрузка нескольких файлов

Для загрузки нескольких файлов следует указать несколько строк URL:

В результате будут загружены файлы, доступные по обоим URL.

Просмотр текстового документа в терминале

Для того, чтобы просмотреть текстовый документ с уделенного ресурса в терминале, достаточно воспользоваться утилитой curl совместно с утилитой more.

Информация о файле curl.exe

Процесс The cURL executable или The curl executable принадлежит программе The cURL executable или The curl executable или ReadCube от cURL, http://curl.haxx.se или curl, https://curl.haxx.se или pepsmich или cURL, https://curl.haxx.se.

Описание: curl.exe не является важным для Windows и часто вызывает проблемы. Curl.exe находится в подпапках «C:\Program Files».
Известны следующие размеры файла для Windows 10/8/7/XP 10,240 байт (50% всех случаев), 937,984 байт или 76,288 байт.  
Приложение не видно пользователям. Это не системный файл Windows. У файла нет информации о создателе этого файла.
Curl.exe способен мониторить приложения.
Поэтому технический рейтинг надежности 73% опасности.

Рекомендуем: Выявление проблем, связанных с curl.exe

  • Если curl.exe находится в подпапках «C:\Users\USERNAME», тогда рейтинг надежности 53% опасности. Размер файла 584,192 байт (25% всех случаев), 591,872 байт, 480,048 байт или 596,992 байт.
    Это не файл Windows. Приложение не видно пользователям. Вы можете удалить ReadCube, или попросить помощи у технической поддержки. Перейдите к ReadCube в Панели управления Windows (раздел Программы и компоненты) для удаления программы, или перейдите к labtiva.com Службе Поддержки Клиентов.
  • Если curl.exe находится в папке C:\Windows, тогда рейтинг надежности 44% опасности. Размер файла 490,496 байт (50% всех случаев) или 2,089,984 байт.
    Это неизвестный файл в папке Windows. Приложение не видно пользователям. Это не файл Windows.
    Curl.exe способен мониторить приложения.
  • Если curl.exe находится в подпапках C:\Windows, тогда рейтинг надежности 66% опасности. Размер файла 2,619,392 байт.

Конвертируем валюту с помощью cURl и Google

Пересчет валюты достаточно простое дело, но курсы достаточно часто изменяются, поэтому приходится использовать сервисы, подобные Google, для получения текущих значений курса пересчета. Функция получает 3 параметра: исходная валюта, целевая валюта и сумма.

function currency($from_Currency,$to_Currency,$amount) {
    $amount = urlencode($amount);
    $from_Currency = urlencode($from_Currency);
    $to_Currency = urlencode($to_Currency);
    $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
    $ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,  CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $rawdata = curl_exec($ch);
    curl_close($ch);
    $data = explode('"', $rawdata);
    $data = explode(' ', $data);
    $var = $data;
    return round($var,2);
}

Cookie options

The simplest way to send a few cookies to the server when getting a page with
curl is to add them on the command line like:

Cookies are sent as common HTTP headers. This is practical as it allows curl
to record cookies simply by recording headers. Record cookies with curl by
using the ()
option like:

(Take note that the
option described
below is a better way to store cookies.)

Curl has a full blown cookie parsing engine built-in that comes in use if you
want to reconnect to a server and use cookies that were stored from a
previous connection (or hand-crafted manually to fool the server into
believing you had a previous connection). To use previously stored cookies,
you run curl like:

Curl’s «cookie engine» gets enabled when you use the
option. If you only
want curl to understand received cookies, use with a file that
doesn’t exist. Example, if you want to let curl understand cookies from a
page and follow a location (and thus possibly send back cookies it received),
you can invoke it like:

Curl has the ability to read and write cookie files that use the same file
format that Netscape and Mozilla once used. It is a convenient way to share
cookies between scripts or invokes. The () switch
automatically detects if a given file is such a cookie file and parses it,
and by using the () option you’ll make curl write a new
cookie file at the end of an operation:

Формы

Формы — основной способ представления web-сайта как HTML-страницы
с полями, в которые пользователь вводит данные, и затем нажимает на
кнопку ‘OK’ или ‘Отправить’, после чего данные отсылаются на сервер.
Затем сервер использует принятые данные и решает, как действовать
дальше: искать информацию в базе данных, показать введенный адрес на
карте, добавить сообщение об ошибке или использовать информацию для
аутентификации пользователя. Разумеется, на стороне сервера имеется
какая-то программа, которая принимает ваши данные.

4.1 GET

GET-форма использует метод GET, например следующим образом:

        <form method="GET" action="junk.cgi">
        <input type=text name="birthyear">
        <input type=submit name=press value="OK">
        </form>

Если вы откроете этот код в вашем браузере, вы увидите форму с
текстовым полем и кнопку с надписью «OK». Если вы введете
‘1905’ и нажмете OK, браузер создаст новый URL, по которому и
проследует. URL будет представляться строкой, состоящей из пути
предыдущего URL и строки, подобной
«junk.cgi?birthyear=1905&press=OK».

Например, если форма располагалась по адресу
«www.hotmail.com/when/birth.html», то при нажатии на кнопку
OK вы попадете на URL
«www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK».

Большинство поисковых систем работают таким образом.

Чтобы curl сформировал GET-запрос, просто введите то, что
ожидалось от формы:

        # curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"

4.2 POST

Метод GET приводит к тому, что вся введенная информация
отображается в адресной строке вашего браузера. Может быть это
хорошо, когда вам нужно добавить страницу в закладки, но это
очевидный недостаток, когда вы вводите в поля формы секретную
информацию, либо когда объем информации, вводимый в поля, слишком
велик (что приводит к нечитаемому URL).

Протокол HTTP предоставляет метод POST. С помощью него клиент
отправляет данные отдельно от URL и поэтому вы не увидете их в
адресной строке.

Форма, генерирующая POST-запрос, похожа на предыдущую:

        <form method="POST" action="junk.cgi">
        <input type=text name="birthyear">
        <input type=submit name=press value=" OK ">
        </form>

Curl может сформировать POST-запрос с теми же данными следующим
образом:

        # curl -d "birthyear=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi

Этот POST-запрос использует ‘Content-Type
application/x-www-form-urlencoded’, это самый широко используемый
способ.

Данные, которые вы отправляете к серверу, должны быть правильно
закодированы
, curl не будет делать это за вас. К примеру, если вы
хотите, чтобы данные содержали пробел, вам нужно заменить этот пробел
на %20 и т.п. Недостаток внимания к этому вопросу — частая ошибка,
из-за чего данные передаются не так, как надо.

4.3 Загрузка файлов с помощью POST (File Upload POST)

В далеком 1995 был определен дополнительный способ передавать
данные по HTTP. Он задокументирован в RFC 1867, поэтому этот способ
иногда называют RFC1867-posting.

Этот метод в основном разработан для лучшей поддержки загрузки
файлов. Форма, которая позволяет пользователю загрузить файл,
выглядит на HTML примерно следующим образом:

        <form method="POST" enctype='multipart/form-data' action="upload.cgi">
        <input type=file name=upload>
        <input type=submit name=press value="OK">
        </form>

Заметьте, что тип содержимого Content-Type установлен в
multipart/form-data.

Чтобы отослать данные в такую форму с помощью curl, введите
команду:

        # curl -F upload=@localfilename -F press=OK 

4.4 Скрытые поля

Обычный способ для передачи информации о состоянии в
HTML-приложениях — использование скрытых полей в формах. Скрытые поля
не заполняются, они невидимы для пользователя и передаются так же,
как и обычные поля.

Простой пример формы с одним видимым полем, одним скрытым и
кнопкой ОК:

        <form method="POST" action="foobar.cgi">
        <input type=text name="birthyear">
        <input type=hidden name="person" value="daniel">
        <input type=submit name="press" value="OK">
        </form>

Чтобы отправить POST-запрос с помощью curl, вам не нужно думать о
том, скрытое поле или нет. Для curl они все одинаковы:

        # curl -d "birthyear=1905&press=OK&person=daniel" 

4.5 Узнать, как выглядит POST-запрос

Когда вы хотите заполнить форму и отослать данные на сервер с
помощью curl, вы наверняка хотите, чтобы POST-запрос выглядел точно
также, как и выполненный с помощью браузера.

Простой способ увидеть свой POST-запрос, это сохранить
HTML-страницу с формой на диск, изменить метод на GET, и нажать
кнопку ‘Отправить’ (вы можете также изменить URL, которому будет
передаваться данные).

Вы увидите, что данные присоединились к URL, отделенные символами
‘?’, как и предполагается при использовании GET-форм.

Что дает IPv6?

Документы, определяющие новый интернет-протокол организация Internet Engineering Task Force выпустила еще в середине 90-х, а официальный запуск работы протокола IPv6 на постоянной основе состоялся 6 июня 2012 года. Многие компании начали переходить на него и раньше, например Google — с 2008 г.

Номер «6» протокол получил потому, что имя IPv5 зарезервировали за экспериментальным протоколом реального времени, который так и не вышел «в серию». Но и не пропал совсем — многие заложенные в нем концепции можно найти в протоколе MLPS.

Благодаря 128-битной схеме адресации, заложенной в IPv6, количество доступных в нем сетевых адресов составляет 2 в 128 степени. Столь обширное адресное пространство делает ненужным применение NAT (адресов хватит всем) и упрощает маршрутизацию данных. Например, маршрутизаторы больше не должны фрагментировать пакеты, появилась возможность пересылки больших пакетов, размером до 4 Гбайт. Из IP-заголовка исключена контрольная сумма и т. д., поэтому несмотря на больший по сравнению с IPv4 размер адреса IPv6 (16 байтов вместо 4), заголовок пакета удлинился всего лишь вдвое: с 20 до 40 байт.

Проверяем доступность определённого веб сайта

Как узнать, доступен ли определённый веб сайт? cURL поможет ответить на данный вопрос. Данный скрипт можно использовать совместно с планировщиком для мониторинга сайта.

Замените URL в строке 3 на тот, который вам нужен.  Скопируйте код на свою страницу, и станет известно, доступен ли указанный сайт.

<?php

       if (isDomainAvailible('http://www.ruseller.com'))
       {
               echo "Работает и готов отвечать на запросы!";
       }
       else
       {
               echo "Ой, сайт не доступен.";
       }

       //Возвращает true, если домен доступен
       function isDomainAvailible($domain)
       {
               //Проверка на правильность URL 
               if(!filter_var($domain, FILTER_VALIDATE_URL))
               {
                       return false;
               }

               //Инициализация curl
               $curlInit = curl_init($domain);
               curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
               curl_setopt($curlInit,CURLOPT_HEADER,true);
               curl_setopt($curlInit,CURLOPT_NOBODY,true);
               curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

               //Получаем ответ
               $response = curl_exec($curlInit);

               curl_close($curlInit);

               if ($response) return true;

               return false;
       }
?>
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector