Newsgroup: it.comp.www.php
Titolo: Controllo immissione caratteri campi text

Salve a tutti, chiedo a voi programmatori esperti.
E' possibile utilizzare dei text che abbiano un numero massimo di 
caratteri inseribili?
Faccio esempio: ho un campo all'interno di un database di 20 caratteri, 
è possibile far sì che l'utente possa inserirne soltanto 20 e che venga 
bloccato dal 21 in poi?
Data la mia esperienza credo si possa soltanto controllare al momento 
della conferma l'esattezza del numero di caratteri, per poi segnalare 
l'errore se viè...
Ma chiedo consiglio a voi sicuramente più bravi di me!
Grazie moltissime!
Baci!

 Ma chiedo consiglio a voi sicuramente più bravi di me!
Lo puoi fare semplicemente in html:
<input type="text" max="20"...>
-- 
Jax

 <input type="text" max="20"...>
Sì, buonanotte:
<input type="text" maxlength="20"...>
-- 
Jax

 <input type="text" maxlength="20"...>
Penso lui volesse controllare la lunghezza del campo della tabella e,
di conseguenza, controllare la lunghezza dei dati prima
dell'inserimento.
O no?

Mirko ha scritto:

Boh, puň essere, ma in questo caso non č stata molto chiara.
Comunque, anche se fosse cosě, basta costruire dinamicamente la input, 
impostando il valore di maxlength utilizzando la funzione che ricava la 
dimensione del campo (per mysql, per esempio, mysql_field_len())
-- 
Jax

 bloccato dal 21 in poi?
Ciao Sara, è sempre un piacere ritrovarti qui. :)
COme ti ha spiegato Jax, limiti la lunghezza di un campo text con 
l'attributo maxlength.
Esempio, limitare a 20 caratteri:
<input type="text" name="sara4ever" maxlength="20" />
Così facendo vedrai che arrivato al 20esimo carattere non se ne possono 
scrivere più nel campo text.
Non fidarti soltanto di questa cosa però. Ci vuole poco a modificare 
lato client questo limite.
Quando spedisci il form al server, usa anche la funzione substring di 
PHP, per limitare senza alcuna ombra di dubbio a 20 caratteri (oltre 
che ai consueti controlli per evitare la SQL injection):
$stringa_accorciata = substr($_GET['sara4ever'], 0, 20);
$stringa_bonificata = mysql_real_escape_string($stringa_accorciata);
Se vuoi invece segnalare all'utente che ha tentato di fregarti forzando 
il controllo lato client (cioè quello impostato con "maxlength"), puoi 
sempre usare una cosa di questo tipo:
if(strlen($_GET['sara4ever']) > 20) {
   echo "Testa di cazzo, come hai osato tentare di fottermi?";
   die();
}
In ogni caso, non vorrei dire una falsità, ma mi pare che con mysql, se 
tenti di inserire un testo più lungo di quello che il campo ti 
consente, non corri problemi, in quanto il testo viene tagliato fino al 
limite consentito.
Quindi non dovresti correre troppi rischi.
In ogni caso, ricordati che l'uso della funzione 
mysql_real_escape_string() è OBBLIGATORIO ogni volta che fai query a un 
database utilizzando parametri provenienti da form.
with love,
;)
-- 
rob4you
www.outofmind.eu

Grazie ragazzi!!
maxlenght, non la sapevo, è perfetta!!
grazie grazie grazie!!

rob!!!
sei sempre, comunque, il migliore!!
- la soluzione substr mi era venuta in mente, ma non mi andava di 
troncare io la stringa senza che l'utente si accorgesse che troppo lunga!
- i controlli con la strlen pure, ma volevo evitare di far una vitaccia 
nel ritornare alla pagina principale salvandomi tutti i dati, etc etc..e 
soprattutto evitare di insultare il mio utente "testa di cazzo!", 
POVERINOOOO... :)))))
- ciò che dici tu che mysql automaticamente tronca i campi + lunghi, può 
essere...ma io non sto lavorando con mysql, bensì con database DB2 che 
risiedono su AS400! e questo non accade, almeno, non mi sembra, non mi 
salva un piffero!
- penso per ora proverò la proprietà maxlenght (non ho capito cosa 
volessi dire con "Non fidarti soltanto di questa cosa però. Ci vuole poco 
a modificare lato client questo limite." come??)
e poi mò constaterò!
grazie moltissime rob sei un amore...
p.s. il mio... :)))))))

 del campo (per mysql, per esempio, mysql_field_len())
Aggiungo che poi la lunghezza deve essere comunque controllata lato 
server, perche` quella e` un INDICAZIONE che si da` al browser sulla 
lunghezza massima, ma puo` essere bellamente ignorata dallo stesso.
Bye.

 constaterò!
Ti basta installare firebug su firefox per cambiare html e css al volo, se 
vuoi farlo in modo visuale, oppure usare qualcosa come CURL per fare il 
submit di un form coi dati che vuoi.
La morale e`: mai fidarsi di quello che arriva dal browser.
Bye.

mah!!
ieri avevo provato la maxlenght, e funzionava!
perchè stanmattina se ne frega e mi prende tutti i caratteri possibili 
ignorando la proprietà??
Oh oh..

Sara ha scritto:

Forse hai scritto maxlenght invece di maxlength? :)
Hai detto che stai lavorando su as400: usi Zend Core per iSeries oppure 
ti colleghi all'as tramite odbc?
-- 
Jax

 p.s. il mio... :)))))))
idem.....;)
-- 
rob4you
www.outofmind.eu