ABA


"שאלה בנושא Session בכללי וב PHP,"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #10211 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10211
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   16:25   05.07.11   
אל הפורום  
  שאלה בנושא Session בכללי וב PHP,  
 
   ערכתי לאחרונה בתאריך 05.07.11 בשעה 16:48 בברכה, dvir8
 
שלום לכולם,

תוך כדי לימוד שפת PHP אני מיישם קצת Session.
בעיקרון יצרתי מסך Login.
בהזנת השדות הפרמטרים נשלחים לדף check-login.php

בדף זה, מתבצעת בדיקה של השדות מפני sql-injection ובמקביל מתבצעת שאילתא לודא האם קיימים שתי שדות שמקיימים את השם משתמש והסממא.

לאחר מכן אני סופר את התוצאות שיתקבלו. במידה והתוצאה היא 1 ז"א שהשם משתמש והססמא נכונים.

לאחר מכן אני יוצר Session.
אני יוצר משתנה Session ומזין לתוכו את שם המשתמש.

כשאני מנסה להשתמש במשתנה הנ"ל בדף אחר, אני לא מקבל שום דבר.
הקוד שלי נראה כך:


<?php
session_start();
$_SESSION('username') = "sample";
?>

בדף אחר באתר הקוד נראה כך:


<?php
echo $_SESSION('username');
?>

הסוגריים העגולות הם מרובעות.

מה הסיבה שהמשתנה לא עובר לדף הבא?


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


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תוסיף גם לשם session_start. ואין מצב ש-SESSION לא נמחק Ice Cold  05.07.11 17:18 1
     עובד! לגבי סיום ה session, dvir8 05.07.11 23:16 3
  נסה דפדפן אחר asco88  05.07.11 17:25 2
     מוזר מאוד אני אנסה מה שאתה אומר, dvir8 05.07.11 23:16 4
         תבדוק שבאמת המשתנה מוגדר asco88  06.07.11 11:09 7
             הבעיה העיקרית היא שאפילו session_destroy dvir8 06.07.11 11:46 8
  עדכון לגבי הנושא הנ''ל, dvir8 06.07.11 08:57 5
     עדכון נוסף: עשיתי ריסטרט לשרת ועדיין הקובץ קיים!!! dvir8 06.07.11 09:29 6
         מחיקת הקובץ תלויה בזמן, וניתן לשנות אותו asco88  06.07.11 14:58 9
             שיניתי ל 10 עשיתי ריסטרט לשרת ועדיין לא עזר, dvir8 06.07.11 15:22 10
             lifetime לא קשור בכלל להאם SESSION נעלם או לא. Ice Cold  06.07.11 16:11 11
                 מה הכוונה להשאר לא פעיל? dvir8 06.07.11 19:53 12
  אני משתמש ב apache האם אתם משתמשים בשרת אחר? dvir8 06.07.11 19:54 13

       
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   17:18   05.07.11   
אל הפורום  
  1. תוסיף גם לשם session_start. ואין מצב ש-SESSION לא נמחק  
בתגובה להודעה מספר 0
 
תבדוק אם אין לך PROCESS של הדפדפן פתוח אצלך, שמונע מהדפדפן להיסגר לגמרי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   23:16   05.07.11   
אל הפורום  
  3. עובד! לגבי סיום ה session,  
בתגובה להודעה מספר 1
 
   מאוד מוזר. ניסיתי רק עם כרום אבל מחר אני אחקור את הנושא קצת יותר לעומק ואדווח.

תודה אגב!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   17:25   05.07.11   
אל הפורום  
  2. נסה דפדפן אחר  
בתגובה להודעה מספר 0
 
כרום משאיר את עצמו פועל גם אחרי הסגירה שלו.
נסה לעשות isset לSESSION לפני הקריאה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   23:16   05.07.11   
אל הפורום  
  4. מוזר מאוד אני אנסה מה שאתה אומר,  
בתגובה להודעה מספר 2
 
   למרות שלא הבנתי איך isset עשוי לפתור את הבעיה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   11:09   06.07.11   
אל הפורום  
  7. תבדוק שבאמת המשתנה מוגדר  
בתגובה להודעה מספר 4
 
