Datei einlesen fsockopen komische Zeilen

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

  • Datei einlesen fsockopen komische Zeilen

    Ich erstelle auf Server1 eine Datei wie folgt:

    PHP-Code:
    $sql "SELECT ban_email
            FROM " 
    BANLIST_TABLE;
    if ( !(
    $result $db->sql_query($sql)) )
    {
        
    message_die(GENERAL_ERROR"Could not obtain ban information."''__LINE____FILE__$sql);
    }

    $data = array();

    if (
    $row $db->sql_fetchrow($result))
    {
        do
        {
            
    $data[] = $row;
        }
        while (
    $row $db->sql_fetchrow($result));
        
    $db->sql_freeresult($result);
    }

    print_r(serialize($data)); 
    Auf Server2 lese ich die Daten von Server1 wieder ein wie folgt:
    PHP-Code:
    function read_spamdata()
    {
        
    $errno 0;
        
    $errstr '';
        if (
    $fsock fsockopen('phpbb-de.com'80$errno$errstr5))
        {
            
    fputs($fsock"GET /filter.txt HTTP/1.1\r\n");
            
    fputs($fsock"HOST: phpbb-de.com\r\n");
            
    fputs($fsock"Connection: close\r\n\r\n");

            
    $get_data false;

            while (!
    feof($fsock))
            {
                if (
    $get_data)
                {
                    
    $spamdata .= fread($fsock1024);
                }
                else
                {
                    if (
    fgets($fsock1024) == "\r\n")
                    {
                        
    $get_data true;
                    }
                }
            }
            
    fclose($fsock);
        }
        if ( !empty(
    $spamdata) )
        {
            return 
    $spamdata;
        }
        else
        {
            return 
    false;
        }

    Der Inhalt der Datei insgesamt:
    Code:
    HTTP/1.1 200 OK
    Date: Thu, 22 Jun 2006 18:15:44 GMT
    Server: Apache/2.0.52
    X-Powered-By: PHP/4.3.11 expires=Fri, 22-Jun-07 18:15:44 GMT;
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=ISO-8859-1
    ac3 a:55: {i:0;a:1: {s:9:"ban_email";s:11:"*@m-s-n.net";}i:6;a:1:  {s:9:"ban_email";s:9:"*@mail.ru";}} 0
    Durch die Filterung entfält der Header:
    PHP-Code:
                    if (fgets($fsock1024) == "\r\n")
                    {
                        
    $get_data true;
                    } 
    Aber am Anfang steht immer noch "ac3 " und am Ende " 0". Woher kommen diese Werte und wie werde ich sie los?

    Gruß
    Zuletzt geändert von mgutt; 22.06.2006, 20:26.
    mein Honda Forum | meine Scripte

  • #2
    Ja nun, Du holst Dir ja wohl auch immer eine Zeile der Rückgabedatei. Dementsprechend bekommst Du den gesamten Inhalt Deiner Serialized Daten.
    Also hilft Dir da wohl nur ein Abschneiden vorne und hinten.
    Aber warum machst Dud as überhaupt so kompliziert mit Sockets und haste nciht gesehen. Einfacher wäre doch,wenn der Server 1 eine ganz normale Textdatei erzeugt und Du beim Auslesen es mit einem normalen fopen machst. Dann hast Du die Dateilesefunktionen und alles wird viel einfacher.

    Gruss Niels

    Kommentar


    • #3
      Das geht nicht, weil Server2 manchmal "allow_url_fopen" deaktiviert hat. (Sicherheitseinstellung)

      Wofür steht denn das "ac3 "? Wird genau diese Zeichenkette immer erstellt?
      mein Honda Forum | meine Scripte

      Kommentar


      • #4
        *bump*
        mein Honda Forum | meine Scripte

        Kommentar


        • #5
          Wofür steht denn das "ac3 "? Wird genau diese Zeichenkette immer erstellt?
          evtl hilft dieses das zu erklären:
          http://www.html-world.de/program/http_9.php
          Wir werden alle sterben

          Kommentar


          • #6
            Was genau willst du denn aus der Textdatei schneiden ? ac3 und 0 stehen in der letzten Zeile der Datei.
            Willst du denn nur die Header abschneiden und den Inhalt der Datei auf ne Var speichern ?
            PHP-Code:
            $check false;
            while(!
            feof($fsock)){
                
            //der letzte Header sollte mit einem doppelten CRLF versehen sein
                
            if(strpos('\r\n\r\n',fgets($fsock) !== false && $check === false){
                    
            $check true;
                 }elseif(
            $check === true){
                    
            $spamdata .= fgets($fsock);
                 }else{
                     continue;
                 }

            So würde ich das probieren um die Header abzuschneiden.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Naja im Endeffekt will ich einfach nur das was ich hier sehe:
              http://phpbb-de.com/filter.txt

              Ohne den Anfang (AC3) und das Ende (0) was ich beim Auslesen aufgetischt bekomme.
              mein Honda Forum | meine Scripte

              Kommentar


              • #8
                -
                man (ich) sollte zuerst alles lesen

                edit: ich denke auch ,dass dieser link von combieeventuell hilft. Vielen Dank, interessanter hinweis.
                Zuletzt geändert von mäander_; 10.07.2006, 20:29.

                Kommentar


                • #9
                  Dann stelle doch fest ob 'ac3' im String vorkommt und schneide den Substring (alles zwischen ac3 und 0) heraus.
                  PHP-Code:
                  $spamdata substr($spamdata,strpos($spamdata,'ac3')+4,strlen($spamdata)-1); 
                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Original geschrieben von jahlives
                    Dann stelle doch fest ob 'ac3' im String vorkommt und schneide den Substring (alles zwischen ac3 und 0) heraus.
                    rein so als Prognose würde ich es wagen dass dieser Spielzweig ein Irrweg wird.

                    Kommentar


                    • #11
                      Original geschrieben von mgutt
                      Wofür steht denn das "ac3 "? Wird genau diese Zeichenkette immer erstellt?
                      (a) ac3 steht für 2755
                      (b) nein

                      Kommentar


                      • #12
                        Die "chunked" Übertragung macht mir noch Kopfzerbrechen.

                        Kann es also passieren, dass mein Array in der Mitte "zerschnitten" wird und dann wieder eingeleitet wird mit dem Rest und jeweils mit der Angabe der Dateigröße?

                        So wie hier aufgelistet:
                        HTTP/1.1 200 OK
                        Server: Apache/1.3.27
                        Transfer-Encoding: chunked
                        Content-Type: text/html; charset=iso-8859-1
                        Trailer: Cache-Control

                        ee1
                        [Die ersten 3809 Zeichen der Datei]

                        ffb
                        [Weitere 4091 Zeichen der Datei]

                        c40
                        [Die letzten 3136 Zeichen der Datei]

                        0
                        Cache-Control: no-cache

                        [Ende]
                        D.h. ich mache lieber ein preg_match und suche nach "\r\n" und nach einer Hexadezimalzahl mit 3-8 zeichen (zur begrenzung) gefolgt von einem zeilenumbruch?!

                        Nur ich weiß nicht was ich machen soll, wenn die Übertragung in mehreren Teilen stattgefunden hat
                        Zuletzt geändert von mgutt; 16.08.2006, 11:59.
                        mein Honda Forum | meine Scripte

                        Kommentar

                        Lädt...
                        X