הכוונה היא שכאשר מישהו מבקר באתר שלך ואו מבצע פעולה כלשהי, אתה תוכל לזהות אותו.
למה אני צריך זיהוי משתמשים חוזרים?
ישנן אין-ספור סיבות במה אפשר להשתמש בזיהוי משתמשים חוזרים, למשל:
מועדון חברים - בכבדי למנוע רשימת שני שמות-משתמשים.
מונה מבקרים - בכדי להימנע מלספור את אותו משתמש פעמים.
סקרים - בכבדי למנוע מאותו אדם להצביע פעמיים.
הסיבות העיקריות הן:
נוחות - נוכל בכך לזכור מידע על המשתמש ובכך להקהל על השימוש באתר. לדוגמה: זכירת שם המשתמש של כותב בפורום ,ובכך הוא לא צריך למלות את שם המשתמש שלו.
מידע! מידע! מידע! - שם המשחק הוא מידע. ככל שיש לנו יותר מידע על הרגלי הגלישה והשימוש של משתמשים באתר, נוכל להתאים את האתר. למשל: מונה מבקרים רק יגיד לך כמה אנשים נכנסו לאותו דף, אבל אם תגלה דפוס בהרגלי הגלישה (למשל אם כל מי שתולה הודעה בפורום חור לאחר שעתיים כדי לבדוק תשובות) ,אז תוכל להתאים את מבנה הפורום בהתאם.
למנוע כפל שימוש - ישנם פעולות מסוימות שאיננו רוצים שמישהו יבצע יותר מכמה פעמים (או אפילו רק פעם אחת). למשל: מונה מבקרים שסופר רק כניסה אחת לכל משתמש.
זיהוי משתמשים חוזרים בכלליות:
ישנם מספר שלבים בכל תהליך של זיהוי משתמשים חוזרים:
זיהוי משתמש שכבר ביקר באתר.
שליפת נתונים על המשתמש.
החזרת הנתונים המעודכנים.
שלבים ב-וג שונים ממשימה למשימה ולכן אני לא יכול להרחיב עליהם. שלב א הוא תמיד השלב הבעייתי, איך אפשר לזהות משתמש?
ישנם שלוש שיטות לזהות משתמשים חוזרים:
בעזרת עוגיות.
שיטה מאוד פשוטה וידועה, שתי הפקודות החשובות הן: Response.cookies - כדי לכתוב ערך של עוגיה על מחשב המשתמש. Request.cookies - כדי לקבל ערך של עוגיה ממחשב המשתמש.
ניתן להשתמש למספר מטרות: - נוכל בעזרת עוגיות לציין שמשתמש ביצע פעולה כלשהי. למשל: אם נרצה להגיד שמתשמש כבר הצביע בסקר, ניצור עוגיה שאומרת שהפעולה בוצעה. Response.cookies("VotedInSurvay") = "Yes"
וכדי לבדוק אם המשתמש כבר הצביע: if (Request.cookies("VotedInSurvay") = "yes") then ...
- לזכור ולהדפיס ערך של משתנה מסויים שהזין המשתמש למערכת. למשל: משתמשי פורום שמכניסים שם משתמש וזה יהיה נחמד אם זה יהיה רשום באותו שדה פעם הבאה שהם יבואו. Response.cookies("ForumUserName") = Request.form("Usernmae")
ובכדי להדפיס את הערך: <%
Response.write " "") then
Response.write " Value=" & Request.cookies("ForumUserName")
end if
Response.write ">"
%>
בעזרת משתני Session.
אותם שתי מטרות כמו בעוגיות, אבל רק נשמר לזמן מוגבל. היופי בכזה דבר, הוא לביצוע פעולות שאנו רוצים שלא ייזכרו. למשל: כאשר מישהו עושה Login למערכת כלשהי באתר, אנחנו לא רוצים שמישהו שיגיע מחר בעזרת אותו מחשב יוכל להתחבר לאותו חשבון, ולכן אנו גורמים למשתנה מסוג Session לזכור את זה שהמשתמש מחובר. וכאשר תקופת הזמן המוקצב עבר, אז משתנה הLogin יילך לאיבוד. Session("LoggedIn") = "Yes"
ובדיקה אם משתמש מחובר: if (Session("LoggedIn") = "Yes") then
Response.redirect "Loggedin.html"
else
Response.redirect "NotloggedIn.html"
end if
בעזרת מסד נתונים וכתובת IP.
אנשים חכמים יכולים לשנות עוגיות, משתני Session הולכים לאיבוד, ואז מה נשאר? שתי השיטות האחרות לא בטוחות לחלוטין, ולכן צריך את השיטה הזאת. בשיטה הזאת כל פעם שמשתמש מבצע פעולה כלשהי ,אתה רושם את כתובת הip שלו במסד נתונים. את כתובת הIP משיגים בעזרת: Request.ServerVariables("REMOTE_ADDR")
למשל: יש לנו טבלה בשם UserVoted בתוך סקר, שם כל הIPs שהצביעו נרשמים, ואז כל פעם שמשתמש בא להצביע אנחנו בודקים עם הip שלו קיים בטבלה.