global.asa

global.asa

מה יכולות להיות הסיבות ל``אי פעילותו`` ?? איך ניתן לבדוק האם הוא עובד? אני רוצה שיבצע רק את Session_OnEnd, שימחק משהו מטבלה, אבל הוא לא מוכן לעשות זאת :-( למה |?| (מצורף הקובץ)
 

זהר פלד

New member
הי מותק... אז ככה:

אני לא בטוח שאפשר להשתמש במשתני session בתוך session_on_end, אבל אולי כן... בכל מקרה, יכול להיות שה session time out עוד לא נגמר? נסי לשנות אותו לדקה אחת (ע``י השורה session.timeOut = 1), ותראי. חוץ מזה, ה global.asa בטוח עובד?
 
אבל... אבל...

ה- Session_OnEnd אמור להתבצע גם אם אני סוגרת את הדפדפן או עוברת לאתר אחר, לא? זה הרי כל הרעיון... ואיך אני יכולה לבדוק שה- global.asa באמת עובד?
 

IgalR

New member
עכשיו ראיתי את הקובץ שלך .

ואני בטוח כמעט בוודאות שכש Session_OnEnd מתרחש משתני ה SESSION כבר לא קיימים . את יכולה לבדוק את זה ע``י הורדה של תנאי ה IF כי נראה לי שהבדיקה של SESSION)``USER``( אצלך בקוד לא מחזירה TRUE לעולם בגלל שהSESSION כבר לא קיים . את יכולה לבדוק את ה GLOBAL בעסה ע``י שינוי משתנה APPLICATION כלשהו וניסיון קריאה שלו בדף אחר .
 

זהר פלד

New member
נכון... וה session_on_end מתבצע

רק אחרי שה session time out נגמר... הרי אין לך דרך ב ASP לבדוק שהמשתמש מחובר... ה session time out מתחיל להספר מרגע ביצוע הפעולה האחרונה על ה session... (זה כולל refresh). אגב, יגאל, הבנתי שב asp3 יש משהוא כמו isConnected... מה מי מו?
 

IgalR

New member
יש דבר כזה שנקרא

isClientConnected ובודקים אותו כך : if Response.isClientConnected then run some long code here . . . end if אבל זה עובד רק כשתוך כדי ריצה של קוד צד שרת המשתמש מתנתק .
 
אוף...

אין לי בעייה בפנייה למשתנה Application שהוגדר ב- global.asa, כלומר, הוא עובד... אבל ה- Session_OnEnd לא מתבצע גם אם אני קוראת ל- Session.Abandon, גם אם אני מוחקת את התנאי שמתייחס למשתנה ה-Session... כלומר, הרשומה המעצבנת לא נמחקת מהטבלה
 

זהר פלד

New member
רגע... אם את מצליחה להכניס ערך

אל תוך משתנה application ב session_onEnd, זה אומר שהוא עובד... וזה אומר, בעצם, שה DELETE לא מתבצע מסיבה אחרת... נסי להכניס ל application משהו כזה: Application(``check``) = ``Session(````user````) = ``& session(``user``) ואז אם את לא מקבלת שם את הערך של session(``user``), זה אומר בעצם שהוא כבר נמחק... ותצטרכי למצוא פתרון אחר... חיבוק ונשיקה...
 
לא... לא הובנתי...

איתחלתי משתנה ב- Application_OnStart כדי לבדוק שהקובץ עובד, והוא אכן עובד, אבל ה- Session_OnEnd לא מתבצע מוההה...
 

rmarko

New member
אני חושב, אבל לא בטוח,

שאי אפשר לגשת למסד נתונים מתוך global.asa -- זכורה לי כזו הודעה של מישהו שניסה לעשות משהו עם המסד נתונים מ- global.asa בפורום הקודם, ונכשל גם כן, והציע את התיאוריה הזאת. אפשר לבדוק..
 
תיקון...

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

זהר פלד

New member
זה לא חייב להיות בטבלה...

אם זה לא המון משתמשים, את יכולה לעשות את זה בעזרת application... או שאת יכולה לעשות את זה בעזרת קובץ TXT, ו FileSystemObject...
 

זהר פלד

New member
אבל אם הוא לא מכיר את ה session...

אז זה לא פותר את הבעיה... :-( אבל מרקו אמר שהוא כן מכיר את ה session, וזה גם נשמע הגיוני... תנסי להריץ את הדוגמה שלו...
 

rmarko

New member
8-( כתבתי הודעה לפני רבע שעה

יפה כזאת, עם הרבה כוכביות... תקראי - כרגע היא ממש שורה אחת מתחת להודעה -> -> הזאתי H-) H-)
 

rmarko

New member
דווקא לא..

הרגע בדקתי את הסוגייה הזו בדיוק - הרצתי את test1.asp ואז את test2.asp (ראה קובץ מצורף) - והתוצאה היתה אכן hei hei. כלומר, Session_onEnd מתבצע כפעולה האחרונה לפני שיחרורו הסופי של משתנה ה- session. במילים אחרות: יש אפשרות לעשות את מה שאת רוצה לעשות, ילדה בלבן :cool:
 
להודעה הזו התכוונת??

הבעייה שלי היא שאני לא יכולה לגשת למשתני ה-Session ב- Session_OnEnd ויש לי יותר מידי משתמשים בשביל לנהל אותם באמצעות Application )-: ותודה רבה רבה על ההשקעה :)
 
למעלה