ورود

View Full Version : خطا در هنگام دسترسی مستقیم به اکشنی غیر از صفحه اصلی (حل شد)



beh3000
پنج شنبه 06 آذر 1393, 19:09 عصر
سلام دوستان

یه مشکلی برام پیش اومده ... وقتی تازه سیستمم رو روشن میکنم و میخوام به یک قسمتی از پروژه ام دسترسی پیدا کنم ( به غیر از صفحه اصلی ) این خطا رو میده ...( تصویر زیر )

یک کنترلر دارم به اسم page که صفحات اصلی سایتم رو تشکیل میدن یعنی صفحاتی که همه میبینن مشکلی هم ندارن همشون

یک کنترلر دیگه دارم به اسم info که اطلاعات عمومی کاربران رو نشون میدن مثلا به این شکل دسترسی دارم بهشون http://localhost/online/info/user/beh3000 ... توی پروژه ام از csrf هم استفاده میکنم ... حالا مشکلم اینه : وقتی تازه سیستمم رو روشن میکنم یعنی سشنی وجود نداره و میخوام به آدرس http://localhost/online/info/user/beh3000 دسترسی پیدا کنم این خطا رو میده ولی وقتی صفحات اصلی رو باز میکنم و دوباره http://localhost/online/info/user/beh3000 رو باز کنم دیگه خطا نمیده !!!!


126092

abdollah110110
پنج شنبه 06 آذر 1393, 23:57 عصر
سلام

به نظرتون اشکال نداره کاربران بتونن صفحات دیگرو قبل از صفحه اصلی ببینن؟

beh3000
جمعه 07 آذر 1393, 08:24 صبح
نه ... تو سیستم من اشکال نداره ... حتما که نباید صفحات اصلی سایت رو باز کنن که !

beh3000
جمعه 07 آذر 1393, 08:31 صبح
توی ویو به csrf دسترسی پیدا کنم خطا میده ! اونو برمیدارم خطا نداره


Yii::app()->request->csrfToken



توی صفحه اصلی سایتم فرم لاگین دارم که به صورت خودکار خودش csrf اضافه میکنه ( از فرم های خود Yii استفاده کردم ) ... اول اونو اجرا کنم بعد صفحه http://localhost/online/info/user/beh3000 رو باز کنم خطا نداره ... ولی وقتی سشن ها و کوکی ها کلا حذف بشه و مستقیم به صفحه http://localhost/online/info/user/beh3000 باز کنم خطا میده ....

حتما که نباید اول بصورت خودکار csrf ساخته بشه ؟!!!

بجه ها آنلاین شین جواب بدین دیگه ... خیلی کارم لنگه ! امروزم جمعه است از شانس ما

MMSHFE
جمعه 07 آذر 1393, 09:40 صبح
تمام صفحات پروژه خودتون رو با کدگذاری UTF-8 without BOM (با کمک Notepad++) ذخیره کنید. دیگه هم با Notepad ویندوز فایلی رو ویرایش نکنید.

MMSHFE
جمعه 07 آذر 1393, 09:43 صبح
اگه نمیخواین هربار با این خطا مواجه بشین و ممکنه باز هم با Notepad ویندوز فایلها رو ویرایش کنید، فایل index.php توی ریشه سایتتون رو باز کنید و اولش این کد رو بگذارین:

ob_start('ob_gzhandler');
و آخرش هم این کد رو بنویسید:

ob_end_flush();
اینطوری هم از بافر خروجی استفاده میشه و خطا نمیگیرین و هم بخاطر استفاده از gzip محتوای اسکریپت شما فشرده میشه و برای کلاینت ارسال میشه و مرورگر کلاینت اسکریپت رو از حالت فشرده خارج میکنه (همه مرورگرها این فشرده سازی رو میشناسن). با این روش صفحه ای که در حالت عادی ممکنه 100 کیلوبایت حجم داشته باشه، با 2 تا 3 کیلوبایت حجم دریافت میشه. اینطوری هم توی مصرف ترافیک سایتتون صرفه جویی میشه و هم سرعت بارگذاری صفحات بالا میره.

beh3000
جمعه 07 آذر 1393, 09:43 صبح
میدونم درسته همشون
UTF-8 without BOM هست ... اتفاقا با notepadd++ هم کار میکنم مشکلی نداره این موردی که گفتین

MMSHFE
جمعه 07 آذر 1393, 09:45 صبح
امکان نداره. بالأخره یکی از فایلها توی این مسیر داره BOM رو میفرسته. برحسب تجربه میگم در 99.9٪ مواردی که افراد یقین داشتن همه فایلها درست بوده و بعد با تیم ویور به سیستمشون وصل شدم یکی از فایلها چنین مشکلی داشته.

beh3000
جمعه 07 آذر 1393, 09:45 صبح
این کدی که گفتین
ob_start('ob_gzhandler'); و ... توی همون صفحه index.php اعمال کنم توی همه صفحات تائیر میذاره دیگه

MMSHFE
جمعه 07 آذر 1393, 09:47 صبح
بله چون همه صفحات ازطریق این اسکریپت ضمیمه میشن.

beh3000
جمعه 07 آذر 1393, 10:24 صبح
gzip رو از این طریق انجام بدیم بهتره یا از htaccess ?

MMSHFE
جمعه 07 آذر 1393, 10:28 صبح
فرقی نمیکنه. هر دو تا دارن هدر ست میکنن.