מה זה סשן ואיך משתמשים בו?
-
@amp-Software-0 הבעיה היא שאני משתמש בזה לא רק ל read אלא גם לקטעי קוד שאני לא רוצה שיבוצעו פעמיים כך שלענ"ד הקוד שלך לא יעזור לי פה
או שאני טועה? -
@amp-Software-0 לא הבנתי, בכל פעם - אם אני מנסה מהדפדפן שאני קורא מחדש ל URL של הקוד אני כותב את המשתנה שממנו הסשן לקח ובתוך המשתנה ההוא אני כותב את אותו ערך שהיה בפעם הראשונה שקראתי ל URL בסיבוב הנוכחי וככה הוא זוכר את כל מה שכבר קיים בסשן?
ואם אני משנה את הערך במשתנה של הסשן אז הכל מתחיל מחדש?
או משהו אחר?
@לעזור-לכולם -
@amp-Software-0 @לעזור-לכולם סליחה על ההקפצה - אבל זה באותו נושא...
אני רוצה להשתמש בזה לאותו שימוש ש @amp-Software-0 היה צריך - למחוק הקשות
עכשיו אני מבין שפשוט אפשר לעשות את כל הבדיקות וכן את כל הפעולות ע"פ הפרמטרים של הסשן ולא של ה GET
אבל אני לא מבין - הרי איך ההקשות ייכנסו לסשן? ע"י איתחול של$_SESSION["aaa] = $_GET['aaa'];
כדי לקבל את ההקשה שהמשתמש הקיש, אז אם כן גם אחרי מחיקת פרמטר מהסשן הוא יחזור כי אנחנו מאתחלים אותו בחזרה עם ה GET, לא?
או שפספסתי משהו? -
@שמואל-ש
הרעיון הוא שבכל פעם מכניסים לסשן רק את הפרמטר האחרון שנשלח ב GET (מומלץ להשתמש עם QUERY_STRING ולא עם אובייקט GET), ככה שאם מחקת ערך מהסשן, הוא לא יכנס בשליחות הבאותתראה דוגמא:
$last_param = substr($QUERY_STRING, strrpos($QUERY_STRING, '&') + 1); $param = explode('=', $last_param); $_SESSION[$param[0]] = $_GET[$param[0]];
יכול להיות שיש שיטות אחרות (אפשר גם לרשום באובייקט סשן איזה ערך אתה מצפה לקבל, ולקבל רק אותו], ככה אני נוהג לעשות
-
@amp-Software-0 לא הבנתי
אני למשל מדבר עכשיו על הערך id
קיבלתי מהמשתמש כבר שזה 147258
עכשיו אני רוצה להכניס את זה לסשן אז אני עושה$_SESSION['id'] = $_GET['id'];
אח"כ אני רוצה למחוק את הפרמטר, אז אני עושה
unset($_SESSION['id']);
אז בריצה הבאה הערך של GET לא מוכנס שוב לסשן עם השורה למעלה?
-
@שמואל-ש
לא, אתה לא מכניס את הסשן בצורה כזאת$_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(); }
-
@amp-Software-0 תודה רבה!!!
-
@amp-Software-0 אולי תפרסם את החבילה שלך באמצעות מנהל החבילות של PHP (Composer?) או לפחות בצורה מסודרת בגיטאהב?
יהיה אפשר לעשות פוסט של "ספריות למודול API" (יש כבר בnodejs, C#, PHP) ולנעוץ אותו -
-
-
-
@צדיק-תמים כתב במה זה סשן ואיך משתמשים בו?:
יהיה אפשר לעשות פוסט של "ספריות למודול API" (יש כבר בnodejs, C#, PHP) ולנעוץ אותו
איפה יש ספריה לC# וPHP?
-
@עידו לPHP מה ש @amp-Software-0 הביא כאן (בצורה חלקית)
לC# זה כאן https://f2.freeivr.co.il/topic/11523/ספריה-להגדרות-מודול-api-של-ימות-המשיח-באמצעות-net