Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Upload mit curl

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Upload mit curl

    Hallo.

    Ich versuche verzweifelt, ein Bild auf einen Bildhoster hochzuladen und die Antwort (Name/Link der Datei) auszulesen.

    Eigentlich wäre das Auslesen kein Problem...wenn es denn eine Antwort geben würde.

    Hier mal der letzte Stand der Dinge:

    Code:
    if (count($_FILES) == 0)
    {
       echo "<div style=\"text-align:center\">";
       echo "<form action=\"imagebanana.php\" method=\"post\" enctype=\"multipart/form-data\">\n";
       echo "<input id=\"image\" type=\"file\" style=\"width:260px;\" name=\"upload\" />\n";
       echo "<input type=\"submit\" style=\"width:100px;\" value=\"Hochladen!\" />\n";
       echo "</form>\n";
       echo "</div>\n";
       echo "</body>\n";
       echo "</html>\n";
    }
    else
    {
       $localfile = $_FILES['upload']['tmp_name'];
       $fp = fopen($localfile, 'r');
    
       $handle = curl_init();
       curl_setopt($handle, CURLOPT_URL, "http://www.imagebanana.com/");  
       curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);  
       curl_setopt($handle, CURLOPT_UPLOAD, 1);  
       curl_setopt($handle, CURLOPT_INFILE, $fp);  
       curl_setopt($handle, CURLOPT_INFILESIZE, filesize($localfile));  
       $result = curl_exec($handle);  
       $info = curl_getinfo ($handle);
       curl_close($handle); 
    
       echo "Result: " . $result . "<br>";
       echo "Info: ";
       echo print_r($info);
    }
    Beim ersten Aufruf wird ein Upload-Formular angezeigt. Man wählt die Datei und klickt auf "Hochladen!".
    Das Skript ermittelt die Datei-Informationen, startet den Upload und fertig. So sollte es jedenfalls sein.

    Aber es funktioniert nicht. In $result steht lediglich eine "1" drin, obwohl darin die HTML-Seite drinstehen müsste, die der BildHoster zurückgibt. (Ich habe mir CURL schon diverse Formulardaten hochgeladen und die Ergebnisse gefiltert, was bis jetzt immer wunderbar funktioniert hat. Allerdings mache ich zum ersten Mal einen Datei-Upload.)

    Ich denke, dass der Upload gar nicht erst funktioniert hat, verstehe dann aber wiederum nicht, wieso es keine Fehlermeldung gibt.

    Den Quellcode habe ich von einem Beispiel-Source, der eigentlich funktionieren sollte.

    Es gibt noch die Möglichkeit, den Upload über CURLOPT_POSTFIELDS zu regeln, aber das funktioniert leider genauso wenig.

    Hat jemand einen Tipp für mich, wo ich suchen muss?

    cya

  • #2
    Wie wäre es mal mit nem sniffer zu schauen, was übertragen wird, wenn du manuell hochlädst und was bei Curl passiert?

    Möglich, dass dich eine ganz banale Referer-Abfrage austrickst?

    Kommentar


    • #3
      Dass du für den Code im If-Zweig erschlagen gehörst, weißt du hoffentlich selber.

      Warum du eigentlich die Datei mit fopen zum Lesen öffnest, ohne anschließend irgendwas in der Hinsicht zu unternehmen, würde mich mal interessieren.

      Ich denke, dass der Upload gar nicht erst funktioniert hat, verstehe dann aber wiederum nicht, wieso es keine Fehlermeldung gibt.
      Vielleicht, weil der Betreiber des Service keine automatisierten Uploads erwünscht. In dem Fall würde ich dir auch keine aussagekräftige Fehlermeldung liefern.

      Wenn das der Fall ist, dann wird wahrscheinlich anhand der Request-Header geprüft, ob da typische Dinge bei sind, die auf einen echten Browser hindeuten.
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        Zitat von phpsecretary Beitrag anzeigen
        Möglich, dass dich eine ganz banale Referer-Abfrage austrickst?
        Hab' CURLOPT_REFERER mitgeschickt, war aber erfolglos.


        Zitat von ChrisB Beitrag anzeigen
        Warum du eigentlich die Datei mit fopen zum Lesen öffnest, ohne anschließend irgendwas in der Hinsicht zu unternehmen, würde mich mal interessieren.
        Weil ich in meiner Verzweifelung mittlerweile jeden Sch**** 1:1 von anderen Sources übernommen habe, um überhaupt ein Ergebnis zu erzielen.

        Die Code-Optimierung mache ich, sobald es läuft. (Wenn's denn jemals läuft...)

        Zitat von ChrisB Beitrag anzeigen
        Vielleicht, weil der Betreiber des Service keine automatisierten Uploads erwünscht. In dem Fall würde ich dir auch keine aussagekräftige Fehlermeldung liefern.
        Das könnte natürlich auch sein, aber eine Fehlermeldung wäre von ihm dann schon nett gewesen...

        Zitat von ChrisB Beitrag anzeigen
        Wenn das der Fall ist, dann wird wahrscheinlich anhand der Request-Header geprüft, ob da typische Dinge bei sind, die auf einen echten Browser hindeuten.
        Hm, kann ich mir eigentlich nicht vorstellen, will es aber natürlich nicht ausschließen.

        Wie geschrieben: Ich habe schon viele automatisierte Skripte geschrieben, die über CURL irgendwelche Formulardaten ermitteln/ausfüllen/abschicken/etc. und es gab nie Probleme.

        cya

        Kommentar


        • #5
          Wie geschrieben: Ich habe schon viele automatisierte Skripte geschrieben, die über CURL irgendwelche Formulardaten ermitteln/ausfüllen/abschicken/etc. und es gab nie Probleme.
          Tja, dann solltest Du den nächsten Schritt gehen und lernen, wie DU Fehlersituationen analysierst. Oder heißt „Ich habe geschrieben“ eigentlich nur das:
          Weil ich in meiner Verzweifelung mittlerweile jeden Sch**** 1:1 von anderen Sources übernommen habe
          ?
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Fortgeschritten? mhm?

            Schau mit einem FF-Plugin wie TamperData was benötigt wird und dann musste halt noch schauen ob evtl. eine Weiterleitung erfolgt und diese berücksichtigen in deinem Code.

            cu
            Grüße
            Destruction
            "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

            Kommentar


            • #7
              Plugin LIVE HTTP Headers für FF könnte helfen ;x

              edit: huch oben überlesen, dass ähnliches genannt wurde o.O

              Kommentar


              • #8
                wireshark könnte auch helfen

                Kommentar


                • #9
                  Vll. hab ich es überlesen, aber hast du Fehlermeldungen auch aktiviert?
                  LG Sonic

                  Kommentar


                  • #10
                    lol^^ er lässt uns ohne Lösung dastehen...
                    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                    Kommentar


                    • #11
                      das sind mir ja die geilsten... naja, was soll man dazu sagen.

                      Kommentar

                      Lädt...
                      X