ISSET בודק האם משתנה מוגדר, תעשה איזשהו תנאי שיחזיר האם הSESSION שלך הוא בכלל מוגדר (אחרי ההתחברות כמובן) ותעשה דבר דומה לאחר ההתנתקות, עצם קיום הקובץ לא אומר בהכרח שהSESSION מוגדר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   11:46   06.07.11   
אל הפורום  
  8. הבעיה העיקרית היא שאפילו session_destroy  
בתגובה להודעה מספר 7
 
   לא מוחק את הקובץ. ה session באמת נגמר אני רואה לפי זה שהוא לא מזהה את המשתמש. אבל הקובץ קיים לי ב temp.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   08:57   06.07.11   
אל הפורום  
  5. עדכון לגבי הנושא הנ''ל,  
בתגובה להודעה מספר 0
 
   עבר עריכה לאחרונה בתאריך 06.07.11 בשעה 08:57:37 על-ידי Ice Cold (מנהל הפורום)
 
אוקי. אז ניסיתי מספר שיטות כפי שדיברנו ובנוסף חיפשתי קצת בגוגל.

אני אסביר מה עשיתי כי יכול להיות שישנה בעיה עם הקוד שלי לפני שאני מתחיל לחפש בעיה אחרת.

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


<?php session_start(); ?>

כדי לקבל בשלב מאוחר יותר את המשתנים מעמוד אחר.

בתיקיית ה temp שלי יש קובץ 1:
sess_5ed6eee198d139fa6035e9b0f377d213

לאחר ההתחברות לאתר ישנו הקוד הבא:


session_start();
// store session data
$_SESSION['userid'] = $info['Privillage'];
$_SESSION['nickname'] = $info['Nickname'];
header("location:../index.php");

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

בתיקיית ה temp ישנו אותו session עם אותו קוד.

בעת לחיצה על signout והשמדת ה session הקובץ לא נמחק.
הקוד בעמוד ה signout נראה כך:


<?php
session_start();
session_unset();
session_destroy();
header("Location: ../index.php");
?>

יכול להיות שישנה טעות במבנה הקוד שלי ואולי לא הבנתי משהו כמו שצריך להיות?

תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   09:29   06.07.11   
אל הפורום  
  6. עדכון נוסף: עשיתי ריסטרט לשרת ועדיין הקובץ קיים!!!  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   14:58   06.07.11   
אל הפורום  
  9. מחיקת הקובץ תלויה בזמן, וניתן לשנות אותו  
בתגובה להודעה מספר 6
 
אני מניח שאתה עובד על שרת מקומי, אז אתה יכול להיכנס לקובץ php.ini.
כנס לשם וחפש:
session.gc_maxlifetime
מיד אחריו יופיע מספר בשניות, נסה לשנות אותו ולבדוק אם זה משפיע לפי מה שאתה שם.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   15:22   06.07.11   
אל הפורום  
  10. שיניתי ל 10 עשיתי ריסטרט לשרת ועדיין לא עזר,  
בתגובה להודעה מספר 9
 
   מוזר. גם כשאני עושה regenerate_id הוא יוצר לי קובץ חדש במקום למחוק את הקיים וליצור חדש.

אני בטוח שזה משהו בהגדרות בקובץ שאמרת.
אני אבדוק במחשב נוסף ויראה אולי הבעיה בכלל בקוד שלי ואעדכן.

תודה לך


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   16:11   06.07.11   
אל הפורום  
  11. lifetime לא קשור בכלל להאם SESSION נעלם או לא.  
בתגובה להודעה מספר 9
 
המשמעות של gc_lifetime היא כמה זמן SESSION יכול להישאר לא פעיל. למשל:

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

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   19:53   06.07.11   
אל הפורום  
  12. מה הכוונה להשאר לא פעיל?  
בתגובה להודעה מספר 11
 
   מה יקרה אם אני אלחץ F5? הוא יתחדש?
או שאתה מתכוון שכל עוד המשתמש לא מבצע פעולה מסויימת ה session שלו נגמר בכך שכל עוד הוא לא עושה רענון הוא לא יכול לבצע שום פעולה באתר שדורשת שימוש ב session. אלא אם כן הוא ביצע רענון ולאחר מכן בכל מקרה ה session מתחלף בחדש.

זאת הכוונה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   19:54   06.07.11   
אל הפורום  
  13. אני משתמש ב apache האם אתם משתמשים בשרת אחר?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net