Php замен file get contents

Php замен file get contents

(06.09.2015 15:05:00) Геннадий писал(а): Здравствуйте.

Сегодня у меня к вам появился один вопрос по теме. В PHP есть функция file_get_contents(index.php), она берёт и читает всё содержимое какого-либо файла (в нашем случае index.php) в одну строку — это вы знаете. Но хитрость в том, что данная функция воспринимает абсолютно всё содержащиеся в файле index.php, как обычный текст. Например, если я внутрь этого файла я вставлю, например, код PHP, то данная функция, читая весь файл index.php, данный вставленный PHP код будет воспринимать тоже, как текст и, естественно, этот PHP код работать не будет.

Добавлю, заменить file_get_contents (index.php) на include (index.php) не получится, так как моя схема из-за особенностей своей работы вообще перестаёт функционировать.

Как можно решить данную проблему? Может есть какая аналогичная функция?

Сначала считываете при помощи file_get_contents, потом выполняете при помощи eval.

Выведет на экран: $a=10; $b=25; echo $a+$b;

Потом пришло еще пару сообщений:

(08.09.2015 07:09:00) Геннадий писал(а): Да, возможно будет работать, попробую. Хотя ставя опыты, я вчера нашёл оригинальное решение. Оказалось, что стоит только заменить строчку file_get_contents (index.php) на строчку file_get_contents (http://домен/index.php), как всё стало прекрасно работать. Другими словами, нужно просто поставить полный адрес до файла. А вот почему при таких раскладах всё стало работать, я не пойму. Чем первая строка принципиально отличается от второй?

(08.09.2015 14:03:00) Геннадий писал(а): У меня к вам ещё один вопрос. Мне нужно как-то оформить на PHP некоторое условие. Смысл его таков: имеются ряд ссылок на странице, если пользователь откроет одну из них (кликнет по ней), то произойдёт определённая команда, также если пользователь откроет любую другую ссылку (кликнет по ссылке), то соответственно тоже произойдёт нужная мне команда. Я никак не пойму, как мне оформит условие if для клика по любой ссылке, чтобы потом произошло нужное мне действие.

Тут надо больше подробностей. Что должно произойти после клика? Будет переход на другую страничку или нет? Если переход будет, то тут надо добавлять в ссылки GET запрос, идентифицирующий ссылку. Если без перехода — то Ajax запрос методом POST.

Источник

PHP: cURL alternative to file_get_contents over HTTP

In newer versions of PHP you will often find that fetching remote files using fopen or file_get_contents has been disabled in the name of security.

Here we present a function http_get_contents using the Client URL Library (a.k.a cURL) which can serve as a workaround.

The http_get_contents function

This is currently a work in progress with some enhancements in the pipeline. It is, however, already referenced from our RSS and Atom Feed Reader code so needs to be presented.

If the cURL libraries have not been activated in PHP you will get a function not found error trying to call curl_init.

Future versions will include better error handling and parsing of HTTP response headers, to detect broken links and follow redirects for example.

Sample Usage

The following code block checks whether the file address starts with http and conditionally calls either http_get_contents or file_get_contents: $file = «https://www.the-art-of-web.com/rss.xml»; $contents = preg_match(«/^http/», $file) ? http_get_contents($file) : file_get_contents($file);

The cURL approach can also be used for FTP and other protocols.

Improved Functionality

After putting this function through it’s paces we came up with a couple of improvements.

Firstly, you can now supply an array of extra options to be included in the request by passing an associative array ($opts), and secondly, a default value is included for HTTP_USER_AGENT using the name of the calling domain as the User Agent string.

Passing a non-blank User Agent string is good practice, and sometimes required to avoid your requests being blocked. See our article on parsing robots.txt for some examples.

Final version

The final addition to our script is an optional paramter where we can pass an array to be populated by cURL with information about the operation. This is useful if you’re interested in the HTTP status of the request for example.

Here is an example using the new functionality:

$curlinfo = []; $page_contents = http_get_contents($url, $curl_opts, $curlinfo); echo «

() \n»;

This will output the HTTP Status Code of the URL fetched.

Some Examples

In this example we’re getting around Facebook’s buggy IPv6 interface by forcing the connection to take place over IPv4.

Fetching and parsing the Apache response headers for an HTTP request:

Note that in all cases the CURLOPT_* constants are not to be quoted. They are not strings, but actually ‘long’ integers defined by the Client URL.

References

Источник

Аналог file get contents для обработки php?

Если в этом $path находится php скрипт, то он его не обрабатывает, а просто вытаскивает сам текст запроса, как я понял это логично, файл же, епрст. Дак вот вопросец, как можно это дело пофиксить, чтобы php код обрабатывался?

mourr

Если я правильно вас понял — вам нужно выполнить код из файла который лежит в $path
Тогда, вам следует использовать eval

$content = file_get_contents($path); eval($content);

Nuboskill

mourr

Сергей Титов: только следует уточнить — код в этом файле не должен быть обрамлен тегами PHP (например ), если они там есть их нужно предварительно вырезать — например с помощью функции str_replace

Nuboskill

Nuboskill

Nuboskill

Nuboskill

Пробовал уже include.
Немного не правильно преподал вопрос, надо было показать все ядро, в общем я ошибку исправил, всем кто откликнулся — спасибо большое 🙂

ini_set("allow_url_fopen","1"); include 'http://www.example.com/file.php?foo=1&bar=2';

Конструкция include позволяет включать удаленные файлы, если такая возможность включена в конфигурационном файле PHP.

Для того, чтобы удаленное включение файлов было доступно, необходимо в конфигурационном файле (php.ini) установить
allow_url_fopen=1

Источник

jrivero / file_get_contents_curl.php

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

// http://25labs.com/alternative-for-file_get_contents-using-curl/
function file_get_contents_curl ( $ url , $ retries = 5 )
$ ua = ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36’ ;
if (extension_loaded( ‘curl’ ) === true )
$ ch = curl_init();
curl_setopt( $ ch , CURLOPT_URL , $ url ); // The URL to fetch. This can also be set when initializing a session with curl_init().
curl_setopt( $ ch , CURLOPT_RETURNTRANSFER , TRUE ); // TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt( $ ch , CURLOPT_CONNECTTIMEOUT , 10 ); // The number of seconds to wait while trying to connect.
curl_setopt( $ ch , CURLOPT_USERAGENT , $ ua ); // The contents of the «User-Agent: » header to be used in a HTTP request.
curl_setopt( $ ch , CURLOPT_FAILONERROR , TRUE ); // To fail silently if the HTTP code returned is greater than or equal to 400.
curl_setopt( $ ch , CURLOPT_FOLLOWLOCATION , TRUE ); // To follow any «Location: » header that the server sends as part of the HTTP header.
curl_setopt( $ ch , CURLOPT_AUTOREFERER , TRUE ); // To automatically set the Referer: field in requests where it follows a Location: redirect.
curl_setopt( $ ch , CURLOPT_TIMEOUT , 10 ); // The maximum number of seconds to allow cURL functions to execute.
curl_setopt( $ ch , CURLOPT_MAXREDIRS , 5 ); // The maximum number of redirects
$ result = curl_exec( $ ch );
curl_close( $ ch );
>
else
$ result = file_get_contents( $ url );
>
if (empty( $ result ) === true )
$ result = false ;
if ( $ retries >= 1 )
sleep( 1 );
return file_get_contents_curl( $ url , — $ retries );
>
>
return $ result ;
>
?>

Источник

Замена file_get_contents на cURL

Curl и file_get_contents
если использую curl то выводит bool(false) $ku=curl_init();.

file_get_contents and cUrl
<?php $curl_handle=curl_init(); curl_setopt($curl_handle.

Подскажите curl или file_get_contents ? Для ограничения запросов по времени
Добрый день. Получаю данные со стороннего сервиса через их API (json) У сервиса есть ограничения.

File_get_contents и curl не парсят сайт
file_get_contents и curl не парсят сайт! Как я понял блокирует сайт, выдает какой то левый html.

Эксперт PHP

Использовать guzzle
А если уж очень хочется мучиться с чистым curl, то сначала curl_init, потом установить нужные параметры с curl_setopt, и потом curl_exec

Вообще это единичная ситуация когда мне понадобилось заменить запрос из-за хостера, я всегда справлялся чистым php и js.

Просто подскажите мне как отправить нужные мне данные с помощью cURL на примере

Эксперт PHP

ЦитатаСообщение от Gastiganto Посмотреть сообщение

Мне лень, к тому же примеров в интернете полно. Лучше так, ты выкладываешь что сделал и что конкретно не работает, а там разберёмся.

По запросу с данными, который указан в первом посте выдаёт

Warning: file_get_contents(https://site.ru): failed to open stream: Connection timed out in /home/h/h90570b/h90570b.beget.tech/public_html/process.php on line 51 bool(false)

51 строка это сама отправка запроса

$result = file_get_contents(‘https://site.ru’, false, $context); //отправляем запрос

Погуглив ответы на такую проблему, везде один и тот же ответ — используйте cURL и проблема исчезнет

«Данная ошибка возникает при использовании функции file_get_contents и может быть вызвана множеством факторов. Впрочем, решение ее остаточно простое.

Не будем копаться в причинах недоступности URL по простому обращению file_get_contents, так как это могут быть и настройки сервера или php одной стороны — так и аналогичные параметры стороны второй.

Я в своей практике при получении подобной ошибки заменяю вызов file_get_contents на использование cURL.»

Источник

Читайте также:  Python ряд простых чисел
Оцените статью