PHP kullanarak uzak dosyaları Okuma

3 Cevap

Herkes nasıl 3 uzak dosyalara kadar okuma ve şimdi başlıklarını kullanarak, arama komut dosyası tarafından bir sayfaya gönderilecek bir sorgu dizesinde sonuçları derlemek için bana söyleyebilir.

Anlatayım:

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 Cevap

Eğer yönlendirme url oluşturmak zaman emin verileri UrlEncode yapmak sonra, file_get_contents kullanmak mümkün olabilir

$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));

Ayrıca, bu not URL should be kept under 2000 characters.

Want to send more than 2000 chars?

2000 karakter sağlayacak daha fazla veri kullanmak istiyorsanız, bunu POST gerekir. Burada bir teknik veri içeren bir form ile geri istemciye bazı HTML göndermek olacaktır, ve javascript otomatik olarak sayfa yüklendiğinde sunabilirsiniz.

Formu "devam etmek için burayı tıklayın ..." JS değiştirmek hangi "lütfen bekleyiniz ..." diyor varsayılan düğme olabilir. Böylece javascript olmadan kullanıcıların manuel olarak götürmek istiyorsunuz.

: Başka bir deyişle, böyle bir şey

<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>

file_get_contents kesinlikle yardımcı olur, ancak uzaktan komut dosyası CURL için daha iyi seçenekler olduğunu.

Bu iyi çalışıyor olsa bile 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);

You can use the file_get_contents function. API documentation: http://no.php.net/manual/en/function.file-get-contents.php

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

Dosya birden fazla satır ya da çok, çok uzun satırları içeren eğer HTTP post yerine uzun bir URL kullanarak düşünmek gerekir unutmayın.