ورود

View Full Version : خطای 400 در حذف رکورد در yii



alirezara
چهارشنبه 15 بهمن 1393, 15:46 عصر
با سلام و خسته نباشید خدمت دوستان عزیزم.

دو ستان بنده تازه وارد دنیای فریم ورک yii شدم و با یه مشکل در زمینه ی حذف رکوردها در پایگاه داده توسط اکشن delete روبرو شدم. و اون اینه که با خطای 400 روبرو میشم. و میگه که درخواست شما معتبر نیست. در قسمت فیلتر برای این اکشن postOnly تعیین شده و وقتی این قسمت postOnly + delete را حذف می کنم سیستم درست کار میکنه. اما دسترسی به صورت get برای خذف اطلاعات در پایگاه داده یه راه نفوذ امنیتی محسوب میشه. چطور می تونم به صورت post برای حذف اقدام کنم؟
توی کتابهای مختلف و اینترنت خیلی دنبال جواب گشتم و اتفاقا خیلی ها با این مشکل روبرو بودن اما راه حلی که بتونه این مشکل رو دقیقا حل کنه رو پیدا نکردم. من قالب جدیدی برای فریم ورک طراحی کردم آیا ممکنه که jquery های قالب بر روی این مسئله تاثیر گذاشته باشن؟

از دوستان عزیزم خواهشمندم بنده را راهنمایی کنید.

qartalonline
چهارشنبه 15 بهمن 1393, 21:42 عصر
شما باید id رکوردی که میخواین حذف کنید رو بصورت پست ارسال کنید. اگه خطای ۴۰۰ میده به این معنی هستش که یا id ارسال نمیشه یا بصورت پست ارسال نمیشه. کدهاتون رو قرار بدید تا بهتر بشه راهنمایی کرد.

alirezara
چهارشنبه 15 بهمن 1393, 21:57 عصر
شما باید id رکوردی که میخواین حذف کنید رو بصورت پست ارسال کنید. اگه خطای ۴۰۰ میده به این معنی هستش که یا id ارسال نمیشه یا بصورت پست ارسال نمیشه. کدهاتون رو قرار بدید تا بهتر بشه راهنمایی کرد.

با تشکر از دوست عزیزم. کاملا درسته. احتمالا id ارسال میشه چون به بدون فیلتر postOnly + delete همه چیز به خوبی کار می کنه. اما با حضور این فیلتر با خطای 400 روبرو میشم. پس میشه گفت درخواست به صورت پست ارسال نمیشه. اما سوال اینه که چگونه در yii باید یه درخواست post ارسال کرد؟

کد های کنترولر و مدل مربوطه ضمیمه شد.

qartalonline
چهارشنبه 15 بهمن 1393, 22:10 عصر
کدهای مربوط به view رو قرار بدید این کدها مشکلی ندارن.

alirezara
چهارشنبه 15 بهمن 1393, 22:15 عصر
کدهای مربوط به view رو قرار بدید این کدها مشکلی ندارن.


کدهای مربوط به ویو ضمیمه شد. ممنونم که وقت میگزارید.

alirezara
چهارشنبه 15 بهمن 1393, 22:49 عصر
فایل های مربوط به ویگت table ضمیمه شد.

qartalonline
چهارشنبه 15 بهمن 1393, 23:16 عصر
شما اکشن delete رو تغییر دادید بنابراین روش فراخوانیش رو هم باید تغییر بدید.


echo CHtml::beginForm(Yii::app()->createUrl('users/delete', array('id' => $model->id)));
echo CHtml::hiddenField('id', $model->id);
echo CHtml::submitButton('حذف');
echo CHtml::endForm();

alirezara
چهارشنبه 15 بهمن 1393, 23:29 عصر
دوست عزیز واقعا ممنونم . لطف کردید. درست شد. اگه بخوام این کد را zii.widgets.grid.CGridView قرار بدم کجا باید قرار بگیره. چون این فایل گشتم اما نمیدونم دقیقا کجا لینک حذف در این ویگت ایجاد میشه.

qartalonline
شنبه 18 بهمن 1393, 18:45 عصر
برای این کار باید ستونهای مربوط به دکمه ها رو تغییر بدید. لینک زیر رو ببینید.
http://barnamenevis.org/showthread.php?484092-%D8%B4%D8%AE%D8%B5%DB%8C-%D8%B3%D8%A7%D8%B1%DB%8C-%D8%AF%DA%A9%D9%85%D9%87-%D9%87%D8%A7%DB%8C-cgridview&p=2167347&viewfull=1#post2167347