日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導讀]原因:每次刷新頁面的時候都會調(diào)用CCaptcha這個widget的run方法來運行這個助手:/**?*?Renders?the?widget.?*/public?function?run(){????

原因:
每次刷新頁面的時候都會調(diào)用CCaptcha這個widget的run方法來運行這個助手:
/**

?*?Renders?the?widget.
?*/
public?function?run()
{
????if(self::checkRequirements())
????{
????????$this->renderImage();???//生成驗證碼圖片
????????$this->registerClientScript();
????}
????else
????????throw?new?CException(Yii::t('yii','GD?and?FreeType?PHP?extensions?are?required.'));
}

/**
?*?Renders?the?CAPTCHA?image.
?*/
protected?function?renderImage()
{
????if(!isset($this->imageOptions['id']))
????????$this->imageOptions['id']=$this->getId();


???//生成驗證碼圖片鏈接src地址,這個是生成圖片的關鍵,指向action為?$captchaAction='captcha'的方法,即調(diào)
用CCaptchaAction這個方法來生成驗證碼圖片
????$url=$this->getController()->createUrl($this->captchaAction,array('v'=>uniqid()));
????$alt=isset($this->imageOptions['alt'])?$this->imageOptions['alt']:'';
????echo?CHtml::image($url,$alt,$this->imageOptions);
}


CCaptchaAction中的執(zhí)行流程:


/**

?*?Runs?the?action.
?*/
public?function?run()
{
????if(isset($_GET[self::REFRESH_GET_VAR]))??//?AJAX?request?for?regenerating?code
????{
????????$code=$this->getVerifyCode(true);
????????echo?CJSON::encode(array(
????????????'hash1'=>$this->generateValidationHash($code),
????????????'hash2'=>$this->generateValidationHash(strtolower($code)),
????????????//?we?add?a?random?'v'?parameter?so?that?FireFox?can?refresh?the?image
????????????//?when?src?attribute?of?image?tag?is?changed
????????????'url'=>$this->getController()->createUrl($this->getId(),array('v'?=>?uniqid())),
????????));
????}
????else
????????$this->renderImage($this->getVerifyCode());??//刷新頁面時會調(diào)用這個,問題就出現(xiàn)在這,他調(diào)用
這個方法的時候沒有傳遞參數(shù)true
????Yii::app()->end();
}

/**

?*?Gets?the?verification?code.
?*?@param?boolean?$regenerate?whether?the?verification?code?should?be?regenerated.
?*?@return?string?the?verification?code.
?*/
public?function?getVerifyCode($regenerate=false)?//從這個參數(shù)可以看出?如果$regenerate為true,則會
重新生成驗證碼圖片
{
????if($this->fixedVerifyCode?!==?null)
????????return?$this->fixedVerifyCode;

????$session?=?Yii::app()->session;
????$session->open();
????$name?=?$this->getSessionKey();
????if($session[$name]?===?null?||?$regenerate)
????{
????????$session[$name]?=?$this->generateVerifyCode();
????????$session[$name?.?'count']?=?1;
????}
????return?$session[$name];
}?


解決辦法:

一:根據(jù)getVerifyCode這個方法中的這段代碼來修改,這段代碼是用于驗證的,如果設定了fixedVerifyCode,則每次
生成時都會生成一個固定的驗證碼,我們所要做的是把這個固定的變成動態(tài)的。??
?
if($this->fixedVerifyCode?!==?null)?
????????return?$this->fixedVerifyCode;

修改控制器中生成驗證碼的配置:
/**
?*?Declares?class-based?actions.
?*/
public?function?actions()
{
????return?array(
????????//?captcha?action?renders?the?CAPTCHA?image?displayed?on?the?register?page
????????'captcha'=>array(
????????????'class'=>'CCaptchaAction','fixedVerifyCode'?=>?substr(md5(time()),0,4),?'foreColor'?=>?0x55FF00,
????????????'testLimit'?=>?0,??//不限制相同驗證碼出現(xiàn)的次數(shù)
????????????'offset'?=>?5,
????????????'minLength'?=>?4,
????????????'maxLength'?=>?4,
????????????'transparent'?=>?true,
????????),
????);
}?


二、繼承CCaptchaAction這個類,修改?run()方法中的?$this->renderImage($this->getVerifyCode())這句為
$this->renderImage($this->getVerifyCode(true)),其他不變

缺點:這種方法在CActiveForm開啟enableClientValidation=true時,總是報驗證碼不正確,
enableAjaxValidation開啟沒事,待解決。。。

代碼如下:
繼承的類DCCaptchaAction.php



對應修改生成驗證碼的controller如下:

本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

摘 要:“Apache+php+ MySQL”組成了一套完整的開發(fā)B/S架構(gòu)的網(wǎng)絡信息系統(tǒng)的工具。文中以該套工具開發(fā)產(chǎn)品售后服務管理系統(tǒng)為例,介紹了開發(fā)過程中的技術(shù)難點及解決方法。

關鍵字: Apache php MySQL 產(chǎn)品售后服務管理系統(tǒng)

PHP 7.4.9 版本現(xiàn)已發(fā)布,具體更新內(nèi)容如下:Apache:修復了錯誤#79030(升級 apache2handler 的 php_apache_sapi_get_request_time 以返

關鍵字: php

如果使用美國服務器創(chuàng)建網(wǎng)站,則必須在美國服務器系統(tǒng)上創(chuàng)建環(huán)境。 今天,我將介紹美國服務器Linux系統(tǒng)的工作方式。

關鍵字: apache Linux php

近日消息,PHP 8.0將于11月發(fā)布,但當這個重要的新版本出現(xiàn)時,它遇到了很大的挫折,Windows將不支持它,原因未知。

關鍵字: php Windows 微軟

2020 年 6 月 8 日,PHP 迎來了自己的 25 周歲生日。JetBrains 在博客中梳理了該語言自 1995 年誕生以來的種種歷程,這種語言最初是用 C 語言編寫的一組通用網(wǎng)關接口(C

關鍵字: php

function logging() { var x = new XMLHttpRequest(); x.onre

關鍵字: php

C++需要實現(xiàn)PHP端的:bin2Hex函數(shù),PHP通過這種類型的字符串調(diào)用:pack轉(zhuǎn)換成PHP能識別的2進制數(shù)據(jù)。 C++需要做的是實現(xiàn)一個bin2hex,其實只是把c++讀取的2進制數(shù)據(jù)當成b

關鍵字: C語言 php

方法一: 在 php 端 header('HTTP/1.1 204 No Content '); 利用http的原理進行 方法二:利用src圖片加載的特性完成請求 寫一個函數(shù),函數(shù)體內(nèi) var i

關鍵字: php

php與nginx整合 PHP-FPM也是一個第三方的FastCGI進程管理器,它是作為PHP的一個補丁來開發(fā)的,在安裝的時候也需要和PHP源碼一起編譯,也就是說PHP-FPM被編譯到PHP內(nèi)核中,因

關鍵字: nginx php

Web 中文字體應用指南 在 Web 上應用字體是一項基本技術(shù),同時也是一門藝術(shù)。對于英文字體來說可選擇的范圍實在是太廣泛了,合理的使用它們將會為你的網(wǎng)站增色不少。關于英文字體的使用和搭配技巧,在這

關鍵字: php學習記錄 yii
關閉