Yii Framework Forum: Delete & Gridview - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Delete & Gridview

#1 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 114
  • Joined: 19-April 13

Posted 16 June 2013 - 11:37 PM

سلام دوستان
من در یک
gridview
از گزینه های
delete & update
استفاده کردم. و زمانیکه روی دکمه
delete
کلیک میکنم
id
سطر مورد نظر به اکشن مربوطه فرستاده میشود. و در همان اکشن با استفاده از
$_GET['id']
در یک کوئری سطر مورد نظر پیدا و سپس حذف میشود.
آیا راه دیگری برای فرستادن
id
به
action
هست که از امنیت بالاتری برخوردار باشه؟؟

این هم قسمتی از کدها:


gridview:
                          array(
            'class'=>'CButtonColumn',
                     'template'=>'{delete}{update}',
                                
                     'buttons'=>array(
                     'delete'=>array(
                     'url'=>'Yii::app()->createUrl("newsmanage/delete", array("id"=>$data->id))',
                     'deleteConfirmation'=>'function(){confirm("are you sure delete?");}',
                        ),


action:
$newsDelete=  News::model()->find("id=:id",array(":id"=>$_GET['id']));
$newsDelete->delete();



مرسی
0

#2 User is offline   amiri 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 77
  • Joined: 08-January 12

Posted 26 June 2013 - 12:52 PM

View Postn-r, on 16 June 2013 - 11:37 PM, said:

سلام دوستان
من در یک
gridview
از گزینه های
delete & update
استفاده کردم. و زمانیکه روی دکمه
delete
کلیک میکنم
id
سطر مورد نظر به اکشن مربوطه فرستاده میشود. و در همان اکشن با استفاده از
$_GET['id']
در یک کوئری سطر مورد نظر پیدا و سپس حذف میشود.
آیا راه دیگری برای فرستادن
id
به
action
هست که از امنیت بالاتری برخوردار باشه؟؟

این هم قسمتی از کدها:


gridview:
                          array(
            'class'=>'CButtonColumn',
                     'template'=>'{delete}{update}',
                                
                     'buttons'=>array(
                     'delete'=>array(
                     'url'=>'Yii::app()->createUrl("newsmanage/delete", array("id"=>$data->id))',
                     'deleteConfirmation'=>'function(){confirm("are you sure delete?");}',
                        ),


action:
$newsDelete=  News::model()->find("id=:id",array(":id"=>$_GET['id']));
$newsDelete->delete();



مرسی



مشخص نکردید چه چیزی باعث میشه که این کد به نظر شما نا امن جلوه کنه!

0

#3 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 114
  • Joined: 19-April 13

Posted 26 June 2013 - 11:18 PM


سلام
دربین فیلترهایی که روی کنترلرها اعمال میشه
'postOnly + delete',
داریم.اما در اینجا ما با متد
GET
کار میکنیم و نمیتونیم این فیلتر رو اعمال کنیم. سوالم این هست که چه طوری میتونیم با متد
POST
شناسه مربوط به رکوردی رو که باید حذف بشه رو بفرستیم؟؟

0

#4 User is offline   amiri 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 77
  • Joined: 08-January 12

Posted 27 June 2013 - 03:48 AM

سلام

اگه رفرنس رو بخونید شاید امکان سوییچ کردن به Post به جای استفاده از Get وجود داشته باشه.
اما یک نکته مهم در خصوص نگرانی شما

اگه کسی بخواد انگولک کنه، مقادیر داخل Post رو هم می تونه دستکاری کنه
در واقع اگه الان هم با Get ارسال میشه به خاطراینه که می خواد یک اکشن به نام delete رو اجرا کنه که کاملا منطقی هستش
و شما اگه نمی خوای هر خبری امکان پاک شدن داشته باشه، باید قبل از انجام delete چک کنی
که ایا این کاربر مجاز به پاک کردن این خبر هست یا نه!

0

#5 User is offline   mohsen davoodi 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 20-August 12

Posted 29 June 2013 - 02:22 AM


سلام
برای حذف کردن در
gridView
به طور پیش فرض در
Yii
ajax از
استفاده می شود
که با متد
post
می باشد
چرا
ajax
رو غیرفعال کردی ؟
برای امنیت هم
csrf
رو فعال کن

0

#6 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 114
  • Joined: 19-April 13

Posted 29 June 2013 - 03:58 AM

View Postmohsen davoodi, on 29 June 2013 - 02:22 AM, said:


سلام
برای حذف کردن در
gridView
به طور پیش فرض در
Yii
ajax از
استفاده می شود
که با متد
post
می باشد
چرا
ajax
رو غیرفعال کردی ؟
برای امنیت هم
csrf
رو فعال کن




سلام
خیلی ممنون از راهنمایی تون ، اما امکان داره بگید این کار رو چهطور انجام بدم؟
مرسی

0

#7 User is offline   amirkheirabadi 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 15-April 13

Posted 03 July 2013 - 12:52 AM

دوست عزیز برای ارسال ای جکس آی دی می تونی ابتدا آی دی رکوردی که توسط کاربر انتخاب شده رو از طریق جی کوئری به دست بیاری و بعد از طریق خود جی کوئری ارسال کنی ... مثل کد زیر

jQuery.ajax({
                  	   		"type":"POST",
                  	   		"data":{"SelectedItem":SelectedItemListBox},
                  	   		"success":  callback, 
        				"error":error,
                  	   		"url":"/pacs/index.php?r=reports/delete"
                  	   		,"cache":false
                  	  	});


در کد بالا من آی دی رکوردم رو فرستادم برای اکشن delete
و حالا کافیه بگی cgridview
رفرش بشه و که برای اون می تونی در تابع callback
که توی کد بالا هست و دستور زیر رو قرار بدی

function callback(providerdata,status){
	        $("#yw2").yiiGridView.update("yw2");      
	}

که yw2
همون آی دی gridview هستش

ببخشید دیگه تازه کارم ببخشید اگه مشکلی داشت... :D

0

#8 User is offline   faridplus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 87
  • Joined: 28-March 12

Posted 04 July 2013 - 02:48 PM

View Postamirkheirabadi, on 03 July 2013 - 12:52 AM, said:

function callback(providerdata,status){
        	$("#yw2").yiiGridView.update("yw2");      
	}

که yw2
همون آی دی gridview هستش



هیچ وقت از idهای به شکل yw... استفاده نکنید چون به صورت خودکار توسط فریم ورک تولید میشه و ممکنه با داشتن چند تا gridview توی یک صفحه و یا به روز کردن فریم ورک این کدهای javascript از کار بیفتن


What you give is what you get (WYGIWYG)

If you liked my post, just give it a +1. that's all!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users