ולידציה של מיילים
-
עשיתי דיבוג ברפלקטור בדוטנט 4
וכן דיבוג ברפלקטור בדוטנט 4.6 במחשב וירטואלי להלן ההבדליםהפונקציה שזורקת את החריג בדוטנט 4 היא זו:
internal static int ReadReverse(string data, int index) { int num = index; while (0 <= index && (int)data[index] <= MailBnfHelper.Ascii7bitMaxValue && (data[index] == MailBnfHelper.Dot || MailBnfHelper.Atext[(int)data[index]])) { index--; } if (num == index) { throw new FormatException(SR.GetString("MailHeaderFieldInvalidCharacter", new object[] { data[index] })); } if (data[index + 1] == MailBnfHelper.Dot) { throw new FormatException(SR.GetString("MailHeaderFieldInvalidCharacter", new object[] { MailBnfHelper.Dot })); } return index; }
בדוטנט 4.6 הכל אותו דבר חוץ מהשורה באה:
while (0 <= index && ((int)data[index] > MailBnfHelper.Ascii7bitMaxValue || data[index] == MailBnfHelper.Dot || MailBnfHelper.Atext[(int)data[index]]))
יש פה הוספה, החלפה, החלפה, ומחיקה.
ולכן הוא מחזיר אמת במקום שקר
כך שלסיכום אכן יש פה באג לכאורא בדוטנט החדש...פורסם במקור בפורום CODE613 ב30/08/2015 19:46 (+03:00)
-
יש דרך לעדכן אותם בבאג הזה???
וחוצמיזה לא בדיוק הבנתי מה הולך בקוד הזה :shock: :shock:
מה בדיוק הוא מנסה לעשות..
אני כנראה ממש בור ועם הארץ.. אשמח אם יהיה לך כוח להסביר..
או שבשביל זה צריך לקרוא את הקוד של הפריימוורק??פורסם במקור בפורום CODE613 ב30/08/2015 20:41 (+03:00)
-
לא הבנתי אותך, גם לפי התקן הזה יש לאחר השטרודל מילה ואז נקודה ועוד מילה
לא, זה לא נכון בשום תקן. מעשית אתה צודק, אבל דוט נט לא יכול לעשות לך שגיאה כי "כמעט בטוח" שזה טעות... תיאורטית יכולה להיות לך כתובת מקומית ללא דומיין עילי (מעשי ברשתות פנימיות ועוד).
פורסם במקור בפורום CODE613 ב31/08/2015 12:19 (+03:00)
-
נראה לי שאתה צודק, פשוט בדוטנט החדש כל תו ביוניקוד הוא חוקי בכתובת המייל
הנה הקוד מקור, שים לב להערותinternal static int ReadReverse(string data, int index) { Debug.Assert(0 <= index && index < data.Length, "index was outside the bounds of the string: " + index); int startIndex = index; // Scan for the first invalid chars (including whitespace) for ( ; 0 <= index; index--) { if (data[index] <= MailBnfHelper.Ascii7bitMaxValue // Any Unicode allowed && (data[index] != MailBnfHelper.Dot && !MailBnfHelper.Atext[data[index]])) // Invalid char { break; } } // Check for empty/invalid dot-atom if (startIndex == index) { throw new FormatException(SR.GetString(SR.MailHeaderFieldInvalidCharacter, data[index])); } // Check for leading dot else if (data[index + 1] == MailBnfHelper.Dot) { throw new FormatException(SR.GetString(SR.MailHeaderFieldInvalidCharacter, MailBnfHelper.Dot)); } return index; }
פורסם במקור בפורום CODE613 ב31/08/2015 12:55 (+03:00)
-
אגב ריפרופי הזכרת לי את זה
http://tchumim.com/topic/456
לא יודע אם זה עוזר לך או לא. אבל זה מעניין...פורסם במקור בפורום CODE613 ב31/08/2015 22:03 (+03:00)
-
אגב ריפרופי הזכרת לי את זה
http://tchumim.com/topic/456
לא יודע אם זה עוזר לך או לא. אבל זה מעניין...ראיתי את זה.
זה הדבר היחיד שמצאתי בפורום בנושא של ולידציה :lol:
ראיתי את הקישורים שהבאתם שם לגבי טלפונים ולכן התייאשתי (בשלב זה :lol: ) מלכתוב פונקציה שתטפל בזה...פורסם במקור בפורום CODE613 ב31/08/2015 22:46 (+03:00)