Visualizzazione dei risultati da 1 a 6 su 6

Discussione: File non "visto"

  1. #1

    File non "visto"

    Salve, ho un piccolo problema nel caricare una immagine avente, per mia comodità, lo stesso nome della pagina web. Il semplice codice funziona per stringhe alfanumeriche senza problemi, ma in questo caso, forse perché nel nome dell'immagine è presente una "ù", il file viene non visto e quindi è caricata l'immagine alternativa nd.jpg.
    Codice PHP:
    $copertina 'copertine/'.$albofix.'.jpg';
    if (
    file_exists($copertina)) {
    echo 
    "$albofix".".jpg'"." "."alt='n° $albo ($anno)'><br>";
    } else {
    echo 
    "nd.jpg'><br>";

    Nella cartella copertine il file è presente ma cercando di visualizzarlo da browser, la "ù" viene trasformata in "%C3%B9" e ricevo un 404... Eppure con tale stringa la pagina php omonima dell'immagine è correttamente caricata...

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    la file_exists è utilizzata su filesystem e quindi non riconosce eventuali codifiche utilizzate per gli url http. Quindi per la file_exists %C3%B9 non è 'ù' ma ...%C3%B9. Ovviamente il tuo file contiene la ù e non %C3%B9 e quindi non lo trova.
    Prova ad usare la urldecode/rawurldecode: if(file_exists(urldecode($copertina))). Oppure non permettere l'uso di caratteri speciali per le copertine
    Ultima modifica di boots; 08-11-2020 a 15:11

  3. #3
    Grazie per la risposta.
    Purtroppo urldecode non smuove la situazione.
    Vorrei capire perché in query string riesco a passare correttamente la ù, nel senso che la vedo nell'url della pagina, ma non funziona richiamando la copertina omonima che vorrei apparisse nella stessa pagina.
    Ho provato uno str_replace() rinominando anche l'immagine ma niente.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Devi usare urldecode(), non urlencode().
    La querystring la vedi bene perché il browser fa il decode per conto suo.

  5. #5
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Devi usare urldecode(), non urlencode().
    Ho usato appunto urldecode() ma non ho risolto.
    Ho anche caricato un duplicato dell'immagine con la "u" al posto della "ù", ed eventuale str_replace quando becca quella copertina che è il titolo della scheda/pagina PHP, ma niente.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    189
    Il metodo GET per query string: si "deve" codificare con percent enconding (però
    se non sanitizzi la url sei a rischio sicurezza, l'utente può
    scrivere caratteri arbitrari e creare codice Javascript
    malevolo) http://www.example.com/index.php?chiave=ciao+mondo $_GET['chiave']; // Stampa ciao mondo perché php usa internamente urldecode al posto tuo.
    echo dirname(__FILE__); //Stampa la directory corrente di dove risiede l'esecuzione del file però a volte in alcuni contesti la directory potrebbe cambiare.
    Quindi devi rivedere la logica della tua applicazione, recupero il nome del file da un form, se lo devo passare in query string lo codifico e poi il resto altrimenti nulla che male non fa.
    Ultima modifica di darbula; 09-11-2020 a 02:44

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 © 2024 vBulletin Solutions, Inc. All rights reserved.