Чтение удаленных файлов с использованием PHP - PullRequest
0 голосов
/ 09 июня 2009

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

Позвольте мне объяснить:

page1.php

$rs_1 = result from remote page a;
$rs_2 = result from remote page b;
$rs_3 = result from remote page c;

header("Location: page2.php?r1=".$rs_1."&r2=".$rs_2."&r3=".$rs_3)

Ответы [ 3 ]

4 голосов
/ 09 июня 2009

Возможно, вы сможете использовать file_get_contents , а затем убедитесь, что вы urlencode данных, когда вы создаете URL перенаправления

$rs_1 =file_get_contents($urlA);
$rs_2 =file_get_contents($urlB);
$rs_3 =file_get_contents($urlC);


header("Location: page2.php?".
  "r1=".urlencode($rs_1).
  "&r2=".urlencode($rs_2).
  "&r3=".urlencode($rs_3));

Также обратите внимание, что URL-адрес должен содержать не более 2000 символов .

Хотите отправить более 2000 символов?

Если вы хотите использовать больше данных, чем позволяло бы 2000 символов, вам нужно POST. Один из методов здесь - отправить клиенту HTML-код с формой, содержащей ваши данные, и сделать так, чтобы javascript автоматически отправлял их при загрузке страницы.

Форма может иметь кнопку по умолчанию с надписью «Нажмите здесь, чтобы продолжить ...», которую ваш JS изменит на «Пожалуйста, подождите ...». Таким образом, пользователи без javascript будут управлять им вручную.

Другими словами, что-то вроде этого:

<html>
<head>
<title>Please wait...</title>
<script>

function sendform()
{
   document.getElementById('go').value="Please wait...";
   document.getElementById('autoform').submit();
}
</script>
</head>    
<body onload="sendform()">
<form id="autoform" method="POST" action="targetscript.php">
<input type="hidden" name="r1" value="htmlencoded r1data here">
<input type="hidden" name="r2" value="htmlencoded r2data here">
<input type="hidden" name="r3" value="htmlencoded r3data here">
<input type="submit" name="go" id="go" value="Click here to continue">
</form>

</body>
</html>
1 голос
/ 09 июня 2009

file_get_contents, безусловно, помогает, но для удаленного скриптинга CURL - лучшие варианты.

Это хорошо работает, даже если allow_url_include = On (в вашем php.ini)

$target = "Location: page2.php?";

$urls = array(1=>'url-1', 2=>'url-2', 3=>'url-3');
foreach($urls as $key=>$url) {
    // get URL contents
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    $target .= "&r".$key."=".urlencode($output));
}
header("Location: ".$target);
0 голосов
/ 09 июня 2009

Вы можете использовать функцию file_get_contents. Документация по API: http://no.php.net/manual/en/function.file-get-contents.php

$file_contents = file_get_contents("http://www.foo.com/bar.txt")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...