php textausgabe mit wget downloaden

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von Kesar_Neron, 16.11.2006.

  1. #1 Kesar_Neron, 16.11.2006
    Kesar_Neron

    Kesar_Neron Tripel-As

    Dabei seit:
    25.03.2006
    Beiträge:
    218
    Zustimmungen:
    0
    Hallo zusammen,

    ich verzweifle hier an einem kleinen Problem. Derzeit arbeite ich an einer Art onlinedienst, der schwarze listen für squidguard (oder andere) bereitstellen soll. Nun hänge ich an dem Punkt, wo ich eine Liste mit gesperrten domains generieren möchte. DAS ist an sich kein Problem. Nur bekomme ich es komischer weise nicht hin, dass wget die ausgeb herunter läd. Vie Browser ist es ueberaupt keine Schwierigkeit.

    Hier mal mein php code:
    PHP:

    <?php
     
    if(isset($_GET['dl_kat']))
     {
        if(
    $_GET['status']== "checked")
        {
         
    $query "SELECT eintrag FROM blacklist WHERE kategorie_id='$_GET[dl_kat]' AND status='1'";
        }
        if(
    $_GET['status']== "all")
        {
         
    $query "SELECT eintrag FROM blacklist WHERE kategorie_id='$_GET[dl_kat]'";
        }

        
    $query_katname "SELECT name FROM kategorie WHERE id='".$_GET['dl_kat']."'";
        
    $result_katname mysql_query($query_katname);
        
    $daten_katname mysql_fetch_array($result_katname);

        
    $result mysql_query($query);
        
    $anzahl mysql_num_rows($result);
        
              
    header("Content-Type: text/plain");
              
    header("Content-Disposition: attachment; filename=blacklist_".$daten_katname['name'].".txt");
          
        for(
    $i=0$i<$anzahl$i++)
        {
          
    $daten mysql_fetch_array($result);
          
          echo 
    $daten['eintrag']."\r\n";
        }
     }
    ?>
    Das Skript tut folgendes: Es uebernimmt die Kategorie ID und stellt dann anhand des gewünschten Stati die benötigte Query bereit. Diese geht an die Datenbank und es wird die anzahl der Zeilen ermittelt. Dann werden noch ein paar Headereigentschaften gesetzt, damit die ausgabe richtig erkannt wird und im anschluss werden die zutreffenden Datensätze ausgegeben.

    Wie oben schon geschrieben, wenn ich die Datei via Browser herunterladen möchte funktioniert alles bestens. Nur passiert absolut gar nichts, wenn ich die Url an wget weitergebe.

    Hat vielleicht jemand einen tipp für mich?

    Gruß

    Kesar
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 16.11.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Dass garnix passiert, glaube ich dir nicht.
    wget spuckt doch normalerweise aus was es macht.
    Was erscheint denn in der Konsole, wenn du wget darauf startest?

    Wie sieht der Befehl für wget aus?

    Gruß Wolfgang
     
  4. #3 Kesar_Neron, 16.11.2006
    Kesar_Neron

    Kesar_Neron Tripel-As

    Dabei seit:
    25.03.2006
    Beiträge:
    218
    Zustimmungen:
    0
    Hallo,

    also, meine Konsole sieht nach einem einfachen downloadversuch wie folgt aus:


    wget http://www.edv-bode.de/projekt_blacklist_download.php?dl_kat=3&status=checked
    --20:25:21-- http://www.edv-bode.de/projekt_blacklist_download.php?dl_kat=3
    => `projekt_blacklist_download.php?dl_kat=3'
    Auflösen des Hostnamen »www.edv-bode.de«.... [1] 23384
    kesar@217-20-118-124:~$ 217.20.118.124
    Verbindungsaufbau zu www.edv-bode.de[217.20.118.124]:80... verbunden.
    HTTP Anforderung gesendet, warte auf Antwort... 200 OK
    Länge: nicht spezifiziert [application/octetstream]

    [ <=> ] 0 --.--K/s

    20:25:22 (0.00 B/s) - »projekt_blacklist_download.php?dl_kat=3« gespeichert [0]


    Und genau hier bleibt er ewig und drei tage hängen, oder eben bis ich mit strg+c alles abbreche.

    Ich habe leider keine ahnung, woran es liegen könnte... Achso, eines noch: selbst nach 5 min Wartezeit hat die angelegte (vermeindlich) downgeloadete Datei 0 bytes.

    Gruß
     
  5. #4 x-lette, 16.11.2006
    x-lette

    x-lette Mitglied

    Dabei seit:
    23.04.2006
    Beiträge:
    44
    Zustimmungen:
    0
    Ort:
    Berlin
    PHP ist nicht grad meine Stärke, aber mir fällt da auf, daß du zwar im Skript den Header auf "Content-Type: text/plain" setzt, wget aber [application/octetstream] herunterladen will.
    Da scheint die Kommunikation schief zu laufen oder der Header wird nicht korrekt gesetzt.
    Werden Sonderzeichen benutzt? Oder gibt es irgendeine Art von Preface zum ausgegebenen Text?
    Eventuell kann dir das Firefox-Plugin tamper-data weiterhelfen: damit kannst du die gesendeten Daten des Servers analysieren und bekommst u.a. alle Header angezeigt.
    Außerdem könntest du versuchen, im Skript die Länge zu spezifizieren und mit auszugeben.

    Gruß
    XL
    P.S.: wenn es gar nicht will, dann hilft immer noch eine Analyse mit ethereal! :)
     
  6. Jabo

    Jabo Aufgabe ohne Minister

    Dabei seit:
    12.10.2006
    Beiträge:
    1.322
    Zustimmungen:
    0
    Ort:
    Hamburg
    headers_sent() ??

    Hallo,

    dazu fällt mir gerade ein, daß header() doch überhaupt nur funktioniert, wenn noch nichts vorher gesendet wurde (weil dabei halt bereits Header anfallen und nur die gelten, die wirklich als erstes kommen)... das Beispiel scheint zwar nichts zu senden, aber man sieht auch nicht daran, ob es ein Ausschnitt von irgend was ist oder von etwas gerufen wird, das schon was gesendet hat.

    Das kann man gut testen, indem man vor die Zeile "headers_sent()" packt (true, wenn schon was gesendet wurde - false wenn nicht)
    PHP:
    if(headers_sent(){
       echo 
    "zu spät!";
    }
    header("Content-Type: text/plain");
    Sorry, wenn das jetzt überflüssig war, aber s.o. .... man weiß nicht, in welchem Zusammenhang das Beispiel läuft.
     
  7. #6 Kesar_Neron, 16.11.2006
    Kesar_Neron

    Kesar_Neron Tripel-As

    Dabei seit:
    25.03.2006
    Beiträge:
    218
    Zustimmungen:
    0
    @x-lette: Es kann gut sein, dass sich zwischen den beiden Darstellungen etwas verändert hat. Wenn dann ist es allerdings kein Fehler, sondern einfach nur der Beweis, dass ich nicht still stitze :-)!!

    @jabo: ich denke ebenfall nicht, dass es irgendwas mit der Reihenfolge meines Skripts zu tun hat. Es wird ja, wie du es schon erkannt hast, nichts ausgegeben. Was mich nur wundert ist, dass ALLES genau so funktioniert, wie ich es haben möchte, wenn ich es über den Browser aufrufe.

    Ich vermute, dass wget die header einfach nicht in der Form akzeptiert, wie ich es möchte. Dann verstehe ich allerdings nicht, warum ABSOLUT keinerlei Daten ankommen... noch nichteinmal schrott wird übertragen---das ist es was, mich stört...

    Gruß

    Kesar
     
  8. #7 patlkli, 16.11.2006
    Zuletzt bearbeitet: 16.11.2006
    patlkli

    patlkli Linux-Freak

    Dabei seit:
    23.11.2005
    Beiträge:
    158
    Zustimmungen:
    0
    Ort:
    Landshut
    Ich denke jetzt einfach mal, dass wget sein application/octetstream aus der Dateiendung nimmt, was zwar dumm ist, aber naja... vielleicht musst du wget irgendwie den content-type übergeben...

    EDIT: Probier mal:
    Code:
    wget --header "Content-type: text/plain" http://www.edv-bode.de/projekt_blacklist_download.php?dl_kat=3&status=checked
    Grüße,
    patlkli!
     
  9. #8 Kesar_Neron, 16.11.2006
    Kesar_Neron

    Kesar_Neron Tripel-As

    Dabei seit:
    25.03.2006
    Beiträge:
    218
    Zustimmungen:
    0
    Hallo zusammen

    @patlkli: danke für den tipp, das wusste ich noch nicht, aber leider hat das auch nicht funktioniert. Ich werd mich wahrscheinlich einfach weiter auf die suche machen müssen. Achso, es wurde ja nach einer Beispielausgabe gefragt.
    Nun, Das Ergebnis soll eine Textdatei sein, welche simple so aufgebaut sein soll:

    81.19.70.1
    64.124.125.10
    193.125.152.10
    206.50.181.10
    206.173.193.10
    216.40.195.10
    216.200.199.10
    216.34.209.10
    212.143.22.10
    80.190.228.10
    207.38.10.100
    208.184.138.100
    65.39.176.100
    207.150.181.100
    66.150.2.100
    209.132.205.100
    209.202.240.100
    ...
    ...
    ...

    Das stllt dann letztendlich eine Blacklist dar, welche von z.B. Squidguard genutzt werden kann, um den Interzugang ein wenig einzuschränken.

    Gruß
     
  10. #9 Jabo, 16.11.2006
    Zuletzt bearbeitet: 16.11.2006
    Jabo

    Jabo Aufgabe ohne Minister

    Dabei seit:
    12.10.2006
    Beiträge:
    1.322
    Zustimmungen:
    0
    Ort:
    Hamburg
    Header scheinbar nicht ok

    Hallo,

    das brachte mich jetzt mal auf folgende Idee:
    Code:
    
     wget -S http://www.edv-bode.de/projekt_blacklist_download.php?dl_kat=3&status=checked
    [1] 13913
    --23:15:33--  http://www.edv-bode.de/projekt_blacklist_download.php?dl_kat=3
               => `projekt_blacklist_download.php?dl_kat=3.3'
    Auflösen des Hostnamen »www.edv-bode.de«.... jens@trebulon-1:~> 217.20.118.124
    Connecting to www.edv-bode.de|217.20.118.124|:80... verbunden.
    HTTP Anforderung gesendet, warte auf Antwort... 
      HTTP/1.1 200 OK
      Date: Thu, 16 Nov 2006 22:15:31 GMT
      Server: [COLOR=gray][hier stand der Server-String][/COLOR]
      X-Powered-By: [COLOR=gray][hier stand die PHP-Version][/COLOR]
      Content-Disposition: attachment; filename=blacklist_Audio-Video.txt
      Connection: close
      [B][I][COLOR=red]Content-Type: application/octetstream[/COLOR][/I][/B]
    Länge: nicht spezifiziert [application/octetstream]
    
        [ <=>                                                          ] 0             --.--K/s             
    
    23:15:34 (0.00 B/s) - `projekt_blacklist_download.php?dl_kat=3.3' saved [0]
    
    Der Parameter "-S" gibt die Header aus, die vom Server kommen (also so wie ich die manpage verstehe *keine* von wget generierten).

    Wenn man wget nicht traut, mal Lynx:
    Code:
    lynx --dump --head http://www.edv-bode.de/projekt_blacklist_download.php?dl_kat=3&status=checked
    HTTP/1.1 200 OK
    Date: Thu, 16 Nov 2006 22:23:31 GMT
    Server: [COLOR=gray][hier stand der Server-String][/COLOR]
    X-Powered-By: [COLOR=gray][hier stand die PHP-Version][/color]
    Content-Disposition: attachment; filename=blacklist_Audio-Video.txt
    Connection: close
    [COLOR=red][B][I]Content-Type: application/octetstream[/I][/B][/COLOR]
    
    (während übrigens "lynx --dump [....] > blist.txt" zu ner sauberen Liste in "blist.txt" führt...)

    Aber: Scheinbar gehen die Header eben *nicht* rüber....
     
  11. #10 Kesar_Neron, 16.11.2006
    Kesar_Neron

    Kesar_Neron Tripel-As

    Dabei seit:
    25.03.2006
    Beiträge:
    218
    Zustimmungen:
    0
    @jabo: Das sieht doch schon mal gut aus... also bin cih mit dem content-type application/octetstream gar nicht so verkehrt....

    Selbst wenn die header nicht rüber kommen wundert es mich, das wget keinerlei daten empfängt...

    Aber ich denke, das hat mir schon mal weitergeholfen... danke
     
Thema: php textausgabe mit wget downloaden
Besucher kamen mit folgenden Suchen
  1. wget Länge: nicht spezifiziert

Die Seite wird geladen...

php textausgabe mit wget downloaden - Ähnliche Themen

  1. Auf Textausgabe in screen warten

    Auf Textausgabe in screen warten: Moin, ich habe ein Backup-Script für einen Gameserver. Das Script schickt zu erst den Befehl an die screen-session mit screen -S...
  2. WebUI für wget opder Aria2 auf dem Raspberry Pi

    WebUI für wget opder Aria2 auf dem Raspberry Pi: Hallo, ich habe meinen Raspberry Pi mit Raspbian neu aufgesetzt und dabei die gesamte Software aktualisiert. Der Pi dient v.a. als...
  3. Probleme mit wget

    Probleme mit wget: Wenn ich den Befehlt wget benutze, um z.B. eine ZIP Datei herunterzuladen, dann ist die Ziel-Datei auf meinem PC sehr klein und enthält HTML...
  4. wget downloadproblem

    wget downloadproblem: Hallo, ich möchte mittels wget von einem Server einige Daten runterladen. Diese liegen zerstreut in einigen Unterordner :...
  5. wget zur Geschwindigkeitsmessung

    wget zur Geschwindigkeitsmessung: Hallo, ich versuche eine rudimentäre Lösung für eine Geschwindigkeitsmessung über eine busybox zu implementieren. wget -O /dev/null...