• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    מה זה סשן ואיך משתמשים בו?

    פורום PHP
    5
    18
    700
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ש
      שמואל ש. @amp Software 0 נערך לאחרונה על ידי

      @amp-Software-0 הבעיה היא שאני משתמש בזה לא רק ל read אלא גם לקטעי קוד שאני לא רוצה שיבוצעו פעמיים כך שלענ"ד הקוד שלך לא יעזור לי פה
      או שאני טועה?

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • ש
        שמואל ש. @amp Software 0 נערך לאחרונה על ידי שמואל ש.

        @amp-Software-0 לא הבנתי, בכל פעם - אם אני מנסה מהדפדפן שאני קורא מחדש ל URL של הקוד אני כותב את המשתנה שממנו הסשן לקח ובתוך המשתנה ההוא אני כותב את אותו ערך שהיה בפעם הראשונה שקראתי ל URL בסיבוב הנוכחי וככה הוא זוכר את כל מה שכבר קיים בסשן?
        ואם אני משנה את הערך במשתנה של הסשן אז הכל מתחיל מחדש?
        או משהו אחר?
        @לעזור-לכולם

        תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • ש
          שמואל ש. @amp Software 0 נערך לאחרונה על ידי

          @amp-Software-0 @לעזור-לכולם סליחה על ההקפצה - אבל זה באותו נושא...
          אני רוצה להשתמש בזה לאותו שימוש ש @amp-Software-0 היה צריך - למחוק הקשות
          עכשיו אני מבין שפשוט אפשר לעשות את כל הבדיקות וכן את כל הפעולות ע"פ הפרמטרים של הסשן ולא של ה GET
          אבל אני לא מבין - הרי איך ההקשות ייכנסו לסשן? ע"י איתחול של

          $_SESSION["aaa] = $_GET['aaa'];
          

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

          A תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • A
            amp Software 0 @שמואל ש. נערך לאחרונה על ידי

            @שמואל-ש
            הרעיון הוא שבכל פעם מכניסים לסשן רק את הפרמטר האחרון שנשלח ב GET (מומלץ להשתמש עם QUERY_STRING ולא עם אובייקט GET), ככה שאם מחקת ערך מהסשן, הוא לא יכנס בשליחות הבאות

            תראה דוגמא:

            $last_param = substr($QUERY_STRING, strrpos($QUERY_STRING, '&') + 1);
            $param = explode('=', $last_param);
            $_SESSION[$param[0]] = $_GET[$param[0]];
            

            יכול להיות שיש שיטות אחרות (אפשר גם לרשום באובייקט סשן איזה ערך אתה מצפה לקבל, ולקבל רק אותו], ככה אני נוהג לעשות

            ש תגובה 1 תגובה אחרונה תגובה ציטוט 1
            • ש
              שמואל ש. @amp Software 0 נערך לאחרונה על ידי

              @amp-Software-0 לא הבנתי
              אני למשל מדבר עכשיו על הערך id
              קיבלתי מהמשתמש כבר שזה 147258
              עכשיו אני רוצה להכניס את זה לסשן אז אני עושה

              $_SESSION['id'] = $_GET['id'];
              

              אח"כ אני רוצה למחוק את הפרמטר, אז אני עושה

              unset($_SESSION['id']);
              

              אז בריצה הבאה הערך של GET לא מוכנס שוב לסשן עם השורה למעלה?

              A תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • A
                amp Software 0 @שמואל ש. נערך לאחרונה על ידי

                @שמואל-ש
                לא, אתה לא מכניס את הסשן בצורה כזאת

                $_SESSION['id'] = $_GET['id'];
                

                אלא בצורה שציינתי, שבכל כניסה לדף הוא מכניס את הפרמטר האחרון
                להלן דוגמא מלאה:

                
                
                session_id($_GET['ApiCallId']);
                session_start();
                
                $last_param = substr($QUERY_STRING, strrpos($QUERY_STRING, '&') + 1);
                $param = explode('=', $last_param);
                $_SESSION[$param[0]] = $_GET[$param[0]];
                
                
                if (!isset($_SESSION['param1'])){
                    echo 'read=t-הקלד פרמטר ראשון=param1';
                    exit();
                }
                
                $param1 = $_SESSION['param1'];
                
                if (!isset($_SESSION['param2'])){
                    echo "read=t-הקשת $param1 לאישור הקש 1 להקשה מחודשת הקש 2=param2";
                    exit();
                }
                
                $param2 = $_SESSION['param2'];
                
                if ($param2 == '2'){
                    unset($_SESSION['param1']);
                    echo 'go_to_folder=' . $_GET['ApiExtension'];
                    exit();
                }
                

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

                <?php
                
                session_id($_GET['ApiCallId']);
                session_start();
                
                $last_param = substr($QUERY_STRING, strrpos($QUERY_STRING, '&') + 1);
                $param = explode('=', $last_param);
                $_SESSION[$param[0]] = $_GET[$param[0]];
                
                $param1 = read("param1", "t-הקלד פרמטר ראשון");
                
                $param2 = read("param2", "t-הקלדת $param1 , לאישור הקש 1, להקשה מחודשת הקש 2");
                
                if ($param2 == 2) {
                    unset_session_value("param2");
                    reload();
                }
                
                
                
                function read($param, $voice)
                {
                    if (!isset($_SESSION['param2'])) {
                        echo "read=$voice=$param";
                        exit();
                    }
                    return $_SESSION[$param];
                }
                
                function unset_session_value($param)
                {
                    unset($_SESSION[$param]);
                }
                
                function reload()
                {
                    echo 'go_to_folder=' . $_GET['ApiExtension'];
                    exit();
                }
                
                ש צ 2 תגובות תגובה אחרונה תגובה ציטוט 1
                • ש
                  שמואל ש. @amp Software 0 נערך לאחרונה על ידי

                  @amp-Software-0 תודה רבה!!!

                  תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • צ
                    צדיק תמים מומחה @amp Software 0 נערך לאחרונה על ידי צדיק תמים

                    @amp-Software-0 אולי תפרסם את החבילה שלך באמצעות מנהל החבילות של PHP (‫Composer?) או לפחות בצורה מסודרת בגיטאהב?
                    יהיה אפשר לעשות פוסט של "ספריות למודול API" (יש כבר בnodejs, C#, PHP) ולנעוץ אותו

                    ע תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • הוזכר על-ידי  A amp Software 0 
                    • הוזכר על-ידי  ש שמואל ש. 
                    • הוזכר על-ידי  S soris1989 
                    • ע
                      עידו @צדיק תמים נערך לאחרונה על ידי

                      @צדיק-תמים כתב במה זה סשן ואיך משתמשים בו?:

                      יהיה אפשר לעשות פוסט של "ספריות למודול API" (יש כבר בnodejs, C#, PHP) ולנעוץ אותו

                      איפה יש ספריה לC# וPHP?

                      צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • צ
                        צדיק תמים מומחה @עידו נערך לאחרונה על ידי צדיק תמים

                        @עידו לPHP מה ש @amp-Software-0 הביא כאן (בצורה חלקית)
                        לC# זה כאן https://f2.freeivr.co.il/topic/11523/ספריה-להגדרות-מודול-api-של-ימות-המשיח-באמצעות-net

                        תגובה 1 תגובה אחרונה תגובה ציטוט 1
                        • פוסט ראשון
                          פוסט אחרון