PDA

View Full Version : استفاده از کپچا در mvc



IMANAZADI
شنبه 22 اسفند 1394, 06:37 صبح
با سلام


من برای امنیت سایت یک کلاس captcha نوشتم


حالا برای استفاده از اون در پروژه mvc مشکل دارم


این کلاس رو تو کدوم لایه باید استفاده کنم ؟؟؟ کنترلر یا ؟؟؟


عکس ایجاد شده رو چظوری به view ارسال کنم (منتقل کنم) ؟؟؟؟

leaping
شنبه 22 اسفند 1394, 09:06 صبح
بررسی و آماده سازی اطلاعات برای نمایش در قسمت contrller انجام میشه
در معماری MVC مقید به این نیستیدکه همه چیز در controller برای انجام عملیات استفاده بشه
میتونید مثلا تعدادی کلاس به عنوان پلاگین بنویسید و اون رو در قسمت controller فراخوانی و استفاده کنید.

IMANAZADI
یک شنبه 23 اسفند 1394, 05:36 صبح
دوست گرامی من نتونستم مشکل رو حل کنم

کد ها رو میزارم لطفا بگید ایراد کار کجاست

این کد کلاس کپچا (کامل ننوشتم که درگیر مسائل جانبی نشیم)




class captcha
{
private $img;
.
.
.
.

public function create($len)
{
.
.
.
.

header("Content-type: image/png");

imagepng($this->img , ROOT.'/public/img/captcha.png');

imagedestroy($this->img);

$tag='<img src="'.ROOT.'/public/img/captcha.png"'.' width="150px" height="50px" alt="captcha"/>';

return $tag;

}
}



اینم کلاس کنترلر لاگین






if ( ! defined('URL')) exit('No exist');


class login extends controller
{


public function index()
{
$tt=new captcha();
$tag=$tt->create(6);

$this->view('/templates/header_login',['title'=>'LOGIN','template'=>'login','css'=>'login']);
$this->view('/login/index',['captcha'=>$tag]);
$this->view('/templates/footer_login');

}
}









و بعد تو view میام متغیر captcha رو echo میکنم
ولی وقتی اجرا میکنم چیزی نشون نمیده

MeSaeid
یک شنبه 23 اسفند 1394, 06:59 صبح
دوست گرامی من نتونستم مشکل رو حل کنم

کد ها رو میزارم لطفا بگید ایراد کار کجاست

این کد کلاس کپچا (کامل ننوشتم که درگیر مسائل جانبی نشیم)




class captcha
{
private $img;
.
.
.
.

public function create($len)
{
.
.
.
.

header("Content-type: image/png");

imagepng($this->img , ROOT.'/public/img/captcha.png');

imagedestroy($this->img);

$tag='<img src="'.ROOT.'/public/img/captcha.png"'.' width="150px" height="50px" alt="captcha"/>';

return $tag;

}
}



اینم کلاس کنترلر لاگین






if ( ! defined('URL')) exit('No exist');


class login extends controller
{


public function index()
{
$tt=new captcha();
$tag=$tt->create(6);

$this->view('/templates/header_login',['title'=>'LOGIN','template'=>'login','css'=>'login']);
$this->view('/login/index',['captcha'=>$tag]);
$this->view('/templates/footer_login');

}
}









و بعد تو view میام متغیر captcha رو echo میکنم
ولی وقتی اجرا میکنم چیزی نشون نمیده
بهتره کد بیشتری قرار بدید .
در ضمن بهتره از یک Template engine استفاده کنید .
return رو برای view انجام میدید ؟

IMANAZADI
یک شنبه 23 اسفند 1394, 08:49 صبح
دوست عزیز کدها رو گزاشتم کدی نمونده دیگه غیر از view

اصلا view هم در نظر نگیرید

چرا وقتی اکشن index در کنترلر اجرا میشه فقط یک صفحه سفید میده در صورتیکه به محل ذخیره کپچا میرم کپچا رو ساخته ؟؟؟؟!!!!!