Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 32
  1. #11
    Beh la guida che hai linkato è piuttosto chiara ed esemplificativa.
    Ti spiega i metacaratteri e tutto.

    Per capire la tua regexp basta che leggi le prime tre pagine di spiegazione.
    Comuqnue.

    Codice PHP:
    '/^[a-z0-9()/'":*+|,.; - !?&#$@]{2,75}$/i' 
    Lo slash indicia l'inizio e la fine dell'espressione.
    Il caret (^) indica che la stringa da controllare può cominciare o meno con uno dei caratteri presneti nell'espressione.
    La parentesi quadra racchiude una classe di caratteri.
    All'interno trovi tutti i caratteri che ammetti (o meno) nel controllo con preg_match.
    Se vuoi aggiungere dei caratteri (le accentate) allora devi inserirle tra le parentesi quadre.
    Non so se il problema sta nel modo in cui la vedo io, ma prima degli apici e dei doppi apici, andrebbe il backslash.
    Continuiamo con la spiegazione.
    Le parentesi graffe racchiudono invece il ciclo.
    Quanti caratteri sono ammessi nella stringa che controlli, sostanzialemnte!
    La I in fondo, indica che il controllo è case-insensitive, cioè non bada alle amiuscole/minuscole.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  2. #12
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Raga usate la funzione filter_var e' mooooooolto piu' comoda.

    Guardate qui


    Doversi ricordare

    filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)

    e' piu' facile che nn ricordarsi o dover sempre ricostruire la reg_exp.

    Io trovo la funzione filter_var molto piu' comoda.

  3. #13
    Dopo tutta la fatica che ho fatto per imparare le espressioni regolari!
    Non ho mai usato questa funzione e nel manuale non sono specificati tutti i parametri di filtraggio.
    Dove si può trovare una lista completa???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #14
    Originariamente inviato da alcio74
    Beh la guida che hai linkato è piuttosto chiara ed esemplificativa.
    Ti spiega i metacaratteri e tutto.

    Per capire la tua regexp basta che leggi le prime tre pagine di spiegazione.
    Comuqnue.

    Codice PHP:
    '/^[a-z0-9()/'":*+|,.; - !?&#$@]{2,75}$/i' 
    Lo slash indicia l'inizio e la fine dell'espressione.
    Il caret (^) indica che la stringa da controllare può cominciare o meno con uno dei caratteri presneti nell'espressione.
    La parentesi quadra racchiude una classe di caratteri.
    All'interno trovi tutti i caratteri che ammetti (o meno) nel controllo con preg_match.
    Se vuoi aggiungere dei caratteri (le accentate) allora devi inserirle tra le parentesi quadre.
    Non so se il problema sta nel modo in cui la vedo io, ma prima degli apici e dei doppi apici, andrebbe il backslash.
    Continuiamo con la spiegazione.
    Le parentesi graffe racchiudono invece il ciclo.
    Quanti caratteri sono ammessi nella stringa che controlli, sostanzialemnte!
    La I in fondo, indica che il controllo è case-insensitive, cioè non bada alle amiuscole/minuscole.

    Quindi se scrivo
    Codice PHP:
    if (!preg_match('/^[a-z0-9()\/\'":\*+|,.; \- !?&#$@]{2,75}$/i' ,$name)) { echo "Errore: nome non valido, prova ancora!"
    dovrebbero essere ammessi tutti i caratteri !?&#$@, tanto per fare un esempio?
    Invece non passano. E per far passare le accentate àèéìòù, dove le devo inserire nel pattern?

  5. #15
    Te lo avevo scritto che secondo me c'era un errore di base nella tua espressione regolare: non utilizzi il backslash per i caratteri di apice e doppio-apice.
    Non so se noti, ma il codice presente nel post indica visivamente, grazie ai colori, che c'è un errore di base.
    Devi riscrivere così:
    Codice PHP:
    $pattern "/^[a-z0-9()\\'\\"àèìòùéÈ\\:\\*\\+\\|\\,\\.\\;\\-\\!\\?\\&\\#\\$\\@]{2,75}$/i"; 
    Detto questo, dovresti risolvere: ritengo infatti che l'errore generato dal matching sia dovuto all'errore del pattern.
    Ad ogni modo, analizza bene il tuo codice, visto che solo te puoi sapere quello che vuoi ottenere!

    Impostando il preg_match() come lo fai tu, indichi allo script che "se non c'è alcun riscontro tra la stringa da controllare, ed il pattern di verifica" allora viene restituito un errore.
    Sei sicuro che vada bene così???
    Magari dovresti togliere il NOT prima della funzione, per far andare bene il tuo script.

    Un'ultima annotazione: garantire la scrittura di un carattere accentato è OK, ma garantire anche quella di caratteri come l'ampersand (&) ed il cancelletto (#) potrebbe permettere ad un hacker mediamente smaliziato di scrivere il proprio codice di SQL injection utilizzando i codici ASCII dei caratteri.,
    Forse è il caso che ti rileggi BENE la guida alla Sicurezza in PHP che ti avevo linkato qualche post fa!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #16
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Io ti consiglio di usare la filter var.

    Per la gestione dei caratteri speciali basta porre attenzione alla regexp che scrivi.

    Ma che diavolo sono ste reg exp????

    Le reg exp sono grammatiche di tipo 3 che generano linguaggi di tipo 3.
    Sotto unix e poi sotto pearl e quindi in altri linguaggi sono usate per funzioni di pattern matching .
    Vista la necessita di controllare velocemente stringhe sono state implementate per fornire un sistema di filtraggio-individuazione delle stringhe( tanto per dirne 1 vengono usate anche per cercare particolari catene di DNA nel genoma umano!!!!! ).

    Cmq come usarle????
    Le reg exp unix, poi implementate anche nei linguaggi di programmazione, lavorano con dei caratteri speciali che sono :

    ^ inizio linea
    $ fine linea
    . singolo carattere
    […] un qualunque carattere tra
    quelli elencati
    [^…] uno qualunque, tranne quelli elencati


    quindi il pattern che usi puo' essere gestito con i precedenti simboli. Inoltre se un simbolo sopra deve essere controllato come carattere basta mettere \ davanti al carattere.

  7. #17
    Originariamente inviato da alcio74
    Un'ultima annotazione: garantire la scrittura di un carattere accentato è OK, ma garantire anche quella di caratteri come l'ampersand (&) ed il cancelletto (#) potrebbe permettere ad un hacker mediamente smaliziato di scrivere il proprio codice di SQL injection utilizzando i codici ASCII dei caratteri.,
    Forse è il caso che ti rileggi BENE la guida alla Sicurezza in PHP che ti avevo linkato qualche post fa!
    Infatti il pattern non l'ho scritto io, l'ho trovato in rete e lo sto modificando. Ma il problema dei caratteri accentati non riesco a superarlo neanche con il pattern modificato grazie ai tuoi consigli. Non sarà per caso un problema di codifica dei caratteri?
    Ecco come l'ho modificato

    $pattern = '/^[a-z0-9àèìòùéè()\/\'\"\:\*\+\|\,\.\;\-]{2,75}$/i'

    Ma nella versione definitiva credo che sia opportuno lasciar inserire solo caratteri alfanumerici, punteggiatura ed apostrofo.

  8. #18
    Io odio servire la pappa pronta, ma se non facciamo così, mi sa proprio che non ne usciamo più.
    Ti passo una funzione scritta da me.

    codice:
    function validataStringa($str){
     	$str = trim($str);
     	return (bool) preg_match("/[[:alnum:]\.\,\;\:\!\?\-\_\(\)\[\]\'\"\»\«]+$/", $str);
    }
    La inserisci all'inizio del tuo script, oppure in uno script esterno che richiami dove serve e poi ogni stringa che vuoi filtrare la passi con il seguente codice.
    Codice PHP:
    if(!validataStringa($stringa_qualsiasi)){
     echo 
    "Errore");

    Non toccare nulla nel pattern ed usala così come vedi prima di fare modifiche e magari di venirmi a dire che non funziona.
    Questa funziona per certo, e sembra reggere i più comuni tentativi di hacking (non sono un hacker per cui non garantisco al 100%)!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #19
    Ti ringrazio dell'aiuto e della pazienza. Ti posto l'errore che purtroppo persiste


    Del resto la tua funzione prevede
    codice:
    [:alnum:]
    al posto di
    codice:
    a-z0-9
    Ma se non funziona l'uno non funziona neanche l'altro. O sbaglio?
    Le vocali accentate non rientrano nel range a-z?

  10. #20
    alnum significa: tutti i caratteri alfanumerici!
    Io uso la funzione che ti ho postato quotidianamente e non ho problemi.
    Come ho più volte sottolineato, sei sicuro di impostare bene il controllo?
    Non è che magari inverti il risultato???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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 © 2026 vBulletin Solutions, Inc. All rights reserved.