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

    Coesistenza tra jquery validator e altro script javascript

    Buongiorno a tutti,
    sto sviluppando un piccolo sistema di accesso ad un'area riservata.
    Come classico c'è un form e ci sono due campi username e password con un tasto invia.
    codice:
    <form action="login.php" method="post" id="login">
        Username
        <input name="username" type="text" autocomplete="off" data-validation="length" data-validation-length="min5" data-validation-error-msg="Username troppo corto.">
        Password
        <input name="pass" type="password" autocomplete="off"  data-validation="length" data-validation-length="min5" data-validation-error-msg="Password troppo corta.">
        <button type="submit" onclick="formhash(this.form, this.form.pass);">Log-in</button><button type="reset">Reset</button></form>
    Di seguito lo script di Jquery validator per compiere una piccola validazione sui dati inseriti:
    codice:
    <script>
      $.validate({
        form : '#login',
      validateOnBlur : false
      });
    </script>
    La funzione formhash invece è cosi definita e permette di calcolare l'hash della password in locale sul client per non trasmetterla in chiaro sul server: Essa crea un campo password nuovo e nascosto inserendo l'hash della password e cancellando il campo originario con la password in chiaro.
    codice:
    function formhash(form, clearpass) {
       // Crea un elemento di input che verrà usato come campo di output per la password criptata.
       var p = document.createElement("input");
       // Aggiungi un nuovo elemento al tuo form.
       form.appendChild(p);
       p.name = "password";
       p.type = "hidden"
       p.value = hex_sha512(clearpass.value);
       // Assicurati che la password non venga inviata in chiaro.
       clearpass.value = "";
       // Come ultimo passaggio, esegui il 'submit' del form.
       form.submit();
    }
    Ora: quando premo sul pulsante submit lo script validator esegue molto bene il suo lavoro avvisandomi con mezzi impostati se sia l'username che la password sono troppo corti.
    Se la lunghezza va bene interviene la funzione di hash che tuttavia cancella il valore del campo passw creandone uno nascosto con l'hash della password. Trovando l'errore ora lo script validator non invia il post.
    Come posso far coesistere le due funzioni? Ossia:
    Il validator deve verificare la lunghezza e permettere l'invio del form solo quando essa è corretta.
    Successivamente la funzione di hash deve creare un campo nascosto e cancellare il valore del campo pass per evitare di trasmettere la password in chiaro.

    Ho pensato di sostituire il contenuto del campo pass con una stringa casuale che rispecchi comunque la lunghezza ma non mi sembra una soluzione elegante.
    Grazie!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che non capisco la necessità di criptare la password inviando il form in post non dovresti avere problemi, comunque per coesistere i due script devi lanciare la la funzione formhash quando validate e corretto togliendo onclick sul tasto submit che viene ignorato
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Premesso che non capisco la necessità di criptare la password inviando il form in post non dovresti avere problemi, comunque per coesistere i due script devi lanciare la la funzione formhash quando validate e corretto togliendo onclick sul tasto submit che viene ignorato
    OK, ho capito il procedimento ma a livello di codice come controllo il successo di validate e dunque carico la funzione formhash?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non uso e conosco validate, studiati la documentazione
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Premesso che la mia domanda era:
    Il validator deve verificare la lunghezza e permettere l'invio del form solo quando essa è corretta.
    E la sua risposta era praticamente la stessa cosa:
    devi lanciare la la funzione formhash quando validate e corretto togliendo onclick sul tasto submit che viene ignorato.
    Se non conosce la funzione le chiederei di non commentare solo per accumulare messaggi. Grazie

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da theboss280489 Visualizza il messaggio
    Se non conosce la funzione le chiederei di non commentare solo per accumulare messaggi. Grazie
    Se indicava da subito che le serviva il codice scritto e funzionante non sarei intervenuto.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    puoi usare il metodo submitHandler che viene richiamato solo quando la validazione è andata a buon fine. Esempio:

    codice:
    $.validate({
        form :'#login',
      validateOnBlur :false,
    submitHandler : function(form){
     //codice formhash
    }
      });

  8. #8
    Quote Originariamente inviata da Vindav Visualizza il messaggio
    puoi usare il metodo submitHandler che viene richiamato solo quando la validazione è andata a buon fine. Esempio:

    codice:
    $.validate({
        form :'#login',
      validateOnBlur :false,
    submitHandler : function(form){
     //codice formhash
    }
      });
    Grazie Vindav, nel caso in cui debba richiamare una funzione esterna posso farlo semplicemente in questo modo?

    codice:
    $.validate({
        form :'#login',
      validateOnBlur :false,
    submitHandler : function(form){
     formhash('mioform','campopassword');
    }
      });
    Naturalmente nella funzione deve esserci un comando che esegua il submit del post.
    Mi sbaglio?

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    certo, puoi richiamare una funzione esterna e fare il submit da li

  10. #10
    Quote Originariamente inviata da Vindav Visualizza il messaggio
    certo, puoi richiamare una funzione esterna e fare il submit da li
    Ci provo e aggiorno il post. Grazie!

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.