Dateiausgabe und PHP5

Hi,

Wenn ich jetzt ../bla/bla/bla eingebe, dann zeigt er eine Fehler meldung an die ich selber ausgesucht habe und bricht dann ab, kann mal einer drüber schauen und mir sagen ob der Code so nun sicher ist ?

Na ja, Du prüfst, ob das ein Verzeichnis ist, nicht, ob das ein Unterverzeichnis von $bildverz ist ;)
Am sichersten wäre imho eine Whitelist-Prüfung. Man könnte $bildverz z.B. per glob() auslesen und prüfen, ob $uverz in der Liste enthalten ist.

LG
 
Na ja bin net so wirklich fit in PHP und noch am üben ;)
Und das funktionierte halt so wie ich es wollte, nämlich das er nach 4 bildern einen zeilen umbruch macht und dann weiter macht mit der bild ausgabe ;)

Achso! Ich war wohl ein bisschen müde und habe das übersehen. Naja, auch nicht viel Arbeit, das mehr oder minder (<- damit meine ich den Lösungsweg der jetzt folgt, nicht deinen) geschickt abzuändern:
PHP:
<html>
  <head>
    <title>Bildergallerie</title>
  </head>
  <body>
<?
function _gallery($dir_use, $dir_main, $dir_thumbs, $line_pictures){
  $dir_main = $dir_main . '/' . $dir_use;
  $dir_thumbs = $dir_thumbs . '/' . $dir_use;

  if(!is_dir($dir_main) || !is_dir($dir_thumbs)){
    echo('<center><font class=black>Also <strong>Du</strong> hast irgendetwas versucht, das Du nicht sollst</font></center>');
    return false;
  }
  
  $handle_dir_main = opendir($dir_main);
  $handle_dir_thumbs = opendir($dir_thumbs);
  
  if(!$handle_dir_main || !$handle_dir_thumbs){
    echo('<center><font class=black>Konnte Ordner nicht &oumlffnen</font></center>');
    return false;
  }
  
  echo('    <table width="100%" align="center" cellspacing="8" cellpadding="8">' . "\n" .
       '      <tr>' . "\n" .
       '        <td class="black" colspan="4" align="center">Verzeichnis: ' . $dir_use . '</td>' . "\n" .
       '      </tr>' . "\n" .
       '      <tr>' . "\n");
  
  $file_count = 0;
  
  while($file_name = readdir($handle_dir_main)){
    if($file_name != '.' && $file_name != '..'){
      if(is_file($dir_main . '/' . $file_name)){
        if($file_count < $line_pictures){
          echo('        <td align="center"><a href="' . $dir_main . '/' . $file_name . '" rel="lightbox[galerie]"><img src="' . $dir_thumbs . '/' . $file_name . '" width="100" height="100" border="0" style="filter:alpha(opacity=40); -moz-opacity:0.4" onmouseover="init_fader(this,5,20,40,99,1)"></a></td>' . "\n");
        }else{
          $file_count = 0;
          echo('      </tr>' . "\n" .
               '      <tr>' . "\n" .
               '        <td align="center"><a href="' . $dir_main . '/' . $file_name . '" rel="lightbox[galerie]"><img src="' . $dir_thumbs . '/' . $file_name . '" width="100" height="100" border="0" style="filter:alpha(opacity=40); -moz-opacity:0.4" onmouseover="init_fader(this,5,20,40,99,1)"></a></td>' . "\n");
        }
        $file_count++;
      }
    }
  }
  
  closedir($handle_dir_main);
  closedir($handle_dir_thumbs);
  
  echo('      </tr>' . "\n" .
       '      <tr>' . "\n" .
       '        <td colspan="4"><center><font><a href="index.php?seite=bildgal/galerien" target="_self">zurück</a></font></center></td>' . "\n" .
       '      </tr>' . "\n" .
       '    </table>' . "\n");
}

if(isset($_GET['uverz']) && !empty($_GET['uverz'])){
  if(!@ereg('^[a-zA-Z0-9._-]*$', $_GET['uverz'])){
    echo('<center><font class=black>Unerlaubte Zeichen im Ordnernamen</font></center>');
    return false;
  }else{
    _gallery($_GET['uverz'], 'normal', 'klein', 4);
  }
}else{
  echo('<center><font class=black>Du hast vergessen einen Ordner anzugeben</font></center>');
}

?>
  </body>
</html>
 
Erstmal danke für deine Lösung, nur egal was ich bei dir eingebe ich kriege jede Fehlermeldung die Du da eingetragen hast nur werden keine Bilder angezeigt ;(
 
Hi,
sorry, dass es bei dir nicht funktioniert. Aber welche Fehlermeldung meinst du?
Die mit dem Ordner, dass der nicht vorhanden ist? Falls ja, liegt das daran, dass du keinen Ordner angegeben hast :p
Code:
http://wipeouts-seite.de/dieses_skript.php?uverz=Name_des_Verzeichnises
Dann müsste die Verzeichnisstruktur so aussehen: (Beispiel, Linux...)
Code:
/srv/www/normal/Name_des_Verzeichnises
(Große Bilder)
Code:
/srv/www/klein/Name_des_Verzeichnises
(Kleine Bilder/Thumbs)
Die Ordner "normal" und "klein" kannst du auch anders nennen, musst die Funktion dann nur anders benutzen: Aus...
PHP:
/* ... */ _gallery($_GET['uverz'], 'normal', 'klein', 4); /* ... */
...wird...
PHP:
/* ... */ _gallery($_GET['uverz'], 'das_verzeichnis_fuer_grosse_bilder', 'das_verzeichnis_fuer_kleine_bilder', 4); /* ... */
Der untere Teil meines Skriptes (alles außer die Funktion an sich) kannst du ja entsprechend anpassen.
Ich werde das Skript mal hochladen und die URL dann in diesen Post schreiben.
Sorry nochmal...

//Edit: Hier ist der versprochene Link ...?uverz=test,
dazu kannst du dir hier das Skript anssehen.

//Edit2: Außerdem kannst du dir das hier / hier / hier auch mal anssehen. *smartass* xD
 
Zuletzt bearbeitet:
*lacht*
Nun weiss ich wo mein Fehler lag, das es bei mir nicht geklappt hat. Dachte das klein und normal gehöre mit in die Function obwohl ich nichts gefunden habe dafür *sich an den kopf klatscht* kommt davon wenn man nur abends zeit hat was zu programmieren ;)

Klappt einwandfrei deine Function war ein typischer DAU Fehler :(

da fällt mir gleich noch ne frage zu deiner function ein, ich arbeite mit verzeichnissen die leerzeichen zwischen haben, ist das ein problem bei der function ? kanns heute leider nicht ausprobieren da ich nicht zu hause bin.
 
Zuletzt bearbeitet:
Zurück