Jörg Reinholz: HTTP und Seiten-Lade-Funktion

Beitrag lesen

Moin!

Zu erst habe ich das mal sauber eingerückt ...

<?php  ### get_page.php

#==================================================================================================
function get_page($url, $format=0) {
    $url = parse_url($url);
    $host = isset($url['host']) ? $url['host'] : '';
    $port = isset($url['port']) ? $url['port'] : 80;
    $path = (isset($url['path']) ? $url['path'] : '/') . (isset($url['query']) ? '?' . $url['query'] : '');

    $fp = fsockopen($host, $port, $errno, $errstr, 3);
    if ($fp) {
        $hdr = "GET $path HTTP/1.1\r\n";
        $hdr .= "Host: $host \r\n";
#        $hdr .= "Cookie: PHPSESSID=9d97b2ff179ed2e6897a197a2c6a0785";
        $hdr .= "Connection: Keep-Alive\r\n\r\n";
        fwrite($fp, $hdr);
        $headerflag = true;
        $body = array();
        $_headers = array();

        while (!feof($fp) && (false !== ($line = fgets($fp, 1024))))  {
            if ($headerflag)  {
                if ($line == "\r\n") {
                    $headerflag = false;
                } else {
                    $line = trim($line);
                    $_headerline = explode(': ', $line, 2);
                    if ($format)  {
                        if (isset($_headerline[1]))  {
                            $_headers[$_headerline[0]] = $_headerline[1];
                        } elseif (strpos(strtoupper($_headerline[0]), 'HTTP') === 0 )  {
                            $_http = explode(' ', $_headerline[0]);
                            $_headers['version'] = $_http[0];
                            $_headers['status']  = (isset($_http[1])?$_http[1]:'900');
                            $_headers['message'] = (isset($_http[2])?$_http[2]:'');
                        } else {
                            $_headers[] = $_headerline[0];
                        }
                    }  else   {
                        $_headers[] = $line;
                    }
                }
            } else {
                $body[] = $line;
            }
        }

        fclose($fp);
        return array('headers' => $_headers, 'body' => $body);
    }

    return false;
}

#================================================================================================

$_page = get_page('http://forum.selfhtml.org', 1);

var_dump($_page['headers']);

array_shift($_page['body']);
array_pop($_page['body']);
array_pop($_page['body']);

echo implode('', $_page['body']);

ein wenig bereinigt und manches auch so verrückt ... und dann gesehen: geht doch. Warum jetzt manchmal nur ein header kommt und kein Inhalt? Was steht denn dann in den headern?

Jörg Reinholz

0 49

HTTP und Seiten-Lade-Funktion

TS
  • https
  • php
  1. 0

    HTTP und Seiten-Lade-Funktion, Nachtrag

    TS
    1. 0

      HTTP und Seiten-Lade-Funktion, chunked

      TS
      1. 0
        dedlfix
        1. 0
          TS
          1. 0
            dedlfix
            1. 0
              TS
            2. 0
              Jörg Reinholz
          2. 0
            Der Martin
            • https
            1. 0
              Jörg Reinholz
              1. 0
                TS
                • https
                • php
                • webserver
                1. 0
                  Jörg Reinholz
          3. 0
            woodfighter
            1. 0
              TS
              1. 0
                Jörg Reinholz
                1. 0
                  TS
                  1. 0
                    Der Martin
                    1. 0

                      HTTP und Seiten-Lade-Funktion, Unterschiede?

                      TS
                  2. 0
                    Jörg Reinholz
                    1. 0

                      HTTP und Seiten-Lade-Funktion, Blinker

                      TS
  2. 0
    Jörg Reinholz
    1. 0
      TS
      1. 0
        Jörg Reinholz
        1. 0
          TS
          1. 0
            Jörg Reinholz
  3. 0

    Billige Teillösung - typisch PHP

    TS
    1. 0
      dedlfix
      1. 0
        Tabellenkalk
        • meinung
        1. 0
          Der Martin
          1. 0

            [LÖSUNG], wie immer ein PHP-Bug/Unsinnigkeit

            TS
            • php
            • zur info
            1. 0
              Jörg Reinholz
              1. 0
                TS
                1. 0
                  Jörg Reinholz
                  1. 0
                    TS
                    1. 0
                      Jörg Reinholz
            2. 0
              dedlfix
        2. 0
          TS
          1. 0
            TS
            1. 0
              Jörg Reinholz
              1. 0
                TS
                • php
                • zur info
                1. 0
                  Jörg Reinholz
                  1. 0
                    TS
                    1. 0
                      Jörg Reinholz
                      1. 0

                        Encoding, htmlspecialchars()

                        TS
                        1. 0
                          Jörg Reinholz
                          1. 0
                            Tabellenkalk
                            • zur info
                            1. 0
                              Tabellenkalk
  4. 0

    Bei welchen HTTP Status Codes muss Body gelesen werden?

    TS
    1. 0
      dedlfix