Link dekódolás
Van nekem egy ilyenem:A problémám az lenne hogy az ékezetes fájlokat nem támogatja... Tehát ha a fájl neve az hogy "Pokoli szomszédok.rar", akkor a listázó úgy nyitja meg hogy http://xy/Pokoli szomszédok.rar... De mivel a böngésző nem kezeli az ékezetes karaktereket, ezért 404-est ír.
Helyesen így lenne: http://xy/Pokoli%20Szomsz%E9dok%205.rar
Hogy lehetne megoldani, hogy ékezetes fájlokat is megnyisson 404-es nélkül?
Kösz! :)
■ - <?
- Mappa Listázó Script - 2-es Verzió
- ====================================
- KONFIGURÁCIÓ
- =============
- Itt lehet testreszabni a Mappa Listázót.
- Az alapbeállításokon úgy lehet változtatni,hogy vagy engedélyezzük az adott funkciót (true) vagy kikapcsoljuk (false).
- Máskor konkrét adatra lesz szükség (lásd ott..).
- 1) Kiinduló mappa -
- Ha Főmappának azt kívánjuk megjeleníteni ahova fel lett töltve a script,akkor maradjon így: '.', ellenkező esetben az idézőjelek közé be kell írni a mappa relatív útvonalát,mely ahhoz a könyvtárhoz képest értékelődik ki,amelyben az index.php megtalálható.
- */
- $startdir = '.';
- /*
- 2) Előnézet -
- Képfájlokat rámutatás esetén a script automatikusan megjelenít egy előnézeti képben.
- A funkció kikapcsolásához írjuk át false-ra.
- A helyes működéshez szükség van GD2 installálásához.
- */
- $showthumbnails = true;
- /*
- 3) Almappák listázása -
- Almappák elérhetők legyenek?
- */
- $showdirs = true;
- /*
- 4) Erőltetett letöltés -
- A listázott fájlra való klikkelés esetén a böngésző azt automatikusan megnyitja. Amennyiben a megnyitás helyett a letöltést forszírozzuk,akkor állítsuk true-ra.
- */
- $forcedownloads = false;
- /*
- 5) Tartalmak elrejtése -
- Ha bizonyos fájlokat illetve mappákat nem kívánunk megjeleníteni,akkor azt itt lehet megtenni. Az elrejtés a fájl/mappa neve alapján történik.
- Ha egy fájlnév bármely része egyezik a beírttal,akkor azt el fogja rejteni!
- */
- $hide = array(
- 'dlf',
- 'index.php',
- 'Thumbs',
- '.htaccess',
- '.htpasswd'
- );
- /*
- 6) Index fájlok megjelenítése -
- Ha egy mappában index fájl található,akkor a listázás helyett a böngésző azt fogja megnyitni. Amennyiben ezt szeretnénk elkerülni,maradjon false-on a beállítás.
- */
- $displayindex = false;
- /*
- 7) Feltöltések engedélyezése -
- Engedélyezés esetén,a felhasználók szabadon tudnak majd feltölteni bármely megjelenített mappába.
- Ha hiba lép fel,a legvalószinűbb,hogy nincs megadva mások számára írási jog.
- Ezen Total Commanderrel változtathatunk. Ki kell jelöli a mappát,majd klikk a Fájl menüpontra,azon belül pedig az attribútumok módosítására és adjunk 777 jogot neki.
- */
- $allowuploads = false;
- /*
- 8) Fájlok felülírása -
- Ha egy felhasználó által feltöltött fájl neve azonos a már meglévővel,akkor azt felülírja?
- */
- $overwrite = false;
- /*
- 9) Index fájlok -
- A következő felsorolásban találjuk azokat az index fájlokat,amelyeket a script azon esetben fog megnyitni,ha korábban azt engedélyeztük ($displayindex = true).
- Szabadon elvehető illetve hozzáadható tartalom.
- Ha korábban már kikapcsoltuk ($displayindex = false) akkor a megszokott módon csak listázni fogja ezeket.
- */
- $indexfiles = array (
- 'index.html',
- 'index.htm',
- 'default.htm',
- 'default.html'
- );
- /*
- 10) Ikonok -
- Ha fel nem sorolt kiterjesztéshez szeretnénk ikont hozzáadni,akkor azt itt lehet megtenni.
- Egy adott kiterjesztéshez egy bizonyos ikon rendelhető a következő formátumban 'kiterjesztés' => 'fájlnév',
- A működéshez ezeket a képfájlokat fel kell tölteni a dlf nevű mappába.
- Ha a már meglévő ikonokat kívánjuk másikra lecserélni,akkor nincs más teendő,mint a dlf mappában kicserélni a képet,ügyelve a pontos név megtartására.
- Ikonok optimális mérete: 16 x 16 képpont.
- */
- $filetypes = array (
- 'png' => 'jpg.gif',
- 'jpeg' => 'jpg.gif',
- 'bmp' => 'jpg.gif',
- 'jpg' => 'jpg.gif',
- 'gif' => 'gif.gif',
- 'zip' => 'archive.png',
- 'rar' => 'archive.png',
- 'exe' => 'exe.gif',
- 'setup' => 'setup.gif',
- 'txt' => 'text.png',
- 'htm' => 'html.gif',
- 'html' => 'html.gif',
- 'fla' => 'fla.gif',
- 'swf' => 'swf.gif',
- 'xls' => 'xls.gif',
- 'doc' => 'doc.gif',
- 'sig' => 'sig.gif',
- 'fh10' => 'fh10.gif',
- 'pdf' => 'pdf.gif',
- 'psd' => 'psd.gif',
- 'rm' => 'real.gif',
- 'mpg' => 'video.gif',
- 'mpeg' => 'video.gif',
- 'mov' => 'video2.gif',
- 'avi' => 'video.gif',
- 'eps' => 'eps.gif',
- 'gz' => 'archive.png',
- 'asc' => 'sig.gif',
- );
- /*
- A beállításoknak vége! Most már készen áll,hogy feltöltsük a szerverre.
- <--INNENTŐL MÁR CSAK ABBAN AZ ESETBEN MÓDOSÍTSUNK,HA TUDJUK MIT CSINÁLUNK!-->
- */
- error_reporting(0);
- if(!function_exists('imagecreatetruecolor')) $showthumbnails = false;
- $leadon = $startdir;
- if($leadon=='.') $leadon = '';
- if((substr($leadon, -1, 1)!='/') && $leadon!='') $leadon = $leadon . '/';
- $startdir = $leadon;
- if($_GET['dir']) {
- //check this is okay.
- if(substr($_GET['dir'], -1, 1)!='/') {
- $_GET['dir'] = $_GET['dir'] . '/';
- }
- $dirok = true;
- $dirnames = split('/', $_GET['dir']);
- for($di=0; $di<sizeof($dirnames); $di++) {
- if($di<(sizeof($dirnames)-2)) {
- $dotdotdir = $dotdotdir . $dirnames[$di] . '/';
- }
- if($dirnames[$di] == '..') {
- $dirok = false;
- }
- }
- if(substr($_GET['dir'], 0, 1)=='/') {
- $dirok = false;
- }
- if($dirok) {
- $leadon = $leadon . $_GET['dir'];
- }
- }
- if($_GET['download'] && $forcedownloads) {
- $file = str_replace('/', '', $_GET['download']);
- $file = str_replace('..', '', $file);
- if(file_exists($leadon . $file)) {
- header("Content-type: application/x-download");
- header("Content-Length: ".filesize($leadon . $file));
- header('Content-Disposition: attachment; filename="'.$file.'"');
- readfile($leadon . $file);
- die();
- }
- }
- if($allowuploads && $_FILES['file']) {
- $upload = true;
- if(!$overwrite) {
- if(file_exists($leadon.$_FILES['file']['name'])) {
- $upload = false;
- }
- }
- if($upload) {
- move_uploaded_file($_FILES['file']['tmp_name'], $leadon . $_FILES['file']['name']);
- }
- }
- $opendir = $leadon;
- if(!$leadon) $opendir = '.';
- if(!file_exists($opendir)) {
- $opendir = '.';
- $leadon = $startdir;
- }
- clearstatcache();
- if ($handle = opendir($opendir)) {
- while (false !== ($file = readdir($handle))) {
- //first see if this file is required in the listing
- if ($file == "." || $file == "..") continue;
- $discard = false;
- for($hi=0;$hi<sizeof($hide);$hi++) {
- if(strpos($file, $hide[$hi])!==false) {
- $discard = true;
- }
- }
- if($discard) continue;
- if (##kukac##filetype($leadon.$file) == "dir") {
- if(!$showdirs) continue;
- $n++;
- if($_GET['sort']=="date") {
- $key = @filemtime($leadon.$file) . ".$n";
- }
- else {
- $key = $n;
- }
- $dirs[$key] = $file . "/";
- }
- else {
- $n++;
- if($_GET['sort']=="date") {
- $key = @filemtime($leadon.$file) . ".$n";
- }
- elseif($_GET['sort']=="size") {
- $key = @filesize($leadon.$file) . ".$n";
- }
- else {
- $key = $n;
- }
- $files[$key] = $file;
- if($displayindex) {
- if(in_array(strtolower($file), $indexfiles)) {
- header("Location: $file");
- die();
- }
- }
- }
- }
- closedir($handle);
- }
- //sort our files
- if($_GET['sort']=="date") {
- @ksort($dirs, SORT_NUMERIC);
- @ksort($files, SORT_NUMERIC);
- }
- elseif($_GET['sort']=="size") {
- @natcasesort($dirs);
- @ksort($files, SORT_NUMERIC);
- }
- else {
- @natcasesort($dirs);
- @natcasesort($files);
- }
- //order correctly
- if($_GET['order']=="desc" && $_GET['sort']!="size") {$dirs = @array_reverse($dirs);}
- if($_GET['order']=="desc") {$files = @array_reverse($files);}
- $dirs = @array_values($dirs); $files = @array_values($files);
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Mappa listázása...</title>
- <link rel="stylesheet" type="text/css" href="dlf/styles.css" />
- <?
- if($showthumbnails) {
- ?>
- <script language="javascript" type="text/javascript">
- <!--
- function o(n, i) {
- document.images['thumb'+n].src = 'dlf/i.php?f='+i;
- }
- function f(n) {
- document.images['thumb'+n].src = 'dlf/trans.gif';
- }
- //-->
- </script>
- <?
- }
- ?>
- </head>
- <body>
- <div id="container">
- <h1>Könyvtár: <?=dirname($_SERVER['PHP_SELF']).'/'.$leadon;?></h1>
- <div id="breadcrumbs"> <a href="<?=$_SERVER['PHP_SELF'];?>">Főmappa</a>
- <?
- $breadcrumbs = split('/', $leadon);
- if(($bsize = sizeof($breadcrumbs))>0) {
- $sofar = '';
- for($bi=0;$bi<($bsize-1);$bi++) {
- $sofar = $sofar . $breadcrumbs[$bi] . '/';
- echo ' > <a href="'.$_SERVER['PHP_SELF'].'?dir='.urlencode($sofar).'">'.$breadcrumbs[$bi].'</a>';
- }
- }
- $baseurl = $_SERVER['PHP_SELF'] . '?dir='.$_GET['dir'] . '&';
- $fileurl = 'sort=name&order=asc';
- $sizeurl = 'sort=size&order=asc';
- $dateurl = 'sort=date&order=asc';
- switch ($_GET['sort']) {
- case 'name':
- if($_GET['order']=='asc') $fileurl = 'sort=name&order=desc';
- break;
- case 'size':
- if($_GET['order']=='asc') $sizeurl = 'sort=size&order=desc';
- break;
- case 'date':
- if($_GET['order']=='asc') $dateurl = 'sort=date&order=desc';
- break;
- default:
- $fileurl = 'sort=name&order=desc';
- break;
- }
- ?>
- </div>
- <div id="listingcontainer">
- <div id="listingheader">
- <div id="headerfile"><a href="<?=$baseurl . $fileurl;?>">Fájl neve</a></div>
- <div id="headersize"><a href="<?=$baseurl . $sizeurl;?>">Méret</a></div>
- <div id="headermodified"><a href="<?=$baseurl . $dateurl;?>">Utoljára módosítva</a></div>
- </div>
- <div id="listing">
- <?
- $class = 'b';
- if($dirok) {
- ?>
- <div><a href="<?=$_SERVER['PHP_SELF'].'?dir='.urlencode($dotdotdir);?>" class="<?=$class;?>"><img src="dlf/dirup.png" alt="Vissza" /><strong>..</strong> <em>-</em> <?=date ("Y-m-d", filemtime($dotdotdir));?></a></div>
- <?
- if($class=='b') $class='w';
- else $class = 'b';
- }
- $arsize = sizeof($dirs);
- for($i=0;$i<$arsize;$i++) {
- ?>
- <div><a href="<?=$_SERVER['PHP_SELF'].'?dir='.urlencode($leadon.$dirs[$i]);?>" class="<?=$class;?>"><img src="dlf/folder.png" alt="<?=$dirs[$i];?>" /><strong><?=$dirs[$i];?></strong> <em>-</em> <?=date ("Y-m-d", filemtime($leadon.$dirs[$i]));?></a></div>
- <?
- if($class=='b') $class='w';
- else $class = 'b';
- }
- $arsize = sizeof($files);
- for($i=0;$i<$arsize;$i++) {
- $icon = 'unknown.png';
- $ext = strtolower(substr($files[$i], strrpos($files[$i], '.')+1));
- $supportedimages = array('gif', 'png', 'jpeg', 'jpg');
- $thumb = '';
- if($showthumbnails && in_array($ext, $supportedimages)) {
- $thumb = '<span><img src="dlf/trans.gif" alt="'.$files[$i].'" name="thumb'.$i.'" /></span>';
- $thumb2 = ' onmouseover="o('.$i.', \''.urlencode($leadon . $files[$i]).'\');" onmouseout="f('.$i.');"';
- }
- if($filetypes[$ext]) {
- $icon = $filetypes[$ext];
- }
- $filename = $files[$i];
- if(strlen($filename)>43) {
- $filename = substr($files[$i], 0, 40) . '...';
- }
- $fileurl = $leadon . $files[$i];
- if($forcedownloads) {
- $fileurl = $_SESSION['PHP_SELF'] . '?dir=' . urlencode($leadon) . '&download=' . urlencode($files[$i]);
- }
- ?>
- <div><a href="<?=$fileurl;?>" target="_blank" class="<?=$class;?>"<?=$thumb2;?>><img src="dlf/<?=$icon;?>" alt="<?=$files[$i];?>" /><strong><?=$filename;?></strong> <em><?=round(filesize($leadon.$files[$i])/1024);?>KB</em> <?=date ("Y-m-d", filemtime($leadon.$files[$i]));?><?=$thumb;?></a></div>
- <?
- if($class=='b') $class='w';
- else $class = 'b';
- }
- ?></div>
- </div>
- </div>
- </body>
- </html>
Helyesen így lenne: http://xy/Pokoli%20Szomsz%E9dok%205.rar
Hogy lehetne megoldani, hogy ékezetes fájlokat is megnyisson 404-es nélkül?
Kösz! :)
urlencode