מה זה סשן ואיך משתמשים בו?
-
@amp-Software-0 כתב במה זה סשן ואיך משתמשים בו?:
זה לא מאפשר לדעת 'איפה אני אוחז', כיון שPHP היא שפה אסינכורנית,
אם אתה מחפש שפה שתוכל לדעת איפה אתה אוחז תעבור ל NodeJS, זה שפה סינכורנית
אבל אני חושב שעם המודולים שהבאתי החוייה היא אותו דבר, הקוד נכתב באותו פורמט כמו ב JS
אם בכל אופן אתה מתמודד עם בעיות יתכן שאתה לא מתכנן \ כותב את הקוד בצורה נכונה ופונקציונלית -
@amp-Software-0 כתב במה זה סשן ואיך משתמשים בו?:
אבל אני חושב שעם המודולים שהבאתי החוייה היא אותו דבר, הקוד נכתב באותו פורמט כמו ב JS
איך? עם הוספת כל משתנה לסשן ובדיקת בכל קטע האם המשתנה כבר קיים? או שיש דרך יותר קלה?
ואגב, אפשר להוסיף לסשן גם מערך JSON?
-
@שמואל-ש כתב במה זה סשן ואיך משתמשים בו?:
איך? עם הוספת כל משתנה לסשן ובדיקת בכל קטע האם המשתנה כבר קיים? או שיש דרך יותר קלה?
עם פונקציית read שכתבתי אתה לא מתעסק עם הבדיקות, אלא מקבל את זה כמשתנה לכל דבר, תסתכל בדוגמת הקוד שהבאת אני לא בודק שום דבר פשוט הקוד רץ (אצלי הפונקציות נמצאות בכלל בדפים אחוריים שמשמשים כמחלקות כך שהסקריפט בפועל הוא נקי ופשוט)
@שמואל-ש כתב במה זה סשן ואיך משתמשים בו?:
ואגב, אפשר להוסיף לסשן גם מערך JSON?
בהחלט
-
@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) ולנעוץ אותו -
-