请教一个Zend Framework中ajax验证码的问题

zxywd 2011-03-10 01:40:21
各位下午好。我遇到一个很头疼的问题希望大家帮忙解决一下。是关于Zend Framework中ajax验证码的问题。代码如下:
首先,我修改了library/Zend/Captcha/Image.php文件中的render方法:

public function render(Zend_View_Interface $view = null, $element = null)
{
return '<img id="changeCaptcha" alt="'.$this->getImgAlt().'" src="' . $this->getImgUrl() . $this->getId() . $this->getSuffix() . '" style="cursor: pointer;" /><br/>';
}

IndexController.php

<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$form = new Zend_Form();
$captcha = $this->createCaptcha();
$form->addElement($captcha);
$this->view->captchaImageUrl = $captcha->getCaptcha()->getImgUrl()
. $captcha->getCaptcha()->getId()
. $captcha->getCaptcha()->getSuffix();

$this->view->formLogin = $form->render();
}

public function ajaxAction()
{
$captcha = $this->createCaptcha()->getCaptcha();
$captcha->generate();
$this->_helper->viewRenderer->setNoRender(true);
echo $captcha->getImgUrl() . $captcha->getId() . $captcha->getSuffix();
die;
}

public function createCaptcha()
{
$decorators = array(
array('HtmlTag', array('tag' => 'div',
'id' => 'captchaId',
'onclick' => 'changeImage()'))
);

$form = new Zend_Form();

$captcha = $form->createElement('captcha', 'captcha', array(
'captcha' => array(
'captcha' => 'Image',
'wordLen' => 6,
'fontsize' => 20,
'width' => 200,
'height' => 100,
'dotNoiseLevel' => 2,
'timeout' => 300,
'imgUrl'=>'/images',
'imgDir'=>APPLICATION_PATH.'/../public/images',
'font'=>APPLICATION_PATH.'/../public/images/LiberationSansRegular.ttf'
),
'decorators' => $decorators
));

return $captcha;
}
}

index.phtml

<script type="text/javascript">
function createXmlHttpObject()
{
try
{
xmlhttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlhttp = false;
}
}
}
if (!xmlhttp){
alert("无法创建 XMLHttpRequest 对象!");
}
return xmlhttp;
}

var xmlhttp = createXmlHttpObject();
//JavaScript Document
function $(id){
return document.getElementById(id);
}

function changeImage()
{
if(document.activeElement.id=='captcha-input')
{
return false;
}
url="/index/ajax";
xmlhttp.open('GET',url,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200)
{
response=xmlhttp.reponseText;
$('changeCaptcha').src=response;
}
}
};
}
</script>


<?php
echo $this->formLogin;


当我用鼠标单击图片区域时,应该会显示新的验证码,不知道为什么,就是不能实现动态验证码的效果。希望各位能帮忙解决一下谢谢了。
...全文
137 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxywd 2011-03-10
  • 打赏
  • 举报
回复
library/Zend/Captcha/Image.php文件中的render方法:刚才没显示清楚,现在重新写一下。

public function render(Zend_View_Interface $view = null, $element = null)
{
return '<img id="changeCaptcha" alt="'.
$this->getImgAlt().'" src="' . $this->getImgUrl() .
$this->getId() . $this->getSuffix() .
'" style="cursor: pointer;" /><br/>';
}
内容概要:本文提出一种基于鱼鹰优化算法(OOA)优化的CNN-BiGUR-Attention混合模型,用于提升短期风电功率预测的精度与稳定性,采用Matlab实现代码仿真。该模型融合卷积神经网络(CNN)提取输入数据的局部空间特征,利用双向门控循环单元(BiGUR)捕捉风速、功率等时间序列的前后向动态依赖关系,并引入注意力机制自适应强化关键时间步的特征权重,从而增强模型对非平稳风电数据的表征能力;进一步,采用OOA算法对模型超参数进行全局寻优,有效提升模型收敛速度与泛化性能。研究基于实际风电场历史数据开展实验验证,结果表明,该方法相较传统模型在预测精度、鲁棒性和误差抑制方面表现更优,适用于高比例可再生能源接入背景下的电力系统调度需求。; 适合人群:从事新能源发电预测、电力系统优化调度、智能算法与深度学习融合应用等方向的科研人员及工程技术人员,尤其适合具备Matlab编程能力、熟悉时间序列建模与深度学习框架的研究者。; 使用场景及目标:①实现风电场短期功率高精度预测,支撑电网安全稳定调度与能量管理;②为深度学习模型结构设计与智能优化算法联合调参提供实践范例;③推动人工智能技术在可再生能源预测、智能电网运行等领域的落地应用。; 阅读建议:建议结合提供的Matlab代码深入理解CNN-BiGUR-Attention网络架构搭建、注意力机制实现方式及OOA优化流程,重点关注数据预处理、模型训练与参数调优细节,可通过替换不同风电数据集进行对比实验,进一步掌握模型迁移能力与适应性。

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