ورود

View Full Version : فیلترکردن ورودی های $_POST بدون استفاده از اعتبارسنجی مدل



webnevesht
جمعه 25 اردیبهشت 1394, 16:36 عصر
سلام.
خیلی اوقات پیش میاد پارامترهای مختلفی رو بدون استفاده از یک مدل خاص با استفاده از متدهای POST و GET توی صفحه استفاده می کنیم.
میخواستم بدونم در فریم ورک Yii موقعی که با پارامترهایی سر و کار داریم که کاری با مدل ندارن چه جوری میشه اونا رو از نظر وجود داشتن کاراکترهای مخرب یا غیرمجاز فیلتر کرد.
به طور مثال اگر من توی فرمی پارامتری رو ارسال کرده باشم و بخوام به شکل زیر بگیرمش چه جوری میتونم اونو Escape کنم.


$start_date = $_POST['start_date']

MMSHFE
شنبه 26 اردیبهشت 1394, 00:39 صبح
خوب بستگی داره کجا میخواین ازش استفاده کنید. اگه میخواین نشونش بدین توی صفحه، کافیه اینطوری کار کنید:

echo CHtml::encode($start_date);
اما اگه میخواین توی دیتابیس استفاده کنید، خودش Escape میکنه. مثال:

$model = new User;
$model->name = $_POST['name'];
// ...
if($model->save()) { // validation and escaping is done here automatically
// ...
}

webnevesht
شنبه 26 اردیبهشت 1394, 07:19 صبح
نه بیشتر توی کوئری گرفتن ها یا انجام دادن یک کار خاص میخوام استفاده کنم.
به طور مثال تاریخ رو میخوام از کاربر بگیرم و یه رکورد رو با find بخونم مثلا. اونجا ها هم فکر میکنم مشکلی نیست درسته؟

MMSHFE
یک شنبه 27 اردیبهشت 1394, 09:54 صبح
خیر مشکلی نیست چون AR خودش Escape میکنه.