Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Convalida Input

  1. #1

    Convalida Input

    Salve a tutti ho letto un po di post su questo argomento poi mi sono letto tutte le pagine sul sito ufficiale di PHP sulle espressioni regolari per convalidare l'input ma niente non riesco a capire il loro funzionamento.

    Io vorrei fare in modo che con un if controllo l'input e deve contenere solo lettere dalla a-z A-Z, numeri 0-9 e come simbolo speciale l'under score ( _ ).

    Qualcuno sa aiutarmi??? Io avevo pensato a ereg_replace solo che non so come fare.

    GRAZIE

  2. #2
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    con ereg_replace fai, come suggerisce la funzione stessa, una replace di una stringa a secondo di un pattern.

    Per fare un semplice controllo basta che usi ereg()

    Esempio:
    Volgio controllare che la data immessa come anno sia valida:

    ereg("^[0-9]{4}$",$_POST["anno"]);

    questo è solo un esmpio con cui accertarsi che sia inserito un anno di 4 cifre.

    Poi ci sarebbero anche altri passaggi per affinare il tutto ma era solo un esmpio.

    Ti conviene studiarti bene le espressioni regolari.

  3. #3
    per validare l'username dovrebbe essere:

    if(ereg("^[a-zA-Z_0-9]{5,15}$",$username))...

    dove suppongo che l'username sia formato da 5 fino a 15 caratteri.. ovviamente questo è perosnalizzabile

  4. #4
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478

    Re: Convalida Input

    [supersaibal]Originariamente inviato da orebla
    Salve a tutti ho letto un po di post su questo argomento poi mi sono letto tutte le pagine sul sito ufficiale di PHP sulle espressioni regolari per convalidare l'input ma niente non riesco a capire il loro funzionamento.

    Io vorrei fare in modo che con un if controllo l'input e deve contenere solo lettere dalla a-z A-Z, numeri 0-9 e come simbolo speciale l'under score ( _ ).

    Qualcuno sa aiutarmi??? Io avevo pensato a ereg_replace solo che non so come fare.

    GRAZIE [/supersaibal]
    Se proprio vuoi usare funzioni relative alle espressioni regolari POSIX (ereg_*), magari potresti iniziare a dare uno sguardo a questo articolo. Il mio consiglio però è quello di usare le espressioni compatibili con PERL con le relative funzioni preg_*, sono più veloci rispetto alle POSIX. La sintassi è leggermente diversa, ma se ne consiglia l'uso soprattutto nel manuale:
    Suggerimento: Poichè utilizza espressioni regolari con sintassi compatibile con Perl, preg_replace(), è spesso una alternativa più veloce a ereg_replace(). [ link ]
    (PCRE)
    http://it.php.net/manual/it/ref.pcre.php


    Prova a leggere anche questa pillola, ma se fai qualche semplice ricerca troverai tanto altro materiale al riguardo.


  5. #5
    Vi ringrazio tutti per l'aiuto.
    Io avevo già guardato diverse pillole e guide e manuali.
    MA il mio problema è che non mi entra in testa come funzionano .

    Adesso dagli esempi che mi avete fatto voi qualcosa in più ho capito, li provo a fare in locale.

    Con questo esempio :
    if(ereg("^[a-zA-Z_0-9]{5,15}$",$username))

    Cosa vuol dire quel $ e quel ^ che ho messo in grassetto??

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    [supersaibal]Originariamente inviato da orebla
    Vi ringrazio tutti per l'aiuto.
    Io avevo già guardato diverse pillole e guide e manuali.
    MA il mio problema è che non mi entra in testa come funzionano .

    Adesso dagli esempi che mi avete fatto voi qualcosa in più ho capito, li provo a fare in locale.

    Con questo esempio :
    if(ereg("^[a-zA-Z_0-9]{5,15}$",$username))

    Cosa vuol dire quel $ e quel ^ che ho messo in grassetto?? [/supersaibal]
    ^ serve per indicare l'inizio di una stringa
    $ per la fine.

  7. #7
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    ^ e $ indicano ripsettivamente l'inizio e la fine del testo su cui viene applicata l'espressione regolare.
    [ sintassi delle espressioni regoalri - libreria PCRE ]

  8. #8
    Ok ora ho capito.

    Quindi io faccio così il controllo

    Codice PHP:
    if(ereg("^[a-zA-Z_0-9]{5,15}$",$username)) die("Errore nella sintassi dell'input"); 
    Così è corretto??

  9. #9
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Non proprio, semplicemente perché se l'if, valutando l'espressione regolare, fosse TRUE otterresti l'interruzione dello script e il msg "Errore nella sintassi dell'input". Se vuoi usare l'istruzione così come l'hai scritta devi anteporre ad ereg l'operatore ! Not

    (esempio !$a, restituirà TRUE se $a non è TRUE).

    Quindi dovrai scrivere if(!ereg(......

  10. #10
    Grazie mille, velocissimi e preparatissimi.!!!

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.