בבקשה עזרה !!!!!

kinchi

New member
בבקשה עזרה !!!!!

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

N i X

New member
מה בידיוק אתה רוצה לעשות?

זה קצת בעיה להפעיל פונקציה כשסוגרים את הדף, תצתרך לשלב שפה אחרת כמו javascript, וכשהחלון נסגר, onWindowUnload (או משהו כזה, לא ממש מכיר JS), צריך יהיה לקרוא לדף מסויים עם פרמטרים מסויימים כדאי שיפעיל את הפונקציה, בקיצור סיבוך, ומעצבן למשתמש. אם תתן יותר פרטים, אולי אפשר לעשות את זה בדרך אחרת.
 

kinchi

New member
אוקי, אני יהיה יותר ברור...

ברגע שמשתמש שרשום כחבר באתר שלי יוצא מהאתר מישהו אחר יכול להיכנס לאתר והוא יהיה מזוהה כאותו אדם שסגר את האתר רגע לפני. כדי למנוע מצב זה, יש אפשרות לחברים ללחוץ על "התנתק" ואז הם באמת מנותקים. מאחר ולא כולם עושים את זה אני רוצה שבכל פעם שיוצאים מהאתר שלי, אז כאילו הם לחצו על "התנתק" שזו פונקציה מסויימת (אני לא מבין ב PHP אבל מכיר HTML). איך אני עושה את זה שיוצאים מהאתר שלי זה כאילו הם לחצו על התנתק, כלומר איך אני מפעיל את הפונקציה הזרת בכל יציאה מהאתר ? מקווה שהפעם אני קצת יותר ברור. תודה !
 

N i X

New member
לא מבין את הבעיה,

הרי רק אותו אחד שהיה מחובר יכול לחזור בשם המשתמש שלו, אנשים לא יכולים סתם ככה להתחזות למישהו אחר, אלה אם הם באותו מחשב... בPHP nuke אין אפשרות עם ניתוק אחריי זמן מסויים?
 

kinchi

New member
הבעיה היא...

שעל אותו מחשב גולשים הרבה אנשים. ולשאלה שלך: אם היה אפשרות כזו ל php nuke אז לא ההיתי מבקש כאן עזרה. אני צריך ליצור אפשרות כזאת בעצמי. אם מישהו יודע שיעזור בבקשה !!!!!!
 

תמר,

New member
הבעיה היא בתפוגת העוגיות

כאשר משתמש מתחבר למערכת השומרת עבורו נתונים, בין אם מדובר בצד השרת (משתני session) או בצד הלקוח (עוגיות - cookies), הנתונים נשמרים לתקופה מסויימת. ברירת המחדל, אם לא שינו אותה במפורש, היא ל-session, ז"א - לכל הפעלה מחדש של הדפדפן. מצד הנוחות, כאשר לכל משתמש יש מחשב/שולחן עבודה משלו - זה מאוד נוח שלא צריך לבצע login בכל פעם. לכן אני מניחה שבמערכת של php nuke הגדילו את זמן התפוגה של העוגיות או ה-session id. כדי לשנות זאת, חפש אם באחד הקבצים מופיעה הפונקציה session_set_cookie_params. אם אכן היא נמצאת, נסה לשנות את המספר הראשון ל-0 או למספר אחר יותר קטן ממה שמופיע, ואפילו לשים את השורה הזאת בהערה. אם השורה הזאת לא נמצאת, יכול להיות שמדובר בהגדרה ב-php.ini בנוגע ל-cookies (אם יש לך גישה לקובץ הזה, תוכל לשנות אותו כרצונך) בכל מקרה, גם אם הפונקציה הזאת לא נמצאת, תוכל לשים אותה באחד הקבצים שנקראים ע"י כל הקבצים האחרים (אולי יש אחד בשם config.inc או משהו כזה. הקובץ שכל הקבצים קוראים לו בעזרת include או require, והראשון שבהם). כדי לראות את התחביר של הפונקציה, קרא כאן.
 

kinchi

New member
קודם כל תודה רבה......

