"; $image_regex = '/\.(jpg|jpeg)$/i'; // Regulært uttrykk for å matche jpg-bilder $index_regex = '/^index\.html$/i'; // Regulært uttrykk for å matche index-filen $oppdrag_dir = 'oppdrag/'; // maks bredde og høyde på thumbnails $max_w = 60; $max_h = 63; // vis galleri i mappen $directory function show_gallery ($directory) { show_index ($directory); echo "
"; //echo "
"; show_first ($directory, $_GET["file"]); //echo "
"; echo "
"; show_thumbnails ($directory); echo "
"; echo "
"; } function check_path ($path) { if ((strpos ($path, "../") === false) && (strpos ($path, "/") !== 0)) return true; return false; } function show_index ($directory) { global $index_regex; global $oppdrag_dir; $side = $_GET['s']; // Inkluder $side hvis den finnes, ellers let etter index.html i // gallerikatalogen if ($side && check_path($side) && !strpos($side, "/")) { include ($oppdrag_dir . $side); return; } // Sjekk om katalogen finnes og at den er en katalog if (is_dir($directory)) { // Åpne katalogen if ($dh = opendir($directory)) { // Les filer helt til vi finner en bildefil while (($file = readdir($dh)) !== false) { if (preg_match ($index_regex, $file)) { echo "
"; include ($directory ."/". $file); echo "
"; } } } } } // vis "hovedbildet" (det første i fillistingen) i mappen $directory // (eller søk etter og bruk $filename hvis den er satt) function show_first ($directory, $filename="") { global $image_regex; // Sjekk om katalogen finnes og at den er en katalog if (is_dir($directory)) { // Åpne katalogen if ($dh = opendir($directory)) { // Les filer helt til vi finner en bildefil while (($file = readdir($dh)) !== false) { if (preg_match ($image_regex, $file)) { if (!$filename || $filename == $file) { echo "\"$directory\"/"; return; } } } } } } // vis thumbnails i en mappe (lag dem hvis de ikke finnes) function show_thumbnails ($directory) { global $image_regex, $thumb_script, $index_regex; $start = (int)$_GET['start']; $max = $start + 18; // forandre antall bilder per side her $nesteforrige = ""; // Les mappe if (is_dir($directory)) { if ($dh = opendir($directory)) { if (!is_dir ($directory ."/thumbs")) mkdir ($directory ."/thumbs"); $first_image = true; $counter = 0; while (($file = readdir($dh)) !== false) { if (preg_match ($image_regex, $file)) { $counter++; if ($counter <= $start) continue; if ($counter > $max) { $new_uri = $SCRIPT_NAME . "?"; $new_uri .= 'dir=' . $_GET['dir']; if ($_GET['file']) $new_uri .= '&file=' . $_GET['file']; if ($_GET['s']) $new_uri .= '&s=' . $_GET['s']; $new_uri .= '&start=' . ($start + 18); $nesteforrige .= 'Neste'; break; } // Sjekk om thumbnail eksisterer if (!file_exists ($directory."/thumbs/".$file)) gen_thumb ("$directory/$file", $directory."/thumbs/".$file); echo ""; echo "\n\t"; echo "\"$file\"/\n"; echo "\n\n"; if(($counter % 3) == 0) { echo "
"; } } } if ($start > 0) { $new_uri = $SCRIPT_NAME . "?"; $new_uri .= 'dir=' . $_GET['dir']; if ($_GET['file']) $new_uri .= '&file=' . $_GET['file']; if ($_GET['s']) $new_uri .= '&s=' . $_GET['s']; $new_uri .= '&start=' . ($start - 18); $nesteforrige = 'Forrige ' . $nesteforrige; } echo "

$nesteforrige

"; closedir($dh); } } } // Genererer thumbnail av $from_file og lagrer den i $to_file. Antar // at alle bildene er jpg-bilder function gen_thumb ($from_file, $to_file) { global $max_w, $max_h; $image = imagecreatefromJPEG ($from_file); $w = imageSX ($image); $h = imageSY ($image); // Den minste av disse er aspektet man skal bruke $aspect_x = $max_w / $w; $aspect_y = $max_h / $h; $aspect = ($aspect_x < $aspect_y) ? $aspect_x : $aspect_y; // Lage kvadratiske thumbnails => driter i høyde/bredde-ting :) $new_w = 60; // $aspect * $w; $new_h = 60; // $aspect * $h; $offset_top = 0; $offset_left = 0; // Finn offset for å sentrere bildene :) if ($h > $w) { $offset_top = ($h-$w)/2; $h = $w; } else { $offset_left = ($w-$h)/2; $w = $h; } $to_image = ImageCreateTrueColor($new_w, $new_h); imagecopyresampled ( $to_image, $image, 0, 0, $offset_left, $offset_top, $new_w, $new_h, $w, $h ); imagejpeg ($to_image, $to_file); imagedestroy ($image); imagedestroy ($to_image); } // // Dette kan fjernes eller puttes i en annen fil // $directory = $_GET['dir']; $filename = $_GET['file']; // VIKTIG! // ~~~~~~~ // Denne testen er viktig å ha med, ellers kan folk begynne å snoke // rundt i mapper de ikke skal snoke rundt i. if (!check_path ($directory) || !check_path($filename)) { echo "

Error: ugyldig gallerinavn eller filnavn

"; } else { show_gallery ($directory); } include("footer.php"); ?>