Бывает такое, что на дешёвых хостингах в PHP запрещено использование file_get_contents и curl, а вам нужно получить данные с другого сервера. Для этого можно попробовать использовать сокеты с помощью fsockopen.
$fp = fsockopen("example.com", 80, $errno, $errstr, 30); $result = ""; if (!$fp) { exit("ERROR"); } else { $out = "GET /file.txt HTTP/1.1rn"; $out .= "Host: example.comrn"; $out .= "User-Agent: SomeBrowser v1.2.3rn"; $out .= "Connection: Closernrn"; fwrite($fp, $out); while (!feof($fp)) { $result .= fgets($fp, 128); } fclose($fp); } $result = substr($result, strpos($result, "rnrn") + 1);
После выполнения, в переменной $result будет находиться ответ сервера на GET запрос. Если мы запрашивали файл, то в $result будет содержимое файла. В последней строке мы выполняем substr, чтобы отрезать заголовки ответа.
POST запрос выполняется аналогично, только нужно изменить в переменной $out GET на POST, добавить заголовок Content-Length, равный размеру посылаемых данных, добавить заголовок Content-Type и в конце дописать сами данные.
$post_data = "id=1&name=Alesha" $out = "POST /api HTTP/1.1rn"; $out .= "Host: example.comrn"; $out .= "User-Agent: SomeBrowser v1.2.3rn"; $out .= "Content-Length:" . strlen($post_data) . "rn"; $out .= "Content-Type: application/x-www-form-urlencodedrn"; $out .= "Connection: Closernrn"; $out .= $post_data;