Публикации с етикет “fail”

Mnogo dalga proverka za validnost na datata

10.06.2010

Случайно изрових първия си classic ASP сайт писан изобщо, от далеееечната 1999-та, когато пробивах в уеб дивелЪпмЪнтЪ. Zip-чето е 336 KB, обаче ме разчувства. Докато го разглеждах, неизбежно попаднах на един много интересет JavaScript скрипт – проверка за дата, писана от „гениалния“ ми колега от онова време – dorado. Няма как да не я споделя, даже мисля да я пратя в The Daily WTF.

//
// Mnogo dalga proverka za validnost na datata
//
	function CheckDate(address)
		{	
			var tmp = eval("document.forms(0)."+address+".value");
			var index1 = tmp.indexOf('/');
 
			if (index1 != -1)
				{
					var MM = tmp.substring(0,index1);// This is month
					var index2 = tmp.indexOf('/',index1+1);
					if (index2 != -1)
						{
							DD = tmp.substring(index1+1,index2);//This is date
							if (tmp.length > index2)
								{
									YY = tmp.substring(index2+1,tmp.length);// This is year
									var MM1 = Number(MM);
									var DD1 = Number(DD);
									var YY1 = Number(YY);
									if (isNaN(DD1) || isNaN(MM1) || isNaN(YY1))//IsNumberCheck for all
										{
											return false;
										}
									else 
										{
											if (MM1 > 0 & MM1 < 13)//Wrong month
												{
													if (DD1 > 0 & DD1 < 32)//Wrong date
														{
															if ((MM1 == 2 || MM1 == 4 || MM1 == 6 || MM1 == 9 || MM1 == 11) & (DD1 == 31))//Short month
																{
																	return false;
																}
															else
																{
																	if ((MM1 == 2) & (YY1 & 3) & (DD1 == 29))//Visokosna year
																		{
																			return false;
																		}
																	else
																		{
																			if ((MM1 == 2) & (DD1 == 30))
																				{
																					return false;
																				}
																			else
																				{
																					if (YY1 < 2080)
																						{
																							if (YY1 < 100)
																								{
																									YY1 += 1900;
																										{
																										eval("document.forms(0)."+address+".value = MM1+'/'+DD1+'/'+YY1");
																										return true;
																										}
																								}
																							if (YY1>1899)
																								return true
																							else
																								return false
																						}
																					else
																						{
																							return false;
																						}
																				}
 
																		}
																}															
														}
													else 
														{
															return false;
														}
												}
											else 
												{
													return false;
												}
										}
								}
							else
								{
									return false;
								}
						}
					else 
						{
							return false;
						}
				}
			else
				{
					return false;
				}
		}