אחרי שראיתי בפורום כמה שאלות על איך ולמה מעבירים הודעות שגיאה תמיד כשבונים מערכת שדורשת הכנסה של נתונים לטופס יהיה לפחות מישהו אחד,לא בהכרח בזדון, שלא יכניס נתונים, שיכניס נתונים שגויים כמו שם וססמא לא נכונים וכד.
על חלק מהמקרים אפשר להתמודד בעזרת ואלידציה של JavaScript בדף הטופס עצמו,עוד אצל על הלקוח.
זאת היא שיטה למי שמחפש איך להודיע למשתמש הודעות שגיאה על מנת שיתקן את הטעויות.
קודם כל שמים בעמוד של הטופס את הפונקציה הבאה :
שדואגת לקפיצה של הודעת ALERT עם ההודעה הנדרשת.
לאחר מכן את קוד ה- ASP : <%
Dim ReErr,PopErr
ReErr = Request.QueryString("MyErr")
ReErr = cStr(ReErr)
If ReErr <> "" then
PopErr = "onLoad=Popup("""& ReErr &""")"
Else
PopErr = ""
End If
%>
כל זה בא לפני תג ה- BODY במטרה שבתג עצמו נגיד לפונקציה לעלות עם העלאת העמוד.
זה בא בקוד ה- BODY : >
ככה אם PopErr ריק לא יקרה כלום , ואם קיימת שגיאה , אז היא תקפוץ לנו עם הפעלת העמוד.
בעמוד הבדיקה של הנתונים מול ה- Database אנחנו רושמים: <%
Option Explicit
Dim Nick,Pass,Crs,MyErr
Nick = Request.form("nick")
Pass = Request.form("pass")
%>
< !-- #include file="connect.asp" -->
<%
set Crs=server.createobject("adodb.recordset")
Crs.activeconnection=Conn
Crs.open "select * from Members where nick="& Nick &""
If Crs.EOF then
No record was found
nick Doesnt Exist
Redirect to The Main Page with error
MyErr = " לא קיים במערכת " & nick & " משתמש בשם "
Response.Redirect "index.asp?MyErr="& MyErr &""
Else
Check If passwords are equal
If Crs.Fields("pass") = Pass then
Session("AUTH")= TRUE
Session("nick") = Nick
Redirect to The Members Main Page
Response.Redirect "Mindex.asp"
Else
diffrent passwords
Redirect to The Main Page with error
MyErr = "הססמא שהכנסת לא תואמת את הססמא ששמורה במערכת"
Response.Redirect "index.asp?MyErr="& MyErr &""
End If
End If
%>
לאחר שמקבלים את המשתנים מתוך הטופס פותחים קישור למסד הנתונים, ובודקים , אם המשתמש לא קיים במערכת מקשרים בעזרת השמת ההודעה הבאה כהודעת השגיאה : MyErr = " לא קיים במערכת " & nick & " משתמש בשם "
ואחר כך שליחה אל הדף הראשי Response.Redirect "index.asp?MyErr="& MyErr &""
באופן דומה אנחנו גם בודקים את הססמא. ניתן גם לאגור מספר הודעות שגיאה, ובסוף הדף לשלוח אותן.
ככה גם אנחנו יכולים להעביר מישהו שנכנס אל דף שדורש ססמא אל הדף הראשי <%
If Not(Session("AUTH")= TRUE) then
User isnt Authorized
Redirect to The Main Page with error
MyErr = "דף זה מיועד לחברים בלבד, אם אתה חבר אז עליך להתחבר למערכת"
Response.Redirect "../index.asp?MyErr="& MyErr &""
End If
%>
בדוגמא הזאת, הדף נמצא בתיקייה אחת למעלה ולכן אנחנו כותבים /.. על מנת לעלות תיקייה.
אפשר גם להדפיס את הודעת השגיאה לעמוד ע"י שימוש ב – RESPONSE.WRITE והורדת הקטעים שמשתמשים בפונקציה( הקריאה ב- ONLOAD, הפונקציה עצמה (Popup ), ובמקום PopErr = "onLoad=Popup("""& ReErr &""")" שמים רק PopErr = ReErr .
|