Jonas Dinkelmann: PHP Bildergallerie

Hallo zusammen
Ich hab ein kleines Problem mit folgendem Code:
<?
$uploaddir = "includes/inhalt/j_pics/";
$erlaubteEndungen = ".gif,.jpg,.png";

$x = 0;
if ($handle = opendir($uploaddir)) {
   while ($bild = readdir($handle)) {
     $bildtyp = strrchr($bild, ".");
  if($bildtyp)$bildtyp = strtolower($bildtyp);
  $typerlaubt = strpos($erlaubteEndungen, $bildtyp);
     if ($bild != "." && $bild != ".." && $typerlaubt === true){
      $array[$x] = $bild;
   $x++;
    }
   }
   closedir($handle);
}
?>

  1. Sorry, wollte noch nicht abschicken ;)

    Das Problem liegt irgendwo bei "$typerlaubt = strpos($erlaubteEndungen, $bildtyp);"
    irgendiwie gibt das immer FALSE zurück

  2. Hallo Jonas,

    ...
      if($bildtyp)$bildtyp = strtolower($bildtyp);
      $typerlaubt = strpos($erlaubteEndungen, $bildtyp);

    echo"<br>typerlaubt: $typerlaubt";

    ...

    und strpos

    Viele Grüße,

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
    1. Ich weis nicht genau was du meinst, aber wen ich $typerlaubt ausgebe kommt:

      typerlaubt: 0
      typerlaubt: 0
      typerlaubt: 0
      typerlaubt: 5
      typerlaubt:
      typerlaubt: 0
      typerlaubt: 5
      typerlaubt: 5
      typerlaubt: 5
      typerlaubt: 5
      typerlaubt: 5
      typerlaubt: 5
      typerlaubt: 5
      typerlaubt: 5

      fals der Typ nicht im string vorhanden ist sollte die funktion ja false zurückgeben

      ...
        if($bildtyp)$bildtyp = strtolower($bildtyp);
        $typerlaubt = strpos($erlaubteEndungen, $bildtyp);
        echo"<br>typerlaubt: $typerlaubt";
        ...

      1. Ach soo, ich kann also nur überprüfen obs flase ist, nicht true :D

        1. echo $begrüßung;

          Ach soo, ich kann also nur überprüfen obs flase ist, nicht true :D

          Ja, denn strpos() liefert eintweder einen Integer-Wert oder ein boolsches false. Ein true liefert es nicht, weswegen der typsichere Vergleich immer misslingt. Die Funktion var_dump() ist ein sehr gutes Hilfsmittel, um solch einem Fehler auf die Spur zu kommen, denn die gibt Inhalt und Typ einer Variablen oder des Ergebnisses eines Ausdrucks aus.

          Alternative Vorgehensweisen:

          • den Erlaubte-Endungen-String mit explode() an den Kommas aufteilen und das entstandene Array mit in_array() befragen.
          • Dateinamen und -endungen sind Schall und Rauch. Prüfe auf den Inhalt. Teste (eventuell zusätzlich zur Endungsprüfung) ob die Funktion getimagesize() die Datei öffnen kann. Im Erfolgsfall gibt sie ein Array mit Daten zurück, was einem true entspricht. Im Fehlerfall gibt es false (und eine Warnung, die man mit @ unterdrücken sollte).

          (Galerie bitte nur mit einem l schreiben.)

          echo "$verabschiedung $name";

  3. Servus,

    $erlaubteEndungen = ".gif,.jpg,.png";

    Geeigneter wäre hier ein Array der erlaubten Endungen zu verwenden, also z.B.
    [code=php]
    $extensions = array(
        'gif',
        'jpg',
        'png'
    );
    [/code]
    Die Abfrage erledigst du dann einfach mittels in_array().

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|