PDA

View Full Version : حرفه ای: مشکل با serialize و unserialize



idocsidocs
پنج شنبه 27 بهمن 1390, 17:08 عصر
من سسشن ها رو توی دیتابیس ذخیره می کنم.

الان می خوام یه آرایه رو توی سسشن ذخیره کنم. برای این کار از کد زیر استفاده می کنم.


$myarr[]=$myvar;
$_SESSION['user']=serialize($myarr);

حالا وقتی بخوام این آرایه رو نمایش بدم از کد زیر استفاده می کنم:


$user=unserialize($_SESSION['user']);
var_dump($user);

مشکل اینجاست که آرایه خروجی فقط یه جفت ایندکس/مقدار داره. هرچندبار هم که این صفحه رو ریفرش کنم باز هم آرایه ایجاد شده فقط یه ایندکس بر می گردونه.

مشکل این کد کجاست؟

eshpilen
پنج شنبه 27 بهمن 1390, 17:41 عصر
آرایه رو مستقیما مگه نمیشه در سشن ذخیره کرد؟ چرا قبل از ذخیره سریالایز میکنی؟

idocsidocs
پنج شنبه 27 بهمن 1390, 18:02 عصر
آرایه رو مستقیما مگه نمیشه در سشن ذخیره کرد؟ چرا قبل از ذخیره سریالایز میکنی؟

منظورتون اینه که نیاز نیست آرایه رو سریالیز کنم و باید بصورت مستقیم توی سسشن ذخیره کنم؟
سریالیز کارش اینه که آرایه رو به رشته تبدیل می کنه و unserialize کارش اینه که رشته رو به ارایه تبدیل می کنه. من طبق تعریف عمل کردم و نتیجه نگرفتم.

mbf5923
پنج شنبه 27 بهمن 1390, 18:34 عصر
وقتی serialize میکنی تمام آرایت ذخیره میشه؟

idocsidocs
پنج شنبه 27 بهمن 1390, 18:54 عصر
وقتی serialize میکنی تمام آرایت ذخیره میشه؟

نه
توی هر بار اجرای اسکریپت فقط یه ایندکس/مقدار ایجاد می شه و این فیلد توی سسشن ذخیره می شه و باعث می شه که مقدار های قبلی از بین برن.
چطور می تونم کاری کنم که این ایندکس/مقدار جدید به ایندکس/مقدار هایی که قبلا توی سسشن ذخیره شده بودن اضافه کنم؟

mbf5923
پنج شنبه 27 بهمن 1390, 18:58 عصر
چند راه هست یکی اینکه Key متفاوت تولید کنید توی آرایه که با key های ذخیره شده قبلی متفاوت باشه و یکی دیگه اینکه آرایه قبلی رو از سشن بخونید و آرایه جدید رو به اون اضافه کنید و دوباره ذخیره کنید