Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, ci sono 4 o 5 cose che non vanno bene nella "strada che hai scritto".

    1 - Intanto fai attenzione a come hai scritto il pattern:
    codice:
    /^[a-z A-Z 0-9 \. - _]+$/
    c'è sicuramente qualche spazio di troppo o comunque inutile. Tieni sempre bene a mente che in una espressione regolare ogni singolo carattere ha una specifica rilevanza, per cui non puoi permetterti di inserire spazi random solo per rendere più leggibile il codice.

    Inoltre non serve fare l'escape del punto dentro una classe di caratteri (il blocco tra parentesi quadre)

    Se nella stringa non sono permessi gli spazi, il pattern va scritto così:
    codice:
    /^[a-zA-Z0-9_.-]+$/
    Se invece sono permessi anche gli spazi, puoi scriverlo così:
    codice:
    /^[a-zA-Z0-9_. -]+$/
    Inutile dire che questo, con tutti gli altri controlli del caso, dovrai farli anche lato server se tali dati vanno processati appunto lato server (come ha accennato Vincent.Zeno), dal momento che qualche malintenzionato può facilmente aggirare qualsiasi controllo lato client.

    2 - Cosa pensi che significhi il punto esclamativo in questa condizione?
    codice:
    if(!re.test(str)){    alert('CARATTERI OK');
    Si tratta di una negazione per cui, traducendo in umanese, significa "Se la stringa NON contiene solo i caratteri consentiti, allora è OK".
    Puoi capire da te stesso che quella negazione è di troppo, anzi fa esattamente il contrario di ciò che ti serve.

    Dovresti toglierla in questo modo:
    codice:
    if(re.test(str)){
        alert('CARATTERI OK');
    3 - La proprietà value di un campo di tipo file rappresenta il percorso del file selezionato, non solo il nome del file.
    Quindi quel value ti restituisce una cosa del genere:
    codice:
    "C:\fakepath\nome_del_file.txt"
    In realtà il suffisso, prima del nome del file, si tratta di un percorso fasullo per ragioni di sicurezza, ad ogni modo contiene sicuramente dei caratteri che non vuoi consentire.

    Quindi, se devi controllare solo il nome del file (compresa l'estensione), partendo dal value dell'elemento input dovrai considerare in qualche modo solo la parte dopo l'ultimo slash, oppure (metodo che consiglio) usare la proprietà name dell'oggetto file contenuto nel FileList restituito da quell'input (come proprietà files).

    Inoltre è necessario controllare la lunghezza del FileList per evitare possibili errori qualora non venga selezionato alcun file.

    Più facile farlo che spiegarlo; la tua funzione potrebbe essere impostata in questo modo:
    codice:
    function valida() {
      if (document.Modulo.campo_foto1.files.length === 0) return false;
      const re = /^[a-zA-Z0-9_. -]+$/;
      const str = document.Modulo.campo_foto1.files[0].name;
      if (re.test(str)) {
        alert('CARATTERI OK');
        return true;
      } else {
        alert("CARATTERI SPECIALI NON AMMESSI. \n RIMUOVILI E RIPROVA.");
        return false;
      }
    }
    4 - Suppongo tu voglia poi eseguire il submit del form, ma penso ci sia qualche problema con quel button che hai impostato in quel modo. Per il momento dovrebbe apparire solo l'alert ma non ho capito se lo script che hai impostato è incompleto e vai quindi ad eseguire il submit in qualche altro modo.
    Presumo ci sia da chiarire meglio anche questo aspetto. Nel caso ti consiglio di fare qualche ricerca del tipo javascript confirm form submit. e cercare di riportare scrupolosamente qualcuna tra le soluzioni trovate.

    Fai sapere.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    376
    Grazie del tuo prezioso anzi preziosissimo aiuto. Sei un grande
    Hai immaginato bene, infatti la form deve passare 2 campi nascosti, quindi al posto di
    alert
    ('CARATTERI OK'); dovrei inserire qualcosa come:
    document.Modulo.action = "carica_FOTO1.asp?hiddenId1=";
    document.Modulo.submit();
    avendo specificato prima che var Id = document.Modulo.hiddenId1.value
    Ma non saprei come passare la variabile e inoltre nella pagina che riceve i dati devo poter mantenere le proprietà dell'oggetto file, tipo:
    oUpload.Files("Width") o oUpload.Files("Height") o oUpload.GetFileName e non so se con il discorso javascript queste info riesco a mantenerle. Grazie
    Chi Crede in Me non Perirà MAI

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.