Strona 1 z 1

[PHP] odczyt danych z pliku txt znajd. sie na innym serwerze

: czw maja 01, 2008 10:40 am
autor: dodger
Jak odczytac dane z pliku tesktowego który znajduje sie na innym serwerze:
zalózmy sciezka do pliku txt to:
http://www.sciezka.pl/folder/plik.txt

Skrypt php znajduje sie na innym serwerze i potrzebuje dane z powyższego pliku.
Funkcją fopen i fread nie udalo mi sie
Jak odczytac dane z tego pliku?

Re: [PHP] odczyt danych z pliku txt znajd. sie na innym serwerze

: sob maja 03, 2008 6:20 pm
autor: Pomar1
Nie sądzisz że to... niemożliwe? Przecierz tak każdy z czyjegoś serwera może sobie dane ściągać. Jak masz dwa serwery to zrzuć wszystko do jednego. Albo chociaż ten jeden plik.

Re: [PHP] odczyt danych z pliku txt znajd. sie na innym serwerze

: sob maja 03, 2008 11:00 pm
autor: ooo_michal
Akurat plik txt chyba by się dało. Ale trzebaby uzyć php jako klienta http a to już wyższa szkoła jazdy. Sądzę, że niewiele osób byłoby w stanie to zrobić a nawet jeśli ktoś by się znalazł to napewno za darmo swoją wiedzą i umiejetnościami nie chciałby się dzielić.

Re: [PHP] odczyt danych z pliku txt znajd. sie na innym serwerze

: ndz maja 04, 2008 7:08 am
autor: guitarnet_pl
fopen()
http://us.php.net/manual/pl/function.fopen.php

np:
<?php
$handle = fopen("/home/rasmus/plik.txt", "r");
$handle = fopen("/home/rasmus/plik.gif", "wb");
$handle = fopen("http://www.przyklad.com/", "r");
$handle = fopen("ftp://uzytkownik:[email protected]/jakisplik.txt", "w");
?>

i teraz majac juz chwyt do pliku file_get_contents()

gotowy kod:

Kod: Zaznacz cały

<?php
function open_page($url,$f=1,$c=2,$r=0,$a=0,$cf=0,$pd=""){
 global $oldheader;
 $url = str_replace("http://","",$url);
 if (preg_match("#/#","$url")){
  $page = $url;
  $url = @explode("/",$url);
  $url = $url[0];
  $page = str_replace($url,"",$page);
  if (!$page || $page == ""){
   $page = "/";
  }
  $ip = gethostbyname($url);
 }else{
  $ip = gethostbyname($url);
  $page = "/";
 }
 $open = fsockopen($ip, 80, $errno, $errstr, 60);
 if ($pd){
  $send = "POST $page HTTP/1.0\r\n";
 }else{
  $send = "GET $page HTTP/1.0\r\n";
 }
 $send .= "Host: $url\r\n";
 if ($r){
  $send .= "Referer: $r\r\n";
 }else{
  if ($_SERVER['HTTP_REFERER']){
   $send .= "Referer: {$_SERVER['HTTP_REFERER']}\r\n";
  }
 }
 if ($cf){
  if (@file_exists($cf)){
   $cookie = urldecode(@file_get_contents($cf));
   if ($cookie){
    $send .= "Cookie: $cookie\r\n";
    $add = @fopen($cf,'w');
    fwrite($add,"");
    fclose($add);
   }
  }
 }
 $send .= "Accept-Language: en-us, en;q=0.50\r\n";
 if ($a){
  $send .= "User-Agent: $a\r\n";
 }else{
  $send .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";
 }
 if ($pd){
  $send .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
  $send .= "Content-Length: " .strlen($pd) ."\r\n\r\n";
  $send .= $pd;
 }else{
  $send .= "Connection: Close\r\n\r\n";
 }
 fputs($open, $send);
 while (!feof($open)) {
  $return .= fgets($open, 4096);
 }
 fclose($open);
 $return = @explode("\r\n\r\n",$return,2);
 $header = $return[0];
 if ($cf){
  if (preg_match("/Set\-Cookie\: /i","$header")){
   $cookie = @explode("Set-Cookie: ",$header,2);
   $cookie = $cookie[1];
   $cookie = explode("\r",$cookie);
   $cookie = $cookie[0];
   $cookie = str_replace("path=/","",$cookie[0]);
   $add = @fopen($cf,'a');
   fwrite($add,$cookie,strlen($read));
   fclose($add);
  }
 }
 if ($oldheader){
  $header = "$oldheader<br /><br />\n$header";
 }
 $header = str_replace("\n","<br />",$header);
 if ($return[1]){
  $body = $return[1];
 }else{
  $body = "";
 }
 if ($c === 2){
  if ($body){
   $return = $body;
  }else{
   $return = $header;
  }
 }
 if ($c === 1){
  $return = $header;
 }
 if ($c === 3){
  $return = "$header$body";
 }
 if ($f){
  if (preg_match("/Location\:/","$header")){
   $url = @explode("Location: ",$header);
   $url = $url[1];
   $url = @explode("\r",$url);
   $url = $url[0];
   $oldheader = str_replace("\r\n\r\n","",$header);
   $l = "&#76&#111&#99&#97&#116&#105&#111&#110&#58";
   $oldheader = str_replace("Location:",$l,$oldheader);
   return open_page($url,$f,$c,$r,$a,$cf,$pd);
  }else{
   return $return;
  }
 }else{
  return $return;
 }
}
/////////////
////Usage////
/////////////
$url = "http://www.php.net";
$f = 1;
$c = 2;//1 for header, 2 for body, 3 for both
$r = NULL;
$a = NULL;
$cf = NULL;
$pd = NULL;
$page = open_page($url,$f,$c,$r,$a,$cf,$pd);
print $page;
?>
albo na socketach:

Kod: Zaznacz cały

<?php for ($i = 0; $i < 50; $i++) {
    $errno = $errstr = "";
    //$ip = gethostbyname("php.net");  $a = fsockopen($ip,22,$errno,$errstr,10);  //FAST way
    $a = fsockopen("php.net",22,$errno,$errstr,10); //SLOW way
    $ab = fread($a,4096); unset($a, $ab);
} ?>
pozostaje oczywiscie uzycie biblioteki CURL[/i]