TS: HTTP und Seiten-Lade-Funktion

Beitrag lesen

Hallo und guten Morgen,

ich habe mir da eine Requestfunktion zusammengebastelt, die leider nicht bei allen Seiten funktioniert. Es gibt welche, da kommen nur die Header und kein Content.

Bei http://forum.selfhtml.org steht über dem Content "1c82" und darunter eine "0".

Leider finde ich den Fehler nicht, bzw. verstehe die Logik nicht, nach der bei manchen Requests eben nur die Header kommen.

<?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 = '';
        $_headers = array();
        
        while (!feof($fp) && (false !== ($line = fgets($fp, 1024))))
        {
			if ($headerflag)
			{
				if ($line == "\r\n") 
                {    
                    $headerflag = false;
                    continue;
                }
                
                $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);

echo "<pre>\r\n";
echo htmlspecialchars(print_r($_page['headers'], 1)) . "\r\n";
echo "<hr>\r\n";
echo htmlspecialchars($_page['body']);
echo "</pre>\r\n";

?>

Grüße
TS

akzeptierte Antworten

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