מצטערת שאני מציקה

מצטערת שאני מציקה

אבל זה עדיין לא הולך. המטרה: לא לתת לשני משתמשים להכנס למערכת באמצעות אותו לוגין וסיסמא בו זמנים. מה שאני חשבתי: - לבנות טבלת Current_Users ,בזמן הלוגין לבדוק אם המשתמש מופיע בטבלה. - אם הוא מופיע - לא לתת לו להכנס - אם הוא לא מופיע - לתת לו להכנס ולהכניס את מספרו לטבלה. - ב- Session_OnEnd למחוק את המשתמש מהטבלה. הבעיות: - Session_OnEnd מבצע פעולות קצרות (כמו הצבת ערך במשתנה) אך לא מבצע את פתיחת ה-DB והמחיקה. (ההסבר שקיבלתי ממשהו, הוא שאין ל-Session_OnEnd הרבה זמן להתבצע ולכן הוא לא מספיק) - Session_OnEnd מתבצע בטוח רק עם קריאה ל- Session.Abandon או כשה-TimeOut נגמר. הוא לא תמיד מתבצע אם המשתמש עוזב את האתר או סוגר את הדפדפן, כך שגם אם הוא יסכים למחוק מהטבלה, אי אפשר לסמוך עליו. הצעה אחת לפתרון שקיבלתי: בכל Session_OnStart למחוק מהטבלה את אלו שנמצאים, נגיד, מעל רבע שעה. אבל זה אומר שאם משתמש נכנס לאתר, אחרי רבע שעה הוא נמחק, ומשתמש אחר יכול להכנס עם אותו לוגין וסיסמא, וכך הם ישההו בו זמנית, מה שאני מנסה למנוע. אז זהו. זאת הבעייה. אולי אני לא מסתכלת עליה נכון. למישהו יש הצעה לדרך אחרת או פתרון לבעיות בדרך שלי? איך בכלל אני יודעת שהמשתמש עזב את האתר או סגר את הדפדפן?
 

}}נץ{{

New member
תרשי לי להציע לך משהו אם הבנתי

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

קיפוש

New member
לא הבנת נכון לצערי.

אולי בכל דף שהוא נכנס תאריכי את הSESSION בעוד 10 דקות?
 

זהר פלד

New member
בכל פעולה על ה session

ה session time out מתחיל לספור את עצמו מחדש... זה קורה אוטומאטית...
 
זה ברור, אבל

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

}}נץ{{

New member
אולי אפשר להכניס את כל המשתמשים

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

זהר פלד

New member
אבל אם המתשמש עזב את האתר,

או סגר את הדפדפן, ה session time out יגיע בכל מקרה... ובקשר לטבלה... עדיף לך, כנראה, לעשות את זה ב Application... למרות שאם יש לך log in, אז צריך להיות לך גם log out, ושם את יכולה לבצע את הפעולות האלה... נשיקה וחיבוק
 
)-: אבל, אבל, אבל...

אם המסכן שכח לעשות logout, או שאישתו נכנסה באמצע, והוא סגר את הדפדפן כדי שהיא לא תראה, אז מה הוא אשם? אז עכשיו הוא ישאר בטבלה לנצח ולא יוכל להכנס עוד לאתר? ומה איך בדיוק לעשות את הטבלה ב-Application, איך אני אדע שם מתי ואיזה משתמש נכנס או יוצא?
 

זהר פלד

New member
את יודעת שהוא נכנס ב log in...

ואת יודעת שהוא יוצא ב log out או ב session time out, מה שבא קודם... אז ב log in את מכניסה את ה userName שלו (שבין כה אמור להיות יחודי) אל תוך משתנה application ומשרשרת לו ; (או כל תו אחר שלא חוקי בתור חלק מ ה userName). ב session time out את פשוט מוציאה אותו משם... וב log in את בודקת בעזרת inStr אם ה userName הזה כבר נמצא ב application... זה הכל... חיבוק ונשיקה.
 
אוי...

אבל אם אנחנו מדברים על מערכת גדולה עם המון משתמשים, זה יהיה ממש ארוך... |lev|
 

זהר פלד

New member
אז יהיה לך משתנה application שיכיל

מחרוזת באורך 2000 תווים... או יותר... זה לא כזה היסטרי... בכלל בכלל לא... זה אפילו מעמיס פחות על השרת מאשר התחברות לבסיס נתונים, לדעתי... וחוץ מזה, אפשר לעשות את זה גם ב log file (זה יצא איטי...)
 
ההצעה שנתנו לך...

של לשמור אותם בטבלה זמנית ולעדכן את ה-``כניסות`` שלהם, זה רעיון לא רע. אבל הפסקת מוקדם מדי. :) בתור התחלה, רבע שעה זה יותר ממספיק... אבל זה גם תלוי באופי ותוכן האתר. אם זה אתר שבו ממש יושבים וקוראים תוכן... רבע שעה עלול להיות מעט מדי זמן. ולכן כדאי לך, בנוסף ללהוסיף נתונים, לבדוק אם נתונים מסויימים קיימים. כי אם מישהו התחבר טנרשם בטבלה, את יכולה לאסוף את ה-Session.ID שלו ולהשוות אותה ל-Session.ID שקיימת ב-DB. אם הן לא שוות, לא לאפשר לו כניסה. באותו אופן את יכולה להאריך שהות של מישהו באתר... כי אם ה-Session.ID כן שווה... זה אומר שזה אותו אחד שנכנס במקור... אז את יכולה להקצות לו עוד רבע שעה.
 

זהר פלד

New member
אבל הגענו למסקנה שאי אפשר

להתחבר לטבלה ב session time out.... או שזו מסקנה שגויה? ובוקר טוב נוטה... מה שלומך? ;-)
 
מסקנה שגויה. ובוקר טוב, מותק. ;-)

כל הבדיקות מתבצעות ב-Session_OnStart. למעט הארכת ה-Session הקיים... שד``א, לא נסגר כל עוד המשתמש פעיל באתר.
 
למעלה