Externe Grafiken prüfen

Alles, was PHP betrifft, kann hier besprochen werden.

Externe Grafiken prüfen

Postby Fox » 21. July 2005 15:08

Hi Freunde,

ich hab auch ma ein kleines PHP-Problem, eigentlich brauche ich nur einen Denkanstoss.

Ok, das Szenario is fogendes, in einem Formular soll ein User eine Datei angeben können. Eine Grafik von einer externen URL. Jedoch soll die Grafik beschränkungen unterliegen. D.h. der Medientyp soll stimmen und die Pixelgröße natürlich auch. So, das ganze geht wunderbar mit der Funktion getImageSize. Sollte jedoch die URL falsch sein oder die Datei nicht auf dem Server zu finden, bzw. beim eintragen der Server der URL down sein, wirft die Funktion getImageSize einen Fehler aus. Und dieser stoppt das Script.

Ok, was ich nun suche ist eine Funktion, die mir kurz "True" oder "False" liefert wenn die Datei "erreichbar" ist oder nicht. Damit ich die Prüfung per getImageSize unterbinden kann und direkt eine Info an den User leiten kann das es nicht geht. Nur womit? Fopen fällt mir da ein, aber das öffnet ja nur die Datei. file_exists geht nur lokal. Mehr fällt mir nicht ein.

Evtl wisst ihr was. Was mir ein guter Bekannter schon geraten hat, wäre das Abfangen von Fehlermeldungen, aber das wäre vom Umfang her zu extrem. Evtl kennt ihr auch ne andere Funktion zu getImageSize, die mir a) die Pixelgröße und b) den MediaType liefert.

Hoffe ich konnte mich so ausdrücken das ihr es nachvollziehen könnt.

Gruß

Manu
Fox
 
Posts: 10
Joined: 18. January 2005 22:36

Postby Wiedmann » 21. July 2005 15:37

Fopen fällt mir da ein, aber das öffnet ja nur die Datei.

Wieso nur? Was man öffnen kann ist auch da.

Was mir ein guter Bekannter schon geraten hat, wäre das Abfangen von Fehlermeldungen, aber das wäre vom Umfang her zu extrem.

Was ist hier extrem?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby rift » 21. July 2005 22:27

Es gibt ein Sprichwort, welches sich jeder, der programmiert zu Herzen nehmen sollte.

Validate or die!

Hier deine gewünschte Funktion zum überprüfen ob eine Datei auf einem externen Server vorhanden ist.
Code: Select all
<?php
function external_file_exists ($filename) {
   $file = fopen ($filename, "r");
   if (!$file) {
         return FALSE;
   } else {
      return TRUE;   
   }
}

if (external_file_exists ("http://community.apachefriends.org/f/templates/subSilver/images/lang_german/post.gif")) {
   echo "Datei vorhanden!";
} else {
   echo "Datei nicht vorhanden!";
}
?>
Ein Blick empor zum Lichte, ein Vorwärts nur und kein Zurück.
User avatar
rift
 
Posts: 26
Joined: 19. July 2005 10:32
Location: Hamburg

Postby Wiedmann » 22. July 2005 00:20

rift wrote:Hier deine gewünschte Funktion zum überprüfen ob eine Datei auf einem externen Server vorhanden ist.

Mit deinem Code zusätzlich, hat er den gleichen Effekt wie vorher. Er bekommt ein "E_WARNING" wenn das Bild nicht verfügbar ist.

Wiedmann wrote:
Fox wrote:Was mir ein guter Bekannter schon geraten hat, wäre das Abfangen von Fehlermeldungen, aber das wäre vom Umfang her zu extrem.

Was ist hier extrem?

Aber um nochmal darauf zurückzukommen:
Code: Select all
<?php
   $uri = 'http://www.example.com/foo.bar';
   if (false === ($picture = @getimagesize($uri))) {
      echo 'Cannot access the picture!';
   } else {
      echo '<pre>';
      print_r($picture);
      echo '</pre>';
   }
?>


BTW:
Fox wrote:Sollte jedoch die URL falsch sein oder die Datei nicht auf dem Server zu finden, bzw. beim eintragen der Server der URL down sein, wirft die Funktion getImageSize einen Fehler aus. Und dieser stoppt das Script.

getimagesize() wirft wie gesagt nur ein "E_WARNING". Das stoppt dein Script noch nicht. Wenn dein Script wirkich angehalten wird, muss da noch was anderes sein was dafür verantwortlich ist.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests