Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329

    Se carico file con caratteri del tipo £-$-% da problemi in lettura....

    Come risolvere?
    Anche se ci sono dei file che nel nome hanno le parentesi, non va, ma qui ho risolto con un str_replace, mentre per gli altri: "£", "$", "%", etc...
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  2. #2
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Il codice in questione:
    Codice PHP:

    if (isset($_FILES["file"]) && $_POST["evento_button"]!="Vai alla gallery") {
        
    $tmp_name $_FILES["file"]["tmp_name"];
        
    $name $_FILES["file"]["name"];
        
    //echo $_POST["evento_button"];
        //$name = decodeUTF8($name);
        //controllo che non ci siano caratteri speciali, che non consentono il caricamento della foto sulla pagina
        
    if(strpos($name"(") ){ $name=str_replace("("""$name); if(strpos($name")") ){ $name=str_replace(")"""$name);    }}
        if(
    strpos($name"à") ){ $name=str_replace("à""a\'"$name); }
        
        
    move_uploaded_file($tmp_name"$root$dir_gallery/$name"); 
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  3. #3
    potresti usare una bella espressione regolare per risolverti il problema lasciando solo lettere, numeri, punti e trattini

    preg_replace('#[^A-Z0-9\.]{1-}#', '-', $name);

    in ogni caso ti sconsiglio di salvarlo con un nome di questo tipo, anche perché ci potrebbero essere dei doppioni

    qualcosa tipo

    codice:
    // Acquisisce l'estensione del file uploadato
    $extension = array_pop(explode('.', $_FILES["file"]["name"]));
    
    // Il nome del file e la path di destinazione
    $name = '';
    $path = '';
    
    // Prova fin quando non trova un nome unico
    do
    {
        // Costruisce il nome
        $name = sha1(uniqid(microtime(), true)) . '.' . $ext;
    }
    while(file_exists(($path = $root . $dir_gallery . '/' . $name)));
    
    // Sposta il file nella directory di destinazione
    move_uploaded_file($_FILES["file"]["tmp_name"], $path);
    Con questo codice non solo generi un nome casuale mantenendo l'estensione e ti assicuri che è unico prima di usarlo, ma hai anche il vantaggio che non avendo il nome del file è inaccessibile direttamente o per lo meno fin quando non si conosce il nome e si sa dov'è messo (ma comunque si deve andare a guardare)

    se ovviamente per inviare le immagini usi uno script php piuttosto che fare accedere direttamente il browser risolvi il problema alla base

    ah, molto importante, sarebbe conveniente, se ne hai bisogno, creare la thumbnail dopo che sposti l'immagine e aprire l'immagine e salvarla in jpg l'immagine uploadata cosi da eliminare qualsiasi contenuto anomalo salvato nell'immagine (jpg e lossy di conseguenza dati strutturati nell'immagine verrebbero corrotti e non sarebbero utilizzabili)

  4. #4
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Per le estensioni utilizzo un'altra funzione list(,,$ext_) = getimagesize($file);
    Per il nome univoco non mi serve, in quanto il file può essere riscritto...è fatto apposta.
    Grazie per il consiglio dell'espressione regolare, ora provo e ti faccio sapere
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  5. #5
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Niente non va...mi da sempre un riquadro senza l'immagine (che sarebbe il file).
    Leggendo l'HTML che enera il PHP, nell' "src" del file (immagine) che ha il nome -> Copià di test01.jpg c'è -> Copi� di test01.jpg
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  6. #6
    Originariamente inviato da Donovant
    Per le estensioni utilizzo un'altra funzione list(,,$ext_) = getimagesize($file);
    Per il nome univoco non mi serve, in quanto il file può essere riscritto...è fatto apposta.
    Grazie per il consiglio dell'espressione regolare, ora provo e ti faccio sapere
    con list(,,$ext_) = getimagesize($file) non estrai l'estensione ma il tipo d'immagine, sono due cose diverse

    Originariamente inviato da Donovant
    Niente non va...mi da sempre un riquadro senza l'immagine (che sarebbe il file).
    Leggendo l'HTML che enera il PHP, nell' "src" del file (immagine) che ha il nome -> Copià di test01.jpg c'è -> Copi� di test01.jpg
    cosa metti tu nel src del file immagine? perché se ci metti il nome del file cosi com'è e normale che non funzioni

    inoltre, molto importante, in che formato ti arrivano i dati dal browser? se è utf8 bisogna specificarlo nelle preg

  7. #7
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Si lo so che con list(,,$ext_) = getimagesize($file), ma ho messo il numero dato in "ext_" in un array composto in this way $ext[$ext_[0]=>"gif"] che starebbe per [1=>gif]...quindi va, anche perchè l'ho testato con "echo".

    Nel "src", viene inserito il nome dell'immagin con rispettivo path.
    Come faccio a sapere se è "utf8"?
    Grazie cmq.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  8. #8
    se è o meno utf8 dipende dalla pagina html/headers che invii al browser ... se non specifichi nulla dipende dalla configurazione del webserver

    se a te compare dentro src il nome del file originale e non quello corretto significa che passi quello originale e non quello corretto

  9. #9
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Allora nel META inserisco "charset=utf-8" solitamente, ed in effetti il file passato è quello originale non "filtrato".
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  10. #10
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Ho risolto così, anche se non mi sembra l'approccio migliore, magari qualcuno me ne saprebbe consigliare uno migliore:

    Codice PHP:

    function codifica_charSpeciali($str_){
        
    $str $str_;
        
    $str str_replace("\"""__quot"$str);
        
    $str str_replace("&""__amp"$str);
        
    $str str_replace("€""__euro"$str);
        
    $str str_replace("Á""__Aacute"$str);
        
    $str str_replace("á""__aacute"$str);
        
    $str str_replace("À""__Agrave"$str);
        
    $str str_replace("à""__agrave"$str);
        
    $str str_replace("Ã""__Atilde"$str);
        
    $str str_replace("ä ""__auml"$str);
        
    $str str_replace("ç""__ccedil"$str);
        
    $str str_replace("é""__eacute"$str);
        
    $str str_replace("È""__Egrave"$str);
        
    $str str_replace("è""__egrave"$str);
        
    $str str_replace("É""__Eacute"$str);
        
    $str str_replace("í""__iacute"$str);
        
    $str str_replace("Ó""__Oacute"$str);
        
    $str str_replace("ó ""__oacute"$str);
        
    $str str_replace("Ò""__Ograve"$str);
        
    $str str_replace("ò""__ograve"$str);
        
    $str str_replace("Ì""__Igrave"$str);
        
    $str str_replace("ì""__igrave"$str);
        
    $str str_replace("£""__pound"$str);
        
    $str str_replace("®""__reg"$str);
        
    $str str_replace("ú""__uacute"$str);
        
    $str str_replace("ù""__ugrave"$str);
        
    $str str_replace("‘""__lsquo"$str);
        
    $str str_replace("’""__rsquo"$str);
        
    $str str_replace("“""__ldquo"$str);
        
    $str str_replace("”""__rdquo"$str);
        
    $str str_replace("»""__raquo"$str);
        
    $str str_replace("« ""__laquo"$str);
        
    $str str_replace("⁄""__frasl"$str);
     return 
    $str;      
    }

    function 
    decodifica_charSpeciali($str_){
        
    $str $str_;
        
    $str str_replace("(""_"$str);
        
    $str str_replace(")""_"$str);
        
    $str str_replace("__quot""\""$str);
        
    $str str_replace("__amp""&"$str);
        
    $str str_replace("__euro""€"$str);
        
    $str str_replace("__Aacute""Á"$str);
        
    $str str_replace("__aacute""á"$str);
        
    $str str_replace("__Agrave""À"$str);
        
    $str str_replace("__agrave""à"$str);
        
    $str str_replace("__Atilde""Ã"$str);
        
    $str str_replace("__auml""ä "$str);
        
    $str str_replace("__ccedil""ç"$str);
        
    $str str_replace("__eacute""é"$str);
        
    $str str_replace("__Egrave""È"$str);
        
    $str str_replace("__egrave""è"$str);
        
    $str str_replace("__Eacute""É"$str);
        
    $str str_replace("__iacute""í"$str);
        
    $str str_replace("__Oacute""Ó"$str);
        
    $str str_replace("__oacute""ó "$str);
        
    $str str_replace("__Ograve""Ò"$str);
        
    $str str_replace("__ograve""ò"$str);
        
    $str str_replace("__Igrave""Ì"$str);
        
    $str str_replace("__igrave""ì"$str);
        
    $str str_replace("__pound""£"$str);
        
    $str str_replace("__reg""®"$str);
        
    $str str_replace("__uacute""ú"$str);
        
    $str str_replace("__ugrave""ù"$str);
        
    $str str_replace("__lsquo""‘"$str);
        
    $str str_replace("__rsquo""’"$str);
        
    $str str_replace("__ldquo""“"$str);
        
    $str str_replace("__rdquo""”"$str);
        
    $str str_replace("__raquo""»"$str);
        
    $str str_replace("__laquo""« "$str);
        
     return 
    $str
    }

    if (isset(
    $_FILES["file"]) && $_POST["evento_button"]!="Vai alla gallery") {
        
    $tmp_name $_FILES["file"]["tmp_name"];
        
    $name codifica_charSpeciali($_FILES["file"]["name"]);
       
    move_uploaded_file($tmp_name"$root$dir_gallery/$name");
    }
    .
    .
    .
    $nome_img[0] = $f;
    $nome_img[0] = decodifica_charSpeciali($nome_img[0]);
    echo 
    "<div name='cont_img' id='cont_img_".$i."' class='cont_img'>
                [url='catalogo/"
    .$dir_gallery."/"."$f"."'][img]catalogo/".$dir_gallery."/mini/mini_$f[/img][/url]<div class='multiBoxDesc mb".$i."'></div>
    </div>; 
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

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.