fopen - Webseite

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Original geschrieben von Quetschi
    -mit doppelten Zeilenumbruch (\r\n\r\n) abschließen.
    doppelt ist mehr als einfach
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #32
      Wenn du schon mal mit web-sniffer getestet hast: Kopier dir doch einfach mal den Request raus und setz ihn in deinem Script ab.
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #33
        danke für eure hilfe, so komm ich zum ziel, wenn's bestimmt auch einfacher geht:

        PHP-Code:
        $fp fsockopen('www.schnabbeldi.de',80$errno$error,5)OR  die($error."(".$errno.")");  


        $req =     "HEAD /pups.mp3 HTTP/1.1\r\n";
        $req .=     "Host: www.schnabbeldi.de'\r\n\r\n";
        $req .=     "Connection: close\r\n\r\n";


        fwrite($fp$req);   

        while(!
        feof($fp)) {        
          
        $buffer fread($fp1025);      
          
        $buffer str_replace("\r\n"'<br>'."\n"$buffer);       
        }    
                                
        fclose($fp);

        $HTTPrequ explode("<br>",$buffer);  // in array splitten
        echo substr($HTTPrequ[6],16,50); // wert 7 beschnippeln
                                             // und ausgabe der dateigröße 
        und schon habe ich die filesize einer entfernten datei
        Zuletzt geändert von kalleplom; 12.08.2005, 20:11.
        fragen macht spass, denken nicht

        Kommentar


        • #34
          Hm, klappt aber nur, wenn der Content-Length-Header der 7. ist. Also selbst wenn du es nur für ein bestimmtes File geschrieben hast, ist es Essig damit, sobald sich an der Serverkonfiguration was ändert und ein weiterer Header mitkommt (Cacheing oder sonstwas).
          PHP-Code:
          <?php
          function remote_filesize($uri$verbose FALSE) {
              
          $p_uri parse_url($uri);
              if (empty(
          $p_uri['host'])) return FALSE;
              if (empty(
          $p_uri['port'])) $p_uri['port'] = 80;

              
          $fp fsockopen($p_uri['host'], $p_uri['port'], $errno$error5)
                    or die(
          $error."(".$errno.")");

              if (!isset(
          $p_uri['path']) || $p_uri['path'] == '/')
                  
          $req '/';
              else
                  
          $req substr($uristrpos($uri$p_uri['path']));
              
          $req "HEAD $req HTTP/1.1\r\n"
                    
          ."Host: {$p_uri['host']}\r\n"
                    
          ."Connection: close\r\n"
                    
          ."\r\n";

              if (
          $verbose != FALSE)
                  echo 
          '<b>SEND:</b>'
                      
          ."(to {$p_uri['host']}:{$p_uri['port']})"
                      
          ."<pre>$req</pre>";

              
          fwrite($fp$req);
              
          $buf '';
              while (!
          feof($fp)) $buf .= fread($fp1025);
              
          fclose($fp);

              if (
          $verbose != FALSE)
                  echo 
          "<b>RECV:</b><pre>$buf</pre>";

              if ((
          $pos strpos($buf'Content-Length: ')) !== FALSE) {
                  return (int)
          substr($buf,
                                     
          $pos+strlen('Content-Length: '),
                                     
          strpos(substr($buf$pos), "\r\n")
                                     );
              }
              return 
          FALSE;
          }
          ?>
          Das hier ist auch nicht das Gelbe vom Ei, aber zumindest bekommt man die Dateigröße, wenn sie nur irgendwo in der Antwort auftaucht.
          Viel ausgereifter aber dafür nur mit Curl: http://www.php.net/manual/de/functio...size.php#47552
          Zuletzt geändert von onemorenerd; 12.08.2005, 21:35.

          Kommentar


          • #35
            wäre es nicht sinnvoller, einfach ein regexp über die antwort laufen zu lassen? hat "matthijs at rohs dot nl" doch auch so gelöst.

            Kommentar


            • #36
              PHP-Code:
              function remotesize($URL){
                  
              $array_url parse_url($URL);  // URL in seine Bestandtteile zerlegen
                  
                  
              $fp fsockopen($array_url[host],80$errno$error,5)OR  die($error."(".$errno.")");
                          
              // header-request an "www.xxx.de"  
                  
              $req =     "HEAD ".$array_url[path]." HTTP/1.1\r\n"// pfad zur datei
                  
              $req .=     "Host:".$array_url[host]."\r\n\r\n";         // host "www.xxx.de"
                  
              $req .=     "Connection: close\r\n\r\n";                    // verbindung schliessen
                  
                  
              fwrite($fp$req);   // request string in socket schreiben
                  
              while(!feof($fp)){    //    bis ende des replies
                      
              $buffer fread($fp1025);        // 1025 bytes lesen
                     
              $buffer str_replace("\r\n""<br>\n"$buffer); // html zeilenumbrüche erzeugen      
                  
              }    
                  
              fclose($fp); // datei schliessen
                  
                  
              return (int)substr($buffer,strpos($buffer"Content-Length: ")+16,); 
                  
              // aus string filesize lesen,nach int casten und weg damit...

              also ich hab jetzt meine funktion, und so geht's...
              danke an alle!
              fragen macht spass, denken nicht

              Kommentar

              Lädt...
              X