ולידציה של אימייל, תעודת זהות וכרטיסי אשראי
פורסם: 30 אוגוסט 2015, 20:16
מצ"ב קובץ של 3 מחלקות סטטיות שבודקות תקינות של מיילים, ת.ז. ואשראי.
עדכנתי את השינויים גם בקובץ..
העקרונות לת.ז. ואשראי נעשו ע"פ המבואר כאן, כאן, וכאן.
אני מצרף גם את הקוד ואשמח לשמוע הערות והארות!!
פונקציה לבדיקת ת.ז. (מתוקן):
csharp code
הפונקציה שבודקת כרטיסי אשראי:
csharp code
ולגבי הבדיקה של המייל כבר חפרנו בפורום מספיק
בהצלחה לכולם!!
עדכנתי את השינויים גם בקובץ..
העקרונות לת.ז. ואשראי נעשו ע"פ המבואר כאן, כאן, וכאן.
אני מצרף גם את הקוד ואשמח לשמוע הערות והארות!!
פונקציה לבדיקת ת.ז. (מתוקן):
csharp code
public static class ValidTehudatZehut
{
public static bool IsValidTZ(string numOfTeudatZehut)
{
int sumAll = 0;
if (numOfTeudatZehut.Length > 9||string.IsNullOrEmpty(numOfTeudatZehut))
return false;
else if(numOfTeudatZehut.Length<9)
{
while (numOfTeudatZehut.Length < 9)
{
numOfTeudatZehut = "0" + numOfTeudatZehut;
}
}
for (int i = 9; i > 0; i--)
{
int x = Convert.ToInt32(numOfTeudatZehut.Substring(i-1, 1));
if (i % 2 == 0)
{
x = x * 2;
if (x > 9)
x = (x % 10) + 1;
sumAll += x;
}
else
{
x = x * 1;
sumAll += x;
}
}
sumAll = sumAll % 10;
if (sumAll % 10 > 0)
return false;
else
return true;
}
}
הפונקציה שבודקת כרטיסי אשראי:
csharp code
public static bool validCardGenery(string credit)
{
if(string.IsNullOrEmpty(credit))
{
return false;
}
int sumAll = 0;
//כרטיס בין 11 ל19 תוים נבדק לפי אלגוריתם המשמש לבדיקת תקינות של ת.ז.
if (credit.Length > 10 && credit.Length < 20)
{
int y = 1;//משתנה שנועד להגדיר האם להכפיל ב1 או ב2
for (int i = credit.Length; i > 0; i--)
{
int x = Convert.ToInt32(credit.Substring(i-1, 1));
if (y % 2 == 0)
{
x = x * 2;
if (x > 9)
x = (x % 10) + 1;
sumAll += x;
y++;
}
else
{
x = x * 1;
sumAll += x;
y++;
}
}
sumAll = sumAll % 10;
if (sumAll % 10 > 0)
return false;
else
return true;
}
//אם אורך המספר בין 8 ל9 תווים - מדובר בכרטיס מסוג ישראכרט והאלגוריתם שונה
else if (credit.Length == 8 || credit.Length == 9)
{
int y = 1;//מספר הכפל כדי לבדוק אימות כרטיס
//אם הכרטיס באורך 8 ספרות - מוסיף לו 0 משמאל לצורך תקינות הבדיקה
if (credit.Length == 8)
{
credit = credit.Insert(0, "0");
}
for (int i = credit.Length; i > 0; i--)
{
int x = Convert.ToInt32(credit.Substring(i, 1));
x = x * y;
sumAll += x;
y++;
}
if (sumAll % 11 == 0)
return true;
else
return false;
}
//אם המספר ארוך מדי או קצר מדי - מדובר במס' שגוי
else
return false;
}
}
ולגבי הבדיקה של המייל כבר חפרנו בפורום מספיק
בהצלחה לכולם!!