dararag e andreamk trovatemi tu una soluzione più breve di 2 righe che la commentiamo...
dararag e andreamk trovatemi tu una soluzione più breve di 2 righe che la commentiamo...
if (date("Y-m-d") > date("Y-m-d",str_replace("-","",$_POST['data'])))
non concordo assolutamente.
1)il secondo parametro di date può essere solo una unix timestamp, e non la generi semplicemente togliendo i trattini.
2)anche se tu le potessi confrontare (impossibile per quanto scritto nel punto 1) l'utnete immette la data nel formato "gg-mm-aaaa" infatti nel primo post cito danirota che scrive: "l'utente inserisce 00-00-0000", per cui devi fare attenzione all'ordine dei valori giorno,mese,anno per fare un confronto corretto.
3)nel tuo script non mandi in output nulla per cui anche se lo script funzionasse avresti esaudito solo in parte le richieste del committente.
per il primo punto, ti conviene studiare come è formato un timestamp, e cioè da annomesegiornooreminutisecondi, ed omettendo oreminutisecondi semplicemente utilizza solo i primi 3, per il punto 2 e 3 basta modificare così:
Codice PHP:if (date("d-m-Y") < date("d-m-Y",str_replace("-","",$_POST['data']))) die("La data non può essere futura");
ma perchè non li provi i tuoi script prima di postarli?
Fai come me: anche se sei sicuro di quel che pensi fai qualche prova prima di rendere pubblica una risposta; io infatti nonostante fossi certo che il tuo script non funzionasse l'ho testato e ne ho avuto la conferma!
output:La data non può essere futuraCodice PHP:if (date("d-m-Y") < date("d-m-Y",str_replace("-","","19-11-1980"))) die("La data non può essere futura");
output:La data non può essere futuraCodice PHP:if (date("d-m-Y") < date("d-m-Y",str_replace("-","","19-11-2010"))) die("La data non può essere futura");
io non ho parlato di timestamp, ma di UNIX TIMESTAMP, e sono due cose diverse. una è l'intervallo dall'unix epoch, cioè i secondi intercorsi dal 1.1.1970 il la definizione del timestamp l'hai data corretta, solo che non c'azzecca un'H.
e va bè, lo ammetto, ho sbagliato, capita, scusate...
PS: errare umanum est, perseverare diabolicum est
cacchio dararag.. per l'età che hai ne sai anche troppa di informatica! Ho visto adesso il tuo profilo e devo ammettere che io alla tua età non distinguevo un bit da un bitter!
Complimenti, se cresci con questa caparbietà tra una decina d'anni ti assumo.. anche il tuo ultimo messaggio ti fa onore.. riconoscere gli errori e farne tesoro, soprattutto alla tua età, è veramente lodevole.
però non capisco, così dovrebbe funzionare:
perchè invece non va?Codice PHP:if (date("d-m-Y") < $_POST['data']) die("La data non può essere futura");
PS: grazie, però ci sono ancora molte cose che non so fare, e poi, mi manca l'esperienza, ho iniziato da solo un anno!
1) innanzitutto prendere i dati in post $_POST['data'] senza eseguire un controllo sull'esistenza o meno dei dati(isset) e sulla validazione del campo(ad esempio posso immettere nel campo data una stringa, che non è assolutamente uguale a una data secondo GG-MM-AAAA) sicuramente deve essere corretto.
io proporrei invece una soluzione basata esclusivamente sul confronto di stringa... cioè vado a costruire stringhe nel formato YYYYMMGG e poi le confronto:
ps: la bonta o meno di un'algoritmo non si misura dalla lunghezza in righe di codice(più corto è migliore è l'algoritmo), ma dagli effettivi costrutti e dalla complessità di tali costrutti... e soprattutto se funge o menoCodice PHP:$data = isset($_POST['data']) ? $_POST['data'] : "";
/* VALIDAZIONE $data ... supponendo sia validata secondo il formato GG-MM-AAAA */
$new_data_format = substr($data,6,4).substr($data,3,2).substr($data,0,2);
$actual = date(Ymd);
echo ($new_data_format > $actual) ? "KO" : "OK";
![]()
![]()
![]()
Chi di noi non vorrebbe
sollevare il velo sotto cui sta nascosto il
futuro...
David Hilbert