Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    Problema stupido con gli spazi in un form

    Salve,
    ho letteralmente squagliato la tastiera per trovare una soluzione ad un controllo campo che da errore senza motivo.

    In pratica ho un campo indirizzo dove naturalmente viene inserito un valore del tipo "via la strada qua sotto 2", quindi diversi spazi in mezzo.

    Ho impostato il controllo con ctype_alnum, ma a questo punto credo che lo script rilevi gli spazi come elementi fuori dal controllo e mi restituisce la pagina di errore inserimento.

    Ho trovato cercando decine di siti che parlano di come ELIMINARE gli spazi, ma nessuno che faccia una menzione su come ovviare una (ne sono cosciente ma tant'è....) stupidaggine simile.

    Come bypasso il problema?

    P.S questo credo sia lo stesso motivo per il quale a tratti non mi accetta campi vuoti, sebbene io non abbia impostato controlli in tal senso....

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Basta andare sulla documentazione ufficiale relativa a ctype_alnum dove si legge
    la funzione è equivalente a preg_match('/^[a-z0-9]*$/i', $text)
    Quindi sì, gli spazi non sono compresi nell'espressione regolare.
    Come si risolve? Scrivendo il controllo esplicitando una regex che contenga anche il carattere spazio.

    Secondo me però non basterebbe, perché anche gli indirizzi
    via la strada qua sotto 2/b
    via la strada qua sotto, 2
    via la strada qua sotto n°2
    ti darebbero problemi dato che / , ° non sono compresi.

    In sostanza dovresti pensare a tutti i caratteri che si posono scrivere in un indirizzo e scrivere una regex adeguata.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Grazie, non avevo notato quell'ultima riga su php.net.

    Mi sta venendo voglia di tagliarmi le vene comunque. Non c'è quasi niente di peggio delle regex da quel che vedo...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Sinceramente, io il controllo sui caratteri di un indirizzo nemmeno lo farei, tanto dovresti consentire quasi qualsiasi cosa.
    Tanto per continuare: dovresti prevedere anche le lettere accentate, l'apostrofo, il punto...

    Consenti qualsiasi cosa e preoccupati solo di fare un controllo per sql injection con mysqli_real_escape_string()

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Potrebbe essere una soluzione, di base questa cosa girerà in una intranet, forse neanche quello servirebbe considerata pure l'informatizzazione media di chi ci metterà le mani sopra. L'unica cosa (ma magari me ne preoccupo dopo) è il fatto che questi dati vanno in db.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Almeno il controllo per sql injection fallo ugualmente, mai sottovalutare ciò che potrebbero fare gli utenti.
    Metti che uno viene a sapere del suo prossimo licenziamento e decide di fare un brutto scherzo all'azienda? Meglio non correre rischi inutili.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Ok lo farò!
    Scusami, giusto per capire, quindi mi conviene impostare un controllo is_string, magari un controllo sulla lunghezza...ma mi resta il problema del campo vuoto dato che continuo a riceve l'errore d'inserimento programmato...mi sento un pò stupido a chiedere queste cose, ma sono andato un pò in confusione. Grazie

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Se vuoi rendere obbligatorio il campo, basta che lato php fai una cosa di questo tipo
    Codice PHP:
    if ( trim($_POST['indirizzo']) == '' )
    {
        echo 
    "E dove abiti non me lo dici? :( ";

    il trim() serve per fare in modo che se uno ci mette solo degli spazi, questi vengono eliminati e il controllo == '' continua a funzionare.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Se vuoi rendere obbligatorio il campo, basta che lato php fai una cosa di questo tipo
    Codice PHP:
    if ( trim($_POST['indirizzo']) == '' )
    {
        echo 
    "E dove abiti non me lo dici? :( ";

    il trim() serve per fare in modo che se uno ci mette solo degli spazi, questi vengono eliminati e il controllo == '' continua a funzionare.
    No a me serviva esattamente il contrario, cioè...ci sono diversi campi che in realtà spesso non vengono riempiti o vengono riempiti nel tempo, ciò però non deve impedire chiaramente d'inserire i dati a disposizione per gli altri campi e, dall'altro lato, non deve impedire che venga fatto un controllo di validità nel momento in cui questi campi vengono usati.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    E allora basta che verifichi se sono stati compilati o no aggiustando il codice che ti ho scritto
    Codice PHP:
    if ( trim($_POST['indirizzo']) != '' )
    {
        
    //campo compilato, fai i controlli del caso e lo usi per l'inserimento nel db
    }
    //altrimenti non fai niente perché non è stato compilato 

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.