Felix Riesterer: Verständnisproblem OOP

Beitrag lesen

Lieber Lukas,

mit anderen Worten: Du hast keine Ahnung, was in Deiner Schleife passiert und ob sie überhaupt ausgeführt wird? Mache Dir ein paar Debug-Ausgaben, damit Du herausfindest, was in Deiner Schleife genau passiert!

if ( $path_parts['extension']  == 'jpg' ) {

Hast Du geprüft, ob das so passt? Was ist, wenn die Endung "jpeg" ist, oder wenn die GrOß-/kLeInScHrEiBuNg anders lautet? Wenn Du nur auf die Dateiendung prüfen willst, dann doch besser so:

if (preg_match('~(?i)\.jpe?g$~', $file)) {

Ich will Dir aber grundsätzlich raten, auf echte Bilddaten zu prüfen. Was ist, wenn man Dir eine Datei "bild.jpg" unterjubelt, in der tatsächlich aber keine Bilddaten, sondern eventuell PHP-Code zum Ausführen steht?

Hier ein Auszug aus einem meiner Projekte:

$tmp = getimagesize($file);
$ok = (
	$tmp[0] > 0
	&& $tmp[1] > 0
	&& preg_match(
		'~(?i)\.(gif|jpeg|jpg|png)$~',
		$file
	)
);

Mein Code prüft nicht nur, ob die Dateiendung stimmt, sondern auch, ob es sich um gültige Bilddaten handelt. Anschließend kann ich mit if ($ok) { ... } else { ... } entsprechend reagieren.

$thumb -> Createthumb('bilder/'.$file.'');

Aha... Wozu das .'' nach der Variable $file? Warum nicht gleich so:

$thumb->Createthumb("bilder/$file");

Ergebnis ist:

Directory handle: Resource id #3 Files: ...bild1.jpgbild2.jpg usw.

Wie schon gesagt. Mache in der Schleife ein paar Debug-Ausgaben, damit Du weißt, was da passiert.

Liebe Grüße,

Felix Riesterer.

--
"Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)