نمایش نتایج 1 تا 2 از 2

نام تاپیک: captcha

  1. #1
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    captcha

    میخاستم بدونم برای اضافه کردن captcha به فرمم باید چه کدی را به کنترلر و ویو مورد نظر اضافه کنم ؟

  2. #2

    نقل قول: captcha

    با یک مثال توضیح میدم. فرض کنید میخواین به فرم اشتراک در خبرنامه (با ایمیل)، CAPTCHA اضافه کنید. فرضاً یک EmailModel دارین (models/EmailModel.php) به این شکل:

    <?php
    class EmailForm extends CFormModel
    {
    public $email;
    function rules() {
    return array(
    array('email', 'email'),
    );
    }
    }

    و یک کنترلر EmailController هم هست (controllers/EmailController.php) با کد زیر:

    <?php
    class EmailController extends Controller
    {
    public function actionIndex()
    {
    $success = false;
    $model = new EmailForm();
    if(!empty($_POST['EmailForm']))
    {
    $model->setAttributes($_POST['EmailForm']);
    if($model->validate())
    {
    $success = true;
    // handle form here
    }
    }
    $this->render('index', array(
    'model' => $model,
    'success' => $success,
    ));
    }
    }

    و نهایتاً یک ویو index هم دارین (views/email/index.php) با این کد:

    <?php if($success) : ?>
    <p>Success!</p>
    <?php endif; ?>
    <?php echo CHtml::beginForm(); ?>
    <p>
    <?php echo CHtml::activeLabel($model, 'email'); ?>
    <?php echo CHtml::activeTextField($model, 'email'); ?>
    <?php echo CHtml::error($model, 'email'); ?>
    </p>
    <p>
    <?php echo CHtml::submitButton(); ?>
    </p>
    <?php echo CHtml::endForm(); ?>

    حالا به این مدل میخوایم یک CAPTCHA اضافه کنیم.
    اول باید یک فیلد برای اعتبارسنجی CAPTCHA به مدل اضافه کنیم (همراه با Rule مناسب) :

    <?php
    class EmailForm extends CFormModel
    {
    public $verifyCode;
    public $email;
    function rules(){
    return array(
    array('email', 'email'),
    array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),
    );
    }
    }

    حالا یک متد دیگه به کنترلر باید اضافه کنید که مشخصه کننده کلاسی هست که CAPTCHA رو مدیریت میکنه:

    public function actions()
    {
    return array(
    'captcha'=>array('class'=>'CCaptchaAction'),
    );
    }

    حالا این کد رو به ویو index بعد از قسمتی که کادر متن مربوط به ورود Email هست، اضافه کنید:

    <?php if(CCaptcha::checkRequirements()&& Yii::app()->user->isGuest) : ?>
    <p>
    <?php echo CHtml::activeLabelEx($model, 'verifyCode'); ?>
    <?php $this->widget('CCaptcha'); ?>
    </p>
    <p>
    <?php echo CHtml::activeTextField($model, 'verifyCode'); ?>
    <?php echo CHtml::error($model, 'verifyCode'); ?>
    </p>
    <?php endif; ?>

    الآن CAPTCHA به فرم شما اضافه شده. فقط دقت کنید که اگه از accessControl توی فیلترها برای دسترسی به اکشن موردنظرتون استفاده کردین، حتماً دسترسی به CAPTCHA رو برای کاربر موردنظر در متد accessRules فراهم کنید:

    public function accessRules() {
    return array(
    // …
    array('allow',
    'actions'=>array('captcha'),
    'users'=>array('*'),
    ),
    array('deny',
    'users'=>array('*'),
    ),
    );
    }

    برای مطالعه بیشتر:
    http://www.yiiframework.com/doc/api/CCaptcha
    http://www.yiiframework.com/doc/api/CCaptchaAction
    http://www.yiiframework.com/doc/api/CCaptchaValidator
    منبع: کتاب Yii 1.1 Application Development Cookbook فصل چهارم قسمت Adding CAPTCHA (صفحه 110)

تاپیک های مشابه

  1. نحوه کار با کنترل captcha
    نوشته شده توسط ch2007 در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: سه شنبه 09 خرداد 1391, 18:36 عصر
  2. Captcha چیست؟
    نوشته شده توسط amirhosein در بخش PHP
    پاسخ: 1
    آخرین پست: سه شنبه 13 آذر 1386, 12:33 عصر
  3. captcha
    نوشته شده توسط mmehdyt در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 29 خرداد 1386, 10:26 صبح
  4. مشکل با سیستم تولید کد امنیتی CAPTCHA
    نوشته شده توسط esmaeelpoor در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 07 اسفند 1385, 21:31 عصر
  5. Captcha در ASP.NET
    نوشته شده توسط shakiba_12 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 03 خرداد 1384, 06:11 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •