php / אימות ומעקב אחר משתמשים עם php / סשנים הם התשובה!

סשנים ! סשנים הם התשובה!



אוקיי, אז 'סשנים' (פגישות) הם התשובה, אבל מה היא השאלה ? איך אני יכול לתחזק מידע משתמש-ספציפי מבלי להקים 'קוקיס' מרובים והתקשרויות רבות למאגר מידע ?

אם אתם משתמשים ב-PHP4 או אז 'סשנים' הם התשובה! אוקיי, אוקיי, אם אתם עדיין משתמשים ב PHP3 בסביבת הפקה) כמו רבים וטובים אחרים, ( ביניהם אני, תוכלו להשתמש בספריית הבסיס PHPLIB ושיטות ניהול הסשנים אותם היא כוללת.

במושגי זמן , 'סשן' (פגישה) הוא אורך הביקור של משתמש מסוים. בעולם התכנות, 'סשן' הוא "גוש לא מוחשי", שיכול להכיל כל מיני משתנים וערכים. ל"גוש החומר " הזה, הידוע גם כאובייקט 'סשן ' , יש מחרוזת זיהוי. מחרוזת הזיהוי, כגון, 940f8b05a40d5119c030c9c7745aead9 נשלחת למשתמש דרך 'קוקי' בשם PHPSESSID בצד השרת , נוצר קובץ זמני מתאים (חשבו עליו בתור הייצוג הפיזי של אובייקט סשן) הנושא את אותו השם:
(940f8b05a40d5119c030c9c7745aead9 )


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

לדוגמא, קובץ הסשן עשוי להיראות כך:


count|s:7:"76";
valid|s:7:"yes";


המושגים "count" (ספירה) "valid" (תקף) הם שמות המשתנים הרשומים ו"76" -ו"yes"- הם הערכים שלהם , בהתאמה. אתם יכולים לגשת למשתנים הללו ולערכים הייחודיים שיש להם לכל משתמש ע"י קריאת שם המשתנה (count$ לדוגמא).

בואו נאמר שיש משהו כזה בסקריפט שלכם:

"echo
" $count;


מנוע ה-PHP ייקח את המשתנה PHPSESSID$ ( ה-ID הייחודי של כל משתמש השמור ב'קוקי') ויתאים אותו לקובץ 'סשן' זמני, יחפש "count" (ספירה), יימצא את ערכה נאמר ("76") ויחזיר אותו אליכם.

הבה נשתמש בסופר (counter) גישה פשוטה כדי להתרגל לרעיון של 'סשנים' ומשתני 'סשנים' בתחילת העמוד שלכם, קראו לפונקציה ()session_start.

לפונקציה הזו שתי מטרות :

ראשית, היא בודקת אם אותחל סשן עבור המשתמש ומאתחלת כזה אם לא;
שנית, היא מתריעה למנוע ה-PHP על שימוש במשתני 'סשנים' ופונקציות 'סשנים' נוספות בסקריפט הספציפי.
או אז אנחנו יכולים לשגר את המשתנה הראשון שלנו , "count " (סופר).

<?

// if a session does not yet exist for this user, start one

session_start();
session_register('count');

?>


כל עוד ה'סשן' קיים , קיים גם משתנה בשם .count. כרגע , אין למשתנה שום ערך. אך אם תגדילו אותו, הוא יקבל את הערך 1. הביטו:

<?

// if a session does not yet exist for this user, start one

session_start();
session_register('count');

// increment count

$count++;

?>


כדי להציג למשתמשים את מספר הפעמים בהן נכנסו לעמוד מסוים ב'סשן' הנוכחי, פשוט הוסיפו echo $count לתוך התערובת.

הסקריפט כולו נראה כך. נסו אותו וספרו יחד !


<?

// File name: count_me.php

// if a session does not yet exist for this user, start one

session_start();
session_register('count');

$count++;

echo "<p>You've been here $count times. Thanks!</p>";

?>




עמוד הבא: סשנים והעדפות משתמש >>




הקדמה
אימות HTTP עם
PHP
אימות מול קובץ
שטוח
אימות מול מאגר
מידע
שימוש ב'קוקיס'
סשנים הם
התשובה >
סשנים והעדפות
משתמש
סיכום