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

    controllo max caratteri su textarea

    Ciao a tutti.
    Ho questo js che mi verifica (e limita) la quantità di caratteri in una textarea:
    codice:
    function check_textarea(){
    var max_length = 160;
    var campo = document.getElementById('_testo').value.length;
    if (campo >= max_length){
    	alert("La descrizione dell\'annuncio può contenere massimo " + max_length + " caratteri.");
    	document.getElementById('_testo').value = document.getElementById('_testo').value.substring(0,max_length);
    	}
    }
    Se io inserisco testo a mano, arrivato a 160 caratteri mi spunta giustamente la finestra di avviso.
    Se io incollo un testo più lungo di 160 caratteri, mi ricompare giustamente la stessa finestra che quando chiudo mi elimina il testo eccedente.
    Fin qui tutto bene.
    Però mi ritrovo sul db alcuni record ove nella stessa finestra sono stati inseriti migliaia di caratteri, come se fosse stato bypassato il controllo.
    I caratteri (incollati) presumo arrivino da un qualche documento Word o simile, il testo infatti inizia con
    codice:
    <!--[if gte mso 9]><xml>
    <w:WordDocument>
    <w:View>Normal</w:View>
    <w:Zoom>0</w:Zoom>
    <w:TrackMoves />
    <w:TrackFormatting />
    <w:HyphenationZone>14</w:HyphenationZone>
    ....
    Ora mi chiedo, come è possibile bypassare il controllo? Oltretutto non si tratta di testo pseudo SPAM, bensì di testo logico ed in linea con quello che ci si aspetta in quella textarea.
    Siccome in quella textarea non devono venir incollati tag html, all'atto di inserire il testo nel db, via PHP, filtro con strip_tags(valore_campo).
    Ma ciò nonostante mi ritrovo con qualcuno che "riesce" a bypassare tutti e due i controlli, lato client e lato server.

    Idee su come uccidere chi combina sto disastro?

  2. #2
    Al momento mi viene in mente una sola considerazione, che tu non indichi negli script che hai pubblicato:
    la funzione check_textarea() come e quando viene invocata?

    Tramite un ONCHANGED nel tag TEXTAREA?
    Tramite un setInterval ?

    In entrambi questi casi, bsata che qualcuno disabiliti javascript nel suo browser e potrà inserire tutto il testo che vuole...

    Forse dovresti fare comunque anche un controllo nella applicazione php che riceve i dati e li salva nel db.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  3. #3
    Hai ragione, ho scordato di pubblicare come richiamo il js
    Eccolo:
    codice:
    <textarea rows="5" cols="50" name="testo" id="_testo" onkeyup="javascript:check_textarea();" onchange="javascript:check_textarea();"></textarea>

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    I problemi vanno separati quello js lo affronti qui quello php nel forum php, come te già stato detto se js è disattivato il controllo dei caratteri viene bypassato, ora la domanda è vuoi bloccare l'operazione lato client se l'utente non ha attivo js non inserisce nulla nel form oppure preferisci controllare i dati alto server?
    Nel primo caso puoi fare così: metti tutto il forum dentro un div con display:none e al caricamento lo visualizzi (onload=function(){document.getElementBy('divconte nitoreform').style.display='block'}) e con il tag <noscript>avvisi che occorre il javascript attivo</noscript> altrimenti operi lato server e chiedi dispostare la discussione.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    cavicchiandrea, la mia era più che altro una richiesta relativa a js. Mi sono permesso di far riferimento a php solo marginalmente
    Comunque ho capito che il problema più verosimile sta nella disabilitazione di js.

    Grazie a tutti

  6. #6
    La soluzione di Andrea è ottima.

    Non funziona solo se ad inviare i dati troppo lunghi è un bot o comunque un automatismo.
    Oppure qualche utente/corrispondente del sito si è preparato un piccolo script a propria misura per semplificarsi l'invio dei suoi post, dopo aver esaminato il tuo sorgente.

    In ogni caso opterei per replicare il controllo della lughezza del campo anche lato client.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  7. #7
    Non credo sia un discorso di automazione et similia. Fosse così, il db sarebbe invaso da record fake, cosa che non è.
    Inoltre la natura del testo inserito è consono alla tipologia di sito.
    Il problema deve essere solo quello della disabilitazione di javascript.

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.