Съхраняване на сесии във файла

В допълнение към създаването и поддържането на данните си сесия при навигиране между страниците, има и друг много полезна функция. Какво става, ако бихме могли да се съхраняват данните на една сесия за използване в друга и се връщат към информацията, която е била записана преди няколко дни? PHP предоставя тази възможност, което ви позволява да съхранявате данните за сесиите във файл.

Друг добър пример е да се използва тази функция в комбинация с кошница. Да предположим, че имате пазарска кошница, която създава ред, основан на избор на потребителя и съхранява тази информация, уникален идентификационен номер на друго място под формата на комбинация от номера на потребителско име и сесия.

Така че, нека техника, която е достатъчно проста: ние ще използваме fopen функцията за отваряне на файл, session_encode функция за кодиране на данните за сесиите в низ, функцията fputs и fclose да записва и затворете файла. Ето един пример:

Както можете да видите, ние създаваме три променливи на сесията за съхранение на информация, която имаме нужда, в този пример, просто попълнете данните на променливите низ. Трябва да се помни, файловата система, като използвате функциите, показани в този пример. Тук ние виждаме, че в рамките на функцията за екипа fputs се използва session_encode, за да получите данните за сесията (които включват всички променливи на сесията, в допълнение към номера на сесия) и ги прекодиране на низ, който ще бъдат записани във файл с помощта fputs функция.

Сега, когато сме били безопасно скрити данни, ние се нуждаем от метод за извличане на тези данни, когато е необходимо. За това ние използваме fgets функционират, за да прочетете записа и session_decode да извлечете данните от сесията запис:

Има какво да се отбележи. Първо, можете да създадете нова сесия (повикване session_start функция е в предната част на останалата част от кода), тъй като активните сесия променливи трябва да създадат session_variables, което прави функция session_decode.

След това можете да забележите, че session_encode session_decode и инструкции написани на противното по отношение един към друг в съответните им функции и fputs fgets. Да приемем, че fputs функцията запис съдържа session_encode; четете, за да дешифрира fgets с резултати, session_decode функция съдържа fgets. (Технически, това не може да бъде изцяло вярно да се каже, че една функция "съдържа", от друга, но в този случай е много удобно).

Друг важен момент, който не бива да се пренебрегва, е в обхвата на променливи. В първата от примерите по-горе, ние имаме специален оператор за определяне сесийна променлива, така че техният обхват може да бъде по-очевидна, но втория пример, променливата се определя от session_decode на функция, така че обхватът не е толкова лесно да се идентифицират веднага. Във всеки случай, ако дефиницията на променлива се случва вътре във функция (т.е., да не си пиша това изявление в рамките на функция) обхват session_variables ще бъдат местните на тази функция. Ако това не е това, което искате, трябва да се добави "глобално" параметър. Във втория пример по-горе, това би означавало, определянето на глобалната определяне на обхвата на променливите да session_decode извикване на функция, като например:

И накрая, можете да промените името на вашия файл. В тези примери, които сме ползвали файл с име "sessionfile.txt". Тя е много по-лесно да се използва като име на файл с потребителското си име или комбинация от потребителско име и прилагането (например, "vincebarnesorders.txt"), за да стане ясно кой файл да се вземе информация, ако потребителят се връща.

Сподели Ако сме ви помогнали!