Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: validazione

  1. #1
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697

    validazione

    Ho letto la pillola di RegExp ma non riesco a creare una in particolare per url, ho giā nel form value="http://" percui me ne serve una che riconosce "http://" che č giā scritto nel campo ma che da errore se "http://" viene tolto e viene inviato url senza http://, ftp:// o www.

  2. #2
    in pratica vuoi che siano valide queste tipologie di url:
    http://bla
    https://bla
    ftp://bla
    www.bla
    ?
    Devi costruirti la regex imponendo che la stringa cominci con quella determinata parola tipo:
    $rex = '/^http:\/\/blabla/';
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da AnĒkin
    in pratica vuoi che siano valide queste tipologie di url:
    http://bla
    https://bla
    ftp://bla
    www.bla
    ?
    Devi costruirti la regex imponendo che la stringa cominci con quella determinata parola tipo:
    $rex = '/^http:\/\/blabla/';
    Si, tenendo presente che http:// č giā nel campo, percui se ho ben capito dev'essere cosė:

    if($url)
    if (!(ereg("/^(http:\/\/https:\/\/ftp:\/\/www.)+.([a-z0-9]$/", $url)))
    echo "inserire un'URL valido";

    č corretto?

  4. #4
    Originariamente inviato da Braco
    Si, tenendo presente che http:// č giā nel campo, percui se ho ben capito dev'essere cosė:

    if($url)
    if (!(ereg("/^(http:\/\/https:\/\/ftp:\/\/www.)+.([a-z0-9]$/", $url)))
    echo "inserire un'URL valido";

    č corretto?
    I casi vanno separati con gli or tipo (http|https|ftp). Come hai fatto tu nella prima parentesi ricerca tutta la stringa contenuta li dentro.
    Vedi che puoi raggruppare ulteriormente http e https scrivendo https? (s? dice che la s č opzionale, 0 o 1 occorrenza) dato che si differenziano per una sola lettera. In giro dovresti trovarne di regex giā fatte cmq abbozzandone una semplice comincerei con
    codice:
    $rex = '/^((https?|ftp):\/\/)?www\.\S+$/i' ;
    come vedi ho raggruppato anche "://", dato che si ripeteva, ed ho messo opzionale tutta la prima parentesi ((https?|ftp):\/\/)?, mentre č obbligatorio sempre il www. e infine con \S+$ gli dico di cercare tutti i caratteri che siano diversi dai caratteri invisibili (spazio, a capo, tabulazione, etc), questo dovrebbe permettere anche la validazione di eventuali querystring.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da AnĒkin
    I casi vanno separati con gli or tipo (http|https|ftp). Come hai fatto tu nella prima parentesi ricerca tutta la stringa contenuta li dentro.
    Vedi che puoi raggruppare ulteriormente http e https scrivendo https? (s? dice che la s č opzionale, 0 o 1 occorrenza) dato che si differenziano per una sola lettera. In giro dovresti trovarne di regex giā fatte cmq abbozzandone una semplice comincerei con
    codice:
    $rex = '/^((https?|ftp):\/\/)?www\.\S+$/i' ;
    come vedi ho raggruppato anche "://", dato che si ripeteva, ed ho messo opzionale tutta la prima parentesi ((https?|ftp):\/\/)?, mentre č obbligatorio sempre il www. e infine con \S+$ gli dico di cercare tutti i caratteri che siano diversi dai caratteri invisibili (spazio, a capo, tabulazione, etc), questo dovrebbe permettere anche la validazione di eventuali querystring.
    Adesso provo, hai messo www. obbligatorio, ma uno potrebbe usare "http://" che č giā predefinito nel campo senza usare www., che dici?

    Ho messo cosė ma da errore

    //valida URL
    if($url)
    if (!(ereg("/^((https?|ftp):\/\/)?www\.)\S+$/i", $url))
    echo "inserire un'URL valido"

  6. #6
    Hai messo una parentesi in pių. Usa preg_match al posto di ereg, perchč credo che parte della sintassi che ho usato non sia valida con ereg.

    codice:
    if($url)
    if (!(preg_match("/^((https?|ftp):\/\/)?www\.\S+$/i", $url)))
    echo "inserire un'URL valido" ;
    Il fatto che http:// sia predefinito nel campo non č molto significativo perchč cmq tu analizzi la stringa inviata quindi a te interessa che ci sia in quella stringa, a prescindere da cosa metti come default value al campo input.
    In sostanza oltre ai casi prima citati vuoi che venga validato anche una cosa tipo http://forum.html.it !? Ora modifico..
    EDIT:

    codice:
    $rex = '/^((https?|ftp):\/\/|www\.)\S+$/i';
    if($url)
    if (!preg_match($rex, $url))
    echo "inserire un'URL valido" ;
    cosė dovrebbe validare anche "http://forum.html.it", ma non "forum.html.it"
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da AnĒkin
    Hai messo una parentesi in pių. Usa preg_match al posto di ereg, perchč credo che parte della sintassi che ho usato non sia valida con ereg.

    codice:
    if($url)
    if (!(preg_match("/^((https?|ftp):\/\/)?www\.\S+$/i", $url)))
    echo "inserire un'URL valido" ;
    Il fatto che http:// sia predefinito nel campo non č molto significativo perchč cmq tu analizzi la stringa inviata quindi a te interessa che ci sia in quella stringa, a prescindere da cosa metti come default value al campo input.
    In sostanza oltre ai casi prima citati vuoi che venga validato anche una cosa tipo http://forum.html.it !? Ora modifico..
    EDIT:

    codice:
    $rex = '/^((https?|ftp):\/\/|www\.)\S+$/i';
    if($url)
    if (!preg_match($rex, $url))
    echo "inserire un'URL valido" ;
    cosė dovrebbe validare anche "http://forum.html.it", ma non "forum.html.it"
    Quasi ci siamo, 2 cose: se io non inserisco niente (e cč sempre il predefinito value http://) esce l'alert, se invece cancello http:// non esce l'alert.
    2. Dopo l'ultimo punto (.) si invia anche se metto un carattere es: http://mario.k, non ci vorrebbero almeno 2 caratteri in fondo?

  8. #8
    Le regole di un url ben formattato non le conosco, cmq puoi sostituire a \S+ altre regole pių precise.
    Per esempio cosė:
    codice:
    $rex = '/^((https?|ftp):\/\/[\w-]+\.|www\.)\w{2,}\.\w{2,4}(\?\S+)?$/i';
    Ho diviso in blocchi l'ultima parte di url, il blocco rosso puō essere lungo a piacere, ma non minore di due caratteri, il blocco viola č il dominio (net,com,it,etc) e il blocco verde č un eventuale querystring (opzionale percheč ha il "?" in fondo. Ma ripeto sono regole cosė, non sono sicuro della loro correttezza.

    Per il problema del http:// io farei un controllo nell'IF che se la stringa č uguale a http:// si comporti come se l'url fosse vuoto.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  9. #9
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da AnĒkin
    Le regole di un url ben formattato non le conosco, cmq puoi sostituire a \S+ altre regole pių precise.
    Per esempio cosė:
    codice:
    $rex = '/^((https?|ftp):\/\/[\w-]+\.|www\.)\w{2,}\.\w{2,4}(\?\S+)?$/i';
    Ho diviso in blocchi l'ultima parte di url, il blocco rosso puō essere lungo a piacere, ma non minore di due caratteri, il blocco viola č il dominio (net,com,it,etc) e il blocco verde č un eventuale querystring (opzionale percheč ha il "?" in fondo. Ma ripeto sono regole cosė, non sono sicuro della loro correttezza.

    Per il problema del http:// io farei un controllo nell'IF che se la stringa č uguale a http:// si comporti come se l'url fosse vuoto.
    Non č importante che sia ben formattato, ciō che conta č che abbia i "prefissi" e dopo l'ultimo punto ci sia un dominio o un'ext (nel caso finisca con una pagina) di almeno 2 caratteri.

    Io non uso il DB come faccio a controllare l'if?

  10. #10
    Originariamente inviato da Braco
    [..]
    Io non uso il DB come faccio a controllare l'if?
    quando fai il cotrollo dopo l'inviio del form

    codice:
    if($url && $url!='http://')
      if (!preg_match($rex, $url))
       echo "inserire un'URL valido" ;
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

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.