Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Galley automatica da cartella

    Salve a tutti!
    Cercando sul web ho trovato questa gallery in cui basta mettere le foto in una cartella e lo script crea in automatico le thumbnails, l'elenco degli album, ecc... Questo script, come specificato nella pagina, ha però un bug: non accetta i caratteri speciali nè nei nomi dei file nè nei nomi delle cartelle. E' possibile modificare il codice per eliminare questo bug. Ho provato ad inserire un rawurlencode quando viene richiamato il nome del file senza alcun successo.
    Questo è il codice da modificare
    Codice PHP:
    $filetypes  = array(".png"".PNG"".jpg"".JPG"".jpeg"".JPEG"".gif"".GIF");$basedir    './immagini/gallery';$currentdir '';if(isset($_GET['f']) ? $_GET['f'] : '')    {    $currentdir '/'.$_GET['f'].'/';    }
    function 
    scandirSorted($path)    {    $sortedData  = array();    $data1       = array();    $data2       = array();    foreach(scandir($path) as $file)        {        if(!strstr($path'..'))            {            if(is_file($path.$file))                {                array_push($data2$file);                }            else                {                array_push($data1$file);                }            }        }    $sortedData array_merge($data1$data2);    return $sortedData;    }
    function 
    strpos_arr($haystack$needle)    {    if(!is_array($needle))        {        $needle = array($needle);        }    foreach($needle as $what)        {        if(($pos strpos($haystack$what)) !== false)            {            return $pos;            }        }    return false;    }
    function 
    addThumb($filename)    {    $filename    array_reverse(explode('.'$filename));    $filename[0] = 'smpgthumb.'.$filename[0];    $filename    implode('.'array_reverse($filename));    return $filename;    }
    if(
    is_dir($basedir.$currentdir))    {    $folder array_diff(scandirSorted($basedir.$currentdir), array('..''.''Thumbs.db''thumbs.db''.DS_Store'));    }
    foreach(
    $folder as $item)    {    if(!strstr(isset($_GET['f']), '..'))        {        if(!strstr($item'smpgthumb'))            {            if(strpos_arr($item$filetypes))                {                if(file_exists($basedir.$currentdir.'/'.addThumb($item)))                    {                    echo('<a href="'.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.$item)).'" data-lightbox="roadtrip"><img src="'.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.addThumb($item))).'" class="img" alt=""></a>');                    }                else                    {                    echo('<a href="'.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.$item)).'" data-lightbox="roadtrip"><img src="php/thumb.php?file='.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.$item)).'" class="img" alt=""></a>');                    }                }            else                {                echo('<a href="?f='.str_replace('//''/'str_replace(' ''%20'$currentdir.'/'.$item)).'">'.$item.'</a>');                }            }        }    }?> 
    Secondo me bisognerebbe modificare qualcosa nell'ultima parte di codice quando vengono creati i collegamenti.
    In attesa di una risposta, ringrazio anticipatamente ed invio cordiali saluti.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Per prima cosa dovresti riformattare il codice postato, così com'è non si capisce una mazza XD

  3. #3
    Scusami, ho fatto veloce e non mi ero accorto che era formattato male. Ecco il codice formattato bene:
    Codice PHP:
    $filetypes  = array(".png"".PNG"".jpg"".JPG"".jpeg"".JPEG"".gif"".GIF");
    $basedir    './immagini/gallery';
    $currentdir '';
    if(isset(
    $_GET['f']) ? $_GET['f'] : '')
        {
        
    $currentdir '/'.$_GET['f'].'/';
        }

    function 
    scandirSorted($path)
        {
        
    $sortedData  = array();
        
    $data1       = array();
        
    $data2       = array();
        foreach(
    scandir($path) as $file)
            {
            if(!
    strstr($path'..'))
                {
                if(
    is_file($path.$file))
                    {
                    
    array_push($data2$file);
                    }
                else
                    {
                    
    array_push($data1$file);
                    }
                }
            }
        
    $sortedData array_merge($data1$data2);
        return 
    $sortedData;
        }

    function 
    strpos_arr($haystack$needle)
        {
        if(!
    is_array($needle))
            {
            
    $needle = array($needle);
            }
        foreach(
    $needle as $what)
            {
            if((
    $pos strpos($haystack$what)) !== false)
                {
                return 
    $pos;
                }
           }
        return 
    false;
        }

    function 
    addThumb($filename)
        {
        
    $filename    array_reverse(explode('.'$filename));
        
    $filename[0] = 'smpgthumb.'.$filename[0];
        
    $filename    implode('.'array_reverse($filename));
        return 
    $filename;
        }

    if(
    is_dir($basedir.$currentdir))
        {
        
    $folder array_diff(scandirSorted($basedir.$currentdir), array('..''.''Thumbs.db''thumbs.db''.DS_Store'));
        }

    foreach(
    $folder as $item)
        {
        if(!
    strstr(isset($_GET['f']), '..'))
            {
            if(!
    strstr($item'smpgthumb'))
                {
                if(
    strpos_arr($item$filetypes))
                    {
                    if(
    file_exists($basedir.$currentdir.'/'.addThumb($item)))
                        {
                        echo(
    '<a href="'.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.$item)).'" data-lightbox="roadtrip"><img src="'.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.addThumb($item))).'" class="img" alt=""></a>');
                        }
                    else
                        {
                        echo(
    '<a href="'.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.$item)).'" data-lightbox="roadtrip"><img src="php/thumb.php?file='.str_replace('//''/'str_replace(' ''%20'$basedir.$currentdir.'/'.$item)).'" class="img" alt=""></a>');
                        }
                    }
                else
                    {
                    echo(
    '<a href="?f='.str_replace('//''/'str_replace(' ''%20'$currentdir.'/'.$item)).'">'.$item.'</a>');
                    }
                }
            }
        } 

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    seconde me sbagli approccio. mettere caratteri speciali nei nomi dei file e delle cartelle non è mai una buona cosa
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Lo so che non è una buona cosa ma purtroppo ho l'esigenza di usarli

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    se i caratteri sono contenuti in iso 8859-1 allora dovrebbe essere sufficiente utf8_decode/utf8_encode
    in caso contrario prova prima con url_encode e poi con url_decode
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    ho provato ad usare url_encode ma c'è un problema: mi trasforma lo slash del percorso del file in %2F. Come risolvo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.