Externes Bild überprüfen

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

  • Externes Bild überprüfen

    Hi

    Ich möchte das mein Script ein externes Bild auf deren Existenz übrprüft.

    Ich habe folgenden Code:

    PHP-Code:
    $fp fsockopen ($srv[pic], 80, &$errno, &$errstr30);
    if (!
    $fp)
        {
    $serverpic "img/icons/nopic.jpg";
        }
    else{
    $serverpic $srv[pic];} 
    Leider scheint mein Webserver fsockopen deaktiviert zu haben. Ich habe es auch mir fopen() versucht aber dann ist das Ergebnis immer positiv auch wenn das Bild gar nicht existiert. Wie mach ich das am besten?

    Gruss & Danke

  • #2
    Leider scheint mein Webserver fsockopen deaktiviert zu haben.
    Was bewegt dich zu dieser Aussage?

    Kommentar


    • #3
      Error:
      Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Non-recoverable failure in name resolution in /home/me/public_html/bla/stats.php on line 55

      Warning: fsockopen(): unable to connect to http://blabla.de/bla/logo.jpg:80 in /home/me/public_html/bla/stats.php on line 55
      Das Bild existiert 100%.

      Kommentar


      • #4
        Wenn fsockopen deaktiviert ist, warum gibt es dann eine Fehlermeldung aus?

        Warning: fsockopen(): unable to connect to http://blabla.de/bla/logo.jpg:80 in /home/me/public_html/bla/stats.php on line 55

        Kommentar


        • #5
          Dann ist halt ein Port gesperrt oder sowas. Ich weiss es doch auch nicht genau. Oder ist das nicht möglich? Weshalb dann die Meldung? Die Datei existiert ja.

          Kommentar


          • #6
            Wenn du genau weißt, dass das Bild existiert und erreichbar ist, warum fsockst du dann noch rum?

            Nein im Ernst: Was enthält $srv[pic]?
            Bestimmt sowas wie http://foo.bar/path/to.pic, ne?
            Das ist als Target für fsockopen() äußerst ungeeignet, siehe Manual.

            Kommentar


            • #7
              Ja es enthält eine URL wie: http://www.einepage.de/bilder/ich6.jpg

              Hmm... ich hab im Google nach einer Lösung für dieses Problem gesucht und bin immer auf fsockopen gestosen. Was gibt es denn für alternativen?

              Kommentar


              • #8
                Hallo,

                fsockopen ist schon geeignet dafür, du musst nur nochmal im Manual ein wenig nachlesen, wie man es genau anwendet.

                www.php.net/fsockopen

                Die Userkomments enthalten bereits Beispiele, die du nur noch ein wenig für dich anpassen musst

                Gruss
                Quetschi
                Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                Schön - etwas Geschichte kann ja nicht schaden.
                Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                Kommentar


                • #9
                  Hi Quetschi

                  Danke für deine Antwort. Hab mir das mal angesehen. Weisst du vielleicht bei welchem Usercomment sowas erklärt wird? Hab mit der Browsersuchfunktion nichts gefunden und es sind halt doch einige Kommentare.

                  Noch ein anderes Prob:
                  PHP-Code:
                   $socket = @fsockopen("udp://$ip"$port$errno$errstr3); 
                  Das Timeout funktioniert irgendwie nicht. Wenn er connecten kann funktioniert alles normal und schnell aber wenn er nicht connecten kann, dann lädt er etwa 20 Sekunden anstatt 3 Sekunden. Sollte doch eigentlich so stimmen odeR?

                  Kommentar


                  • #10
                    Sorry,

                    meinte nicht die Userkomments, sondern die Beispiele. Beispiel Nr. 1 ist eigentlich schon alles was du brauchst und dann noch ein wenig Ahnung von HTTP-Status-Codes.
                    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                    Schön - etwas Geschichte kann ja nicht schaden.
                    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                    Kommentar


                    • #11
                      Original geschrieben von PHPbeginner
                      Weisst du vielleicht bei welchem Usercomment sowas erklärt wird? Hab mit der Browsersuchfunktion nichts gefunden und es sind halt doch einige Kommentare.
                      Mach dir bloß nicht zu viel Arbeit!
                      "... überprüft die angegeben URL auf Erreichbarkeit"

                      Das Timeout funktioniert irgendwie nicht. Wenn er connecten kann funktioniert alles normal und schnell aber wenn er nicht connecten kann, dann lädt er etwa 20 Sekunden anstatt 3 Sekunden.
                      Wieso UDP? Gib zu, du weißt es selber nicht!
                      Und wenn du nun eh (nochmal) ins Manual schaust, nutze mal deine Browsersuchfunktion mit "timeout" ...

                      Kommentar


                      • #12
                        Original geschrieben von onemorenerd
                        [...]
                        Wieso UDP? Gib zu, du weißt es selber nicht!
                        Und wenn du nun eh (nochmal) ins Manual schaust, nutze mal deine Browsersuchfunktion mit "timeout" ... [/B]
                        Das ist was ganz anderes. Hat nichts mit dem anderen Problem zu tun. Damit hole ich andere Daten von einem Server. Es funktioniert ja auch sofern die IP stimmt. Und wenn sie nicht stimmt, lädt er über 20 Sekunden.

                        Kommentar


                        • #13
                          Hab nicht behauptet, es hätte mit dem ersten Problem zu tun oder?
                          Aber ich behaupte weiterhin, dass du nicht genau weißt, warum du an dieser Stelle UDP verwendest. Sonst würdest du nämlich auf den Timeout-Parameter verzichten. UDP ist ein send-and-forget-Protokoll (oder auch send-and-pray), es wird keine Verbindung hergestellt, also kann es auch keinen Timeout geben.

                          Kommentar


                          • #14
                            Naja hab es jetzt rausgefunden. Aber beim Bild-Check häng ich noch immer.

                            PHP-Code:
                            <?php
                            $fp 
                            fsockopen ("www.example.com/bild.jpg"80$errno$errstr30);
                            if (!
                            $fp) {
                               echo 
                            "$errstr ($errno)<br />\n"
                            } else {
                            // diesen Bereich hier verstehe ich nicht genau
                               
                            fputs ($fp"GET / HTTP/1.0\r\n\r\n");
                               while (!
                            feof($fp)) {
                                   echo 
                            fgets($fp,128);
                               }
                               
                            fclose($fp);
                            }
                            ?>
                            Mit fputs werden doch Daten in eine Datei geschrieben oder nicht?

                            Kommentar


                            • #15
                              Naja hab es jetzt rausgefunden.
                              Nein, hast du nicht, jetzt liest du dich aber doch einfach mal quer durch die Userkomments und siehst dir an, was fsockopen an Parametern erwartet
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X