Как получить 'echo' -данный контент из URL-внешнего-php-файла - PullRequest
1 голос
/ 30 июня 2010

У меня есть 2 файла на 2 разных серверах:

file1.php - находится на сайте 1 - я передаю параметр, и сценарий повторяет ответ, который зависит от (естьфункция переданного параметра - everithink в порядке, когда я обращаюсь к файлу через браузер, например

   http://site1.com/file1.php?parameterValue

file2.php - находится на сайте 2 - file2 должен отправить параметр в file1.phpИ получить эхо-вывод из него как переменную.

Я пытался сделать это тремя разными способами, но никто не работал.

путь 1. -------

function get_data($url)
{
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}  

$f="http://site1.com/file1.php?parameterValue";
$returned_content = get_data($f);
echo "=== $returned_content ===";exit;

путь 2. -------

$f="http://site1.com/file1.php?parameterValue";
$returned_content='';
$file = fopen ($f, "r");
if (!$file) {
    echo "<p>Unable to open remote file.\n";
    exit;
    }
while (!feof ($file))  $returned_content.= fgets ($file, 1024);
fclose($file);
echo "=-= $returned_content =-=";exit;

путь 3. -------

$f="http://site1.com/file1.php?parameterValue";
$returned_content=implode('',file($f));
echo "=-= $returned_content =-=";exit;

НО $ return_content - пустая строка ...

Кто-нибудь может мне помочь?Заранее спасибо!

Христо

Ответы [ 4 ]

5 голосов
/ 30 июня 2010

Что произойдет, если вы попробуете:

<?PHP
$f="http://site1.com/file1.php?parameterValue";
$data = file_get_contents($f);
echo $data;

?

1 голос
/ 01 июля 2010

Вы можете изменить свою первую версию с помощью CURL, чтобы проверить наличие ошибок. Таким образом, вы слепо предполагаете, что запрос curl сработал, и просто возвращаете все, что вернул curl_exec().

В mininum у вас должно быть что-то вроде:

$data = curl_exec($ch)
$err = curl_error($ch);
curl_close($ch);
if ($data === FALSE) { // curl_exec returns boolean FALSE if something blew up
   return($err);
} else {
   return($data);
}
0 голосов
/ 01 июля 2010

Это была моя ошибка - мой скрипт в file1 был сложным, и я пропустил еще один параметр, от которого он зависит.Итак, после того, как я исправлю скрипт, все работает нормально.

Способ 2 и 3 работает правильно; Способ 1 Я не проверял.Идея goog - использовать предложение MARC B

, предполагаемое TIMDEV , тоже отлично работает.

Я хотел бы поблагодарить васпомогите мне так любезно!

Спасибо, друзья!

С уважением Христо

0 голосов
/ 30 июня 2010

Я протестировал все три из этих методов, и все работали с использованием

$f = "http://google.com/";

Я бы проверил конфигурацию site1 и file1.php. Возможно, это блокировка запросов на основе User-Agent?

...