אפשר לסמוך על הוואלידציה...

אפשר לסמוך על הוואלידציה...

של פקדי הוואלידציה של הטפסים כמו RegularExpressionValidator
כלומר אם אני מבצע בדיקה Page.IsValid, (בצד שרת כמובן) אין סיכוי שזה ייפרץ
 

האזרחק

New member
יש

תמיד יכולים לשלוח לך את הערך הנכון שיגיד לך שהדף VALID. לא ניסיתי, זה בטח קצת יותר מסובך מטפסים "רגילים", אבל נראה שזה בהחלט אפשרי.
 
השאלה היא אם זה יהיה Valid../images/Emo35.gif

כלומר אם עשיתי פקד שמחזיר Valid רק אם הוא מקבל ארבע אותיות באנגלית, יש סיכוי שישלח ערך שהוא לא ארבע אותיות באנגלית וזה יעבור ואלידציה
 

האזרחק

New member
אההה.....

אחרי בדיקה למדתי ש ISVALID רץ גם בצד השרת ומבצע בדיקה כפולה. אפשר לעקוף הכל ולשלוח את הפרמטרים - אבל הבדיקה תתבצע בכל מקרה. בתחילה חשבתי ש ISVALID בודק ערך שמגיע מהלקוח... אבל מסתבר שלא.
 

האחתdush

New member
פקדי ואלידציה - הסיפור האמיתי

כאשר קוראים לדף aspx כל פקדי הואלידציה (שהם פקדי web) עוברים קומפילציה על השרת ונשלחים אל הלקוח כאשר הם כתובים כ- JavaScript ומקודדים בתוך ה- viewstate (ולכן הפקדים אינם חשופים ב- view source בצד הלקוח). בשלב הזה, הואלידציה מתבצעת בצד הלקוח, אך ההתניה לא נעשית בקוד פתוח, ולכן מי שרוצה לשלוח נתון, חייב לעמוד בתנאי הואלידציה. ואלידציה בצד השרת - זה כבר סיפור אחר, אין לה שום קשר ל- Page.isValid
 

האזרחק

New member
בוודאות?

אני מצאתי הסבר שטוען ש ISVALID כן מתייחס לבדיקה בצד השרת... הפקדים חשופים בצד הלקוח ואין שום בעיה לשלוח טופס שכביכול עבר בדיקה בצד הלקוח אל השרת - השאלה היא האם ISVALID ייתן לזה לעבור או לא.
 

האזרחק

New member
כן, זה ודאי

בדקתי - יש בדיקה שלמה בצד השרת. יצרתי טופס עם RANGE VALIDATOR , שמרתי את ה VIEW SOURCE אצלי, שיניתי את הערכים של ה JS ושלחתי לשרת קלט "לא חוקי". הפונקציה ISVALID תפסה את הערכים כשגויים בהתאם להגדרה בצד השרת.
 

האחתdush

New member
לא בטוחה שהוכחת בזה משהו

אם השתמשת ב- rangeValidator מה ענין JS כאן? ההגדרה של התנאי לואלידציה מובנית בתוך הפקד עצמו על פי הטווח שאתה נותן לו. אולי זו הסיבה לשגיאה שקיבלת. כמובן שיש אופציה לבציע ואלידציה בצד השרת באמצעות ואלידטור שהוא customized (זה כבר תלוי בלוגיקה של האפליקציה שלך) תחשוב, הרי כל הפואנטה של פקדי הואלידציה זה לא להעסיק את השרת עם אינפוטים שגויים שיכלו להבדק בצד הלקוח (כמו כתיבה לא נכונה של אימייל וכו'). מתוך ה- msdn: Validation controls have complete client-side implementation that allow DHTML supported browsers (such as Internet Explorer 4.0 and later) to perform validation on the client. Client-side validation enhances the validation process by checking user input before it is sent to the server. This allows errors to be detected on the client before the form is submitted, avoiding the round-trip of information necessary for server-side validation.
 

האזרחק

New member
נו?

אני מציע לך להניח RANGE VALIDATOR על טופס ולהסתכל על הקוד שנוצר כדי לגלות את הקשר בינו לבין JS... בקיצור, הפקדים מייצרים קוד JS לבדיקה בצד הלקוח כדי לחסוך פניה מיותרת לשרת בדיקה בצד השרת למקרה שמישהו מנסה לעקוף את הבדיקה מתוך כוונת זדון. הקוד הבא הופעל בעת לחיצה על כפתור בטופס שעליו מונח פקד TEXTBOX עם הגבלת טווח:
if(Page.IsValid ) { this.Label1.Text="IS VALID - "+this.TextBox1.Text ; } else { this.Label1.Text="NOT VALID - "+this.TextBox1.Text; }​
הטווח כוון להיות בין 0 ל-100. סדר הפעולות שביצעתי: 1. נכנסתי לטופס 2. שמרתי את הקוד שנשלח ללקוח בקובץ מקומי. 3. שיניתי את הקובץ כך שיוכל לעבוד מקומית (יחסים לספריות דרושות) 4. שיניתי את ה action של הטופס כדי שיישלח לשרת. 5. שיניתי את פונקציית ה JS שבודקת את הגבלת הטווח כך שתאפשר שליחה של מספרים בין 0 ל 200 (כאשר בשרת מוגדרת הגבלה בין 0 ל - 100) 6. שלחתי את הטופס עם המספר 150 מאחר והJS שלי איפשר את שליחת הטופס, ה RANGE VALIDATOR לא פעל בצד הלקוח אבל התשובה שקיבלתי היא:
NOT VALID - 150​
מסקנה?
 
נשמע לי מוזר...

יש לך עוד פרטים לגבי זה, מה הכוונה בדיקה בצד שרת
ליצור Regex בשרת כי הפקדים לא עושים בדיקה בשרת
 

אוריקס

New member
אתה בעצם טוען

שלא ניתן לעקוף את הבדיקה בקליינט? כי אם לא - אז זה לא ממש נכון
 
למעשה השאלה הזו היא טעות שלי...

מלכתחילה, כי עשיתי שהבדיקה תהיה רק בצד שרת, מה שאומר שרק השרת בודק, ולכן לא ניתן לעקוף את זה.
 

e y a l b

New member
נתקלתי בבעיה כזאת....

יש לי פקד טקסט שמקבל מספר ת.ז. בדקתי שהוא רק ספרות בעזרת RegularExpressionValidator הפקד עצמו עושה POSTBACK, לפי מה שהבנתי ה-VALIDATOR הי אמור למנוע מהפקד לעשות POSTBACK אם הערך שבתוכו לא נכון. אבל זה לא מתבצע. יש POSTBACK. עזרה בבקשה.
 

droren

New member
....

ניתן לעקוף בצד הקליינט בקלות עושים בדיקה גם בקליינט וגם בסרבר , וכך מרגישים בטוחים יחסית
 
למעלה