Ciao a tutti!
HO un sito in cui un utente può scegliere una data in cui fare un tour.
Se l'utente o sceglie però a due giorni dal suo inizio deve dare errore.
Per esempio se il tour è il 20 settembre e lui lo sceglie il 18 o il 19 il form deve restituire errore.
Inoltre se sceglie- per sbaglio- una data già passata dovrebbe dare errore anche il quel caso.
Il codice è cosi (scusate se esce tutto su una riga ma non so come si fa a mandarlo a capo)
Codice PHP:
if ($_SESSION['error1']==""){ # Verifico che le date inserite siano successive di almeno n giorni alla data attuale $n=2; if (data_passata($today,$_SESSION['lang'],$n) && $today!=$data1_pck) { $_SESSION['error1'] = $err_data_passata0.$n.$err_data_passata1; } if (data_passata($data2,$_SESSION['lang'],$n) && $_SESSION['error1']=="" && $data2!=$data2_pck) { $_SESSION['error1'] = $err_data_passata0.$n.$err_data_passata1; } if (data_passata($data3,$_SESSION['lang'],$n) && $_SESSION['error1']=="" && $data3!=$data3_pck) { $_SESSION['error1'] = $err_data_passata0.$n.$err_data_passata1; } } if ($_SESSION['error1']!=""){ header("location: ".$dominio."p_step2.php"); } else { header("location: ".$dominio."p_step3.php"); } function data_passata($data,$lingua,$n) { #riceve una data e ritorna true se questa non è almeno n giorni dopo la data attuale. print "data passata a format_date_rev = ".$data."
\n"; $arr_data=format_date_rev($data,$lingua,2); $anno=$arr_data[0]; $mese=$arr_data[1]; $giorno=$arr_data[2]; print "anno = ".$anno." - mese = ".$mese." - giorno = ".$giorno."
\n"; $fmkdata=mktime(0, 0, 0, $arr_data[1], $arr_data[2]-$n, $arr_data[0]); $unixtoday=time(); print "fmkdata = ".$fmkdata."
\n"; print "unixtoday = ".$unixtoday."
\n"; if ($fmkdata<$unixtoday){ return true; } else { return false; } }
Ma in questo modo il sistema da sempre errore, qualsiasi data uno scelga
COme fare per correggerlo?
Grazie mile