אני ממש מודה לך על התגובה הכ"כ יפה שלך. אני אומנם לא יודע PHP אבל יודע הרבה שפות אחרות כך שזה מקל עלי קצת בפיתרון הבעיה. מצאתי את הפונקציה הזאת if ((isset($aid)) && (isset($pwd)) && ($op == "login")) { if($aid!="" AND $pwd!="") { $pwd = md5($pwd); $result=sql_query("select pwd, admlanguage from ".$prefix."_authors where aid='$aid'", $dbi); list($pass, $admlanguage)=sql_fetch_row($result, $dbi); if($pass == $pwd) { $admin = base64_encode("$aid:$pwd:$admlanguage"); setcookie("admin","$admin",time()+2592000); unset($op); } } } תסתכלי בשורה אחת לפני אחרונה (בקובץ auth.php), אני חושב שיש לזה קשר לגבי הזמן התנתקות מהמערכת time()+2592000 אבל אני לא ממש מביו בזה. אגב אין לי בכלל קבצי INI. מצאתי עוד פונקציה והתפקידה לנתק מהמערכת, יש כפתור כזה במערכת, אבל אני לא מעוניין להיות תלוי באנשים שיתנתקו בכל פעם. הנה הפונקציה: function logout() { global $prefix, $dbi, $user, $cookie, $redirect; cookiedecode($user); $r_uid = $cookie[0]; $r_uname = $cookie[1]; setcookie("user"); include("header.php"); OpenTable(); if ($redirect != "") { echo "<META HTTP-EQUIV=\"refresh\" content=\"3;URL=modules.php?name=$redirect\">"; } else { echo "<META HTTP-EQUIV=\"refresh\" content=\"3;URL=index.php\">"; } echo "<center><font class=\"option\"><b>"._YOUARELOGGEDOUT."</b></font></center>"; CloseTable(); $result = sql_query("delete from ".$prefix."_session where username='$r_uname'", $dbi); $result = sql_query("delete from ".$prefix."_bbsessions where session_user_id='$r_uid'", $dbi); include("footer.php"); } אילו רק ידעתי איפה לשים את הפונקציה הזאת כדי שבכל פעם שיצאו מהאתר הפונקציה הזאת תפעל... ועוד משהו אחרון יש לי קובץ בשם config.php הוא נמצא בתיקייה הראשית. אשמח מאוד אם תוכלי להמשיך ולעזור. תודה רבה !!!!!!
 

תמר,

New member
תפוגת העוגיות

אתה יכול להוריד את ה-time()+2592000 מהפונקציה שמעדכנת את העוגיות, כך שלפונקציה יועברו רק שני פרמטרים. אם אכן זה המקום שבו נעשה שמירה של שם המשתמש - זה אמור לפתור לך את הבעיה.
 

kinchi

New member
עובד למחצה...

שוב שלום ! הבעיה נפתרה למחצה. אכן עשיתי מה שאמרת לי והורדתי את ה- time()+2592000מהפונקציה שמעדכנת את העוגיות. ברגע שסוגרים את דף האינטרנט ונכנסים בדף חדש אז הוא מתנתק מהמערכת (מצויין), אבל כאשר עוברים לאתר אחר (נניח מהמעודפים שיש לנו), מבלי לסגור את אותו הדף, כאשר חוזרים לאתר (עדיין אותו דף אינטרנט) אז הוא לא התנתק עדיין מהמערכת, וזאת למעשה הבעיה שנשארה לפתור. את יודעת אולי איך לפתור את בעיה (הפחות נוראית) הזאת ? תודה רבה על העזרה !!!
 

תמר,

New member
אפשר לחפש פונקציה ב-javascript

שנקראת עם סגירת הדף, ובעזרתה לקרוא לדף שמתנתק. אני לא מכירה את הפונקציה הזאת, אבל תוכל לחפש ברשת, בטח תמצא משהו. כעיקרון, javascript רץ בצד הלקוח, ואתה צריך למצוא דרך לשים את הקריאה לפונקציה הזאת בכל אחד מהדפים של האתר (או לפחות מאלו שאתה רוצה שתתבצע בהם התנתקות). לי אישית זה נראה מאמץ מיותר. מי שלא טורח לסגור את החלון או להתנתק מהמערכת - שיסבול
 

kinchi

New member
אני צריך פשוט לבדוק אם..

אני צריך פשוט לבדוק אם אני נמצא עדיין באתר שלי. אם ה URL שונה מהאתר שלי אז הוא קורא לפונקציה (או קובץ) מסויים. באיזה שפה עושים את זה ? לאן לפנות ?
 

האזרחק

New member
session

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