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 2004
    Messaggi
    23

    PHP: controllo validità data inserita

    ciao,
    volevo sapere se in php esiste un istruzione per controllare ke la data inserita sia effettivamente una data.
    senza controllare che ci siano un tot di cifre, che ci siano le barre o i meno ecc ecc....
    uy

  2. #2
    ciao, tu vuoi fare un form dove gli utenti inseriscono la data? es. data di nascita? e vuoi ke sia assolutamente una data e non altro?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    23

    r

    si esatto
    uy

  4. #4
    non vorrei dire una scemenza ma dovresti usare un'espressione regolare, prova a cercare con google, sicuramente trovi qualcosa.

  5. #5
    il modo più semplice è fare tre campi diversi, uno per il giorno, uno per il mese e uno per l'anno e controllare che siano poi tutti numeri; magari controllando che il mese non super 12 etc...

    oppure su vuoi lasciare il campo libero entrano in gioco le espressioni regolari. penso che una cosa così vada bene, per il formato gg/mm/aaaa, ma anche in questo caso dovresti splittare la stringa e controllare che i parametri della data non superino i numeri consentiti [giorno < 32, mese < 13...]

    codice:
    ereg ("^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$", $data)
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6

  7. #7
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    [supersaibal]Originariamente inviato da 13manuel84
    il modo più semplice è fare tre campi diversi, uno per il giorno, uno per il mese e uno per l'anno e controllare che siano poi tutti numeri; magari controllando che il mese non super 12 etc...

    oppure su vuoi lasciare il campo libero entrano in gioco le espressioni regolari. penso che una cosa così vada bene, per il formato gg/mm/aaaa, ma anche in questo caso dovresti splittare la stringa e controllare che i parametri della data non superino i numeri consentiti [giorno < 32, mese < 13...]
    codice:
    ereg ("^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$", $data)
    [/supersaibal]
    La vedo un po' incerta come soluzione. La regexp non fa quello che dovrebbe. Se provo ad inserire una data tipo 40 40 4000, la lascia passare convalidandola.

    Relativamente all'uso dei tre campi, forse non è proprio il modo più semplice... difatti si può fare anche con un campo solo.

    Basta semplicemente indicare all'utente che la data dev'essere inserita nel modo "dd mm yyyy" (esempio 31 01 1976). Cioè, i numeri che indicano il giorno il mese devono essere "preceduti dallo zero" e l'anno deve avere quattro cifre. Basta semplicemnte uno spazio per separare le cifre dd mm yyyy.

    Dopo aver recuperato la data, basta solo controllarla così:
    Codice PHP:
    $checkData preg_match("/^(0[1-9]|3[01])\\s(0[1-9]|1[012])\\s((19|20)(20|90))$/"$data$reg); 
    La regexp si occupa di controllare che i primi 2 caratteri siano numeri e non superiori a 31. Idem per i successivi 2 caratteri, tranne che il limite dev'essere 12. Infine, oltre a verificare che i restanti 4 caratteri siano numeri, convalida il parametro solo se l'intervallo è compreso tra il 1920 ed il 1990. (ovvio che studiandosela un po' la si può modificare come meglio si crede).

    Aggiungo anche questo, solo per poter fare una prova veloce:
    Codice PHP:
    $sep " - "//separatore

    if($checkData) {
    echo 
    "Data inserita: {$reg[1]} $sep {$reg[2]} $sep {$reg[3]}"//data riconosciuta
    } else {
    echo 
    "Data non valida";

    Esistono certamente molte altre valide soluzioni al problema, ma questo potrebbe essere un buon inizio. Scegli tu...


  8. #8
    [supersaibal]Originariamente inviato da pierotto
    checkdate() [/supersaibal]

  9. #9
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Ma bravo! che falco...

    La funzione checkdate, pur essendo dedicata, ha un piccolo difetto: accetta come valido anche l'anno 32767. (Dal manuale: anno è compreso tra 1 e 32767 ) ...Bello, eh?

    Questo è solo un semplice esempio:
    Codice PHP:
    $g 31;
    $m 1;
    $a 1976//ma è considerato valido l'anno 1 ...oohh?! oppure il 3000!

    $checkData checkdate($m,$g,$a); 

    if(
    $checkData) echo "$g/$m/$a è una data valida!"
    ...io resto del parere che per "controllare seriamente" qualcosa, non al livello elementare però, bisogna fare ricorso alle espressioni regolari (Perl compatibili, quando possibile!).


  10. #10
    mmhh complicarsi la vita, la cosa + semplice fare 3 <select><option> gioeno mese anno, li non si scappa e non devi star li a scrivere, se proprio vuoi scrivere qualcosa
    giorno= controlla ke sia un numero, ke siam >0 e <31, e poi qualche if x i gioni di 30 e x febbraio
    mese= controllo ke sia >0 e <12, tt li
    anno= ke sia > 1900 e minore a <2005

    se proprio propio l'utente deve scriverla sta data

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.