تالار گفتمان nCIS.ir

نسخه‌ی کامل: Notice: unserialize(): Error at offset 1055 of 1297 bytes in
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
خوب هستین
منظور از این ارور چیه؟
نقل قول:
Notice: unserialize(): Error at offset 1055 of 1297 bytes in C:xampphtdocsrescontrollersuser_one.php on line 15
چطوری این مشکل رو حل کنم.
مرسی
احتمالا به خاطر اینکه که خروجی سریالیز شده به درستی ذخیره وبازیابی نشده.
بهتره به اینصورت عمل کنید.

//safely serialize & unserialize
$array=array("1","2","3");
$encoded_serialized= base64_encode(serialize($array));
$decoded_serialized = unserialize(base64_decode($encoded_serialized));
این کاری که شما انجام داده اید کارایی را پایین میاورد و هیچ تاثیری ندارد !

مگر تابع base64_encode چی بر میگردونه که تابع unserialize بر نمیگردونه ! هر دو رشته بر میگردونن


استارتر همانطور که دوستمان گفت کدتون مشکل داره اگر دارین از داخل دیتابیس واکشی میکنین به احتمال زیاد داده های شما escape شده هست و باید stripslashes بشوند
با نظر @bgsrb88 موافقم. تابع serialize به تنهایی نباید استفاده بشه و باید به همراه base64_encode استفاده بشه، جون گاهی اوقات توی بعضی کلمات درست کار نمیکنه. میتونید در این رابطه سرچ کنید.
(31-05-1394، 01:55 ب.ظ)php نوشته: [ -> ]با نظر @bgsrb88 موافقم. تابع serialize به تنهایی نباید استفاده بشه و باید به همراه base64_encode  استفاده بشه، جون گاهی اوقات توی بعضی کلمات درست کار نمیکنه. میتونید در این رابطه سرچ کنید.

میشه یک نمونه مثال بزنید ؟


× بعد یک سوال فنی ؟

اگه خروجی تابع serialize درست نباشه به نظر خودتون منطقی است که داده serialize شده را به base64_encode بدیم و بعد دوباره از base64_decode بگیریم ؟

یعنی به نظر خودتون base64_decode تعمیر می کند اگر داده خراب شده باشه ؟
مسئله مربوط به تعمیر کردن با base64_decode و ... نیست، اگر اشتباه نکنم مشکل وقتی پیش میاد که ", ', :,; در آرایه ای که میخواین serialize کنید وجود داشته باشه.
http://davidwalsh.name/php-serialize-unserialize-issues
تاریخ پست گذاشته شده برای سال 2008 است که الان ما 2015 هستیم و حدود 7 سال پیش این مشکل وجود داشته که طبق گفته نویسنده این باگ را گزارش داده

موفق باشید.