• Bannato User Attivo

    Mi da questo erroraccio:
    Fatal error: Call to undefined function: asc() in /home/vhosts/skiforum.it/var/www/html/skiforum/upload-save.php on line 51

    e la riga 51 è questa:

            &#40;&#40;asc&#40;$c&#41;>=asc&#40;'a'&#41;&#41; && &#40;asc&#40;$c&#41;<=asc&#40;'z'&#41;&#41;&#41; || 
    

    E poi un dubbio.

    Il ".jpg" finale della foto viene modificato? :mmm: :mmm: :mmm:


  • Bannato User Attivo

    Ma asc che cosa è?
    Ho cercato php.net ma non ho trovat osia una funzione del PHP. Piuttosto sembra una cosa simile all'asc e desc dei comandi per mysql.

    Fatto sta che dopo un paio di settimane ancora non riesco a salvare i nomi delle foto in modo "furbo" :arrabbiato:


  • Bannato User Attivo

    Ho pensato di cambiare completamente strada e di usare questa funzione:

    #con funzione
    function make_url_friendly&#40;$url&#41; 
    &#123; 
    
        $url = strtolower&#40;$url&#41;; 
    
        $find = array&#40;' ', 
                '&', 
                '\r\n', 
                '\n', 
                '/', 
                '\\', 
                '+'&#41;; 
    
        $url = str_replace &#40;$find, '-', $url&#41;; 
    
        $find = array&#40;' ', 
                'é', 
                'è', 
                'ë', 
                'ê'&#41;; 
          
        $url = str_replace &#40;$find, 'e', $url&#41;; 
          
        $find = array&#40;' ', 
                'ó', 
                'ò', 
                'ô', 
                'ö'&#41;; 
          
        $url = str_replace &#40;$find, 'o', $url&#41;; 
          
        $find = array&#40;' ', 
                'á', 
                'à', 
                'â', 
                'ä'&#41;; 
          
        $url = str_replace &#40;$find, 'a', $url&#41;; 
          
        $find = array&#40;' ', 
                'í', 
                'ì', 
                'î', 
                'ï'&#41;; 
          
        $url = str_replace &#40;$find, 'i', $url&#41;; 
          
        $find = array&#40;' ', 
                'ú', 
                'ù', 
                'û', 
                'ü'&#41;; 
          
        $url = str_replace &#40;$find, 'u', $url&#41;; 
          
        $find = array&#40;'/&#91;^a-z0-9\-<>&#93;/', 
                '/&#91;\-&#93;+/', 
                '/<&#91;^>&#93;*>/'&#41;; 
    
        $repl = array&#40;'', 
                '-', 
                ''&#41;; 
    
        $url =  preg_replace &#40;$find, $repl, $url&#41;; 
    
        return $url; 
    
    &#125;
    $nome1 = make_url_friendly&#40;$nomefile&#41;;
    
    
    copy&#40;$HTTP_POST_FILES&#91;'file'&#93;&#91;'tmp_name'&#93;,"/home/vhosts/skiforum.it/var/www/html/skiforum/upload/".$categoria_foto."/".$nome1&#41;;
    

    Funziona ma mi da un problema 😞 :arrabbiato:
    In pratica mi carica dei file senza estensione. Infatti converte il "." della estensione in un non spazio e perciò mi carica dei file del tipo:
    nome-correttojpg
    anzichè
    nome-corrett.jpg

    Come potrei agire?


  • Bannato User Attivo

    Ho capito come potrei fare.
    Basterebbe riuscire a dire allo script di NON cambiare i "." con un "nulla" ma nesì lasciarli ".".

    Come si fa? :mmm:


  • Moderatore

    Ciao.

    Al volissimo, credo che il problema sia qui:

    $find = array('/[^a-z0-9-<>]/',
    '/[-]+/',
    '/<[^>]*>/');

    $repl = array('',
            '-',
            '');
    
    $url =  preg_replace ($find, $repl, $url);
    

    In pratica, se non ho preso un abbaglio, sostituisce qualunque cosa ce non sia lettera minuscola, numero, - < > in "" ossia in nulla. Quindi anche i punti

    Dovresti aggiungere . in quella stringa per non avere problemi
    :ciauz:


  • Bannato User Attivo

    @massy said:

    $find = array('/[^a-z0-9-<>]/',
    '/[-]+/',
    '/[.]/'
    '/<[^>]*>/');

    $repl = array('',
    '-',
    '');

    $url = preg_replace ($find, $repl, $url);

    Va bene aggiunto in quel modo? :mmm:
    Grazie infinite. Davvero un grosso problema per me.


  • Moderatore

    🙂

    Io pensavo ad una cosa del genere:

    $find = array('/[^a-z0-9-<>.]/',
    '/[-]+/',
    '/<[^>]*>/');

    $repl = array('',
    '-',
    '');

    $url = preg_replace ($find, $repl, $url);

    :ciauz:


  • Bannato User Attivo

    Proverò prima il tuo codice e vi saprò dire come funziona 🙂
    Davvero grazie 😄


  • User Attivo

    questo per rinominare il file se già esiste un file con lo stesso nome:

    $path="" // lasciare nullo o inserire la dir di upload
    $nome_file = $_FILES&#91;'UploadedFile'&#93;&#91;'name'&#93;;
    while &#40;file_exists&#40;$path.$nome_file &#41;&#41;  &#123;
    echo "<h4>Il file già esiste lo abbiamo rinominato</h4>";
    $nome_file = rand&#40;1,9&#41; . "-$nome_file" ; &#125;
    

    se il file già esiste aggiunge un numero random tra 1 e 9 un trattino e il nome originale:

    foto.jpg diventa 3-foto.jpg
    

    se un file con lo stesso nome è stato uploadato 9 volte e quindi tutti i random da 1 e 9 sono stati usati si avrà questa rinominazione:

    foto.jpg diventa 4-7-foto.jpg
    

    dove 4 e 7 sono random.


  • Bannato User Attivo

    Questa si che è un controllo estremamente interessante. Ora per evitare "doppioni" ho messo in testa al nome del file l'ID della riga nella quale il file verrà memorizzato.

    file_exist fa un controllo solamente sul nome del file oppure controlla proprio l'intero file?

    Cioè se metto due foto uguali ma con nome diverso me le becca? E c'è un modo per fare quest ocontrollo. Si eviterebbero i doppioni non voluti.


  • User Attivo

    file_exist fa un controllo solamente sul nome del file oppure controlla proprio l'intero file?
    [url=http://www.php.net/file_exists]file_exists

    sono quasi certo che si limiti al solo controllo del nome e di certo se ci sono due file uguali con nomi diversi non te li scova.

    Per confrontare se due file hanno lo stesso contenuto potresti confrontare il contenuto degli stessi restituito da [url=http://www.php.net/file_get_contents]file_get_contents

    Oppure fare una ricerca su google per accorgersi che non è così semplice:
    [url=http://www.google.com/search?&q=compare+files+php]compare files php