尝试使用验证码提交表单时出现CHttpException

时间:2014-11-10 09:47:17

标签: php yii captcha

我是yii框架的新手,我正在尝试在我的本地zwamp环境中执行php应用程序。该应用程序在生产环境中正常工作。

我收到的错误是在填写表单并尝试提交之后。验证码不验证,我在日志中收到以下错误:

2014/11/10 10:23:17 [error] [exception.CHttpException.404] exception 'CHttpException' with message 'The system cannot find the action « undefined » that is requested.' in D:\Users\....\web\CController.php:483
Stack trace:
#0 D:\Users\...\web\CController.php(270): CController->missingAction('undefined')
#1 D:\Users\...\web\CWebApplication.php(282): CController->run('undefined')
#2 D:\Users\...\web\CWebApplication.php(141): CWebApplication->runController('site/undefined')
#3 D:\Users\...\base\CApplication.php(180): CWebApplication->processRequest()
#4 D:\Users\....\index.php(23): CApplication->run()
#5 {main}
REQUEST_URI=/appname/site/undefined
HTTP_REFERER=http://localhost:92/appname/site/form

如何解决此问题或确定导致问题的操作?

**编辑:问题似乎来自这里:验证码与显示的图像不匹配.. **

/**
 * Gets the verification code.
 * @param boolean $regenerate whether the verification code should be regenerated.
 * @return string the verification code.
 */
public function getVerifyCode($regenerate=false)
{
    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;
    }


    $message = $session[$name];
    echo "<script type='text/javascript'>alert('$message');</script>";


    return $session[$name];
}

可能是什么问题?

3 个答案:

答案 0 :(得分:0)

Ayrad,错误信息很含糊地说,“......动作«未定义».....”,一般来说Yii 404错误指定了它的名称(例如,“......无法解决请求“ABC XYZ ....”。

这些错误取决于很多事情,例如,启用了引擎重写,你的.htacess是怎样的。至少,您的“URLManager”在配置中如何显示。

所以,我的答案来自我之前遇到的问题的经验。他们是我的CSS文件中的一些断链接,所以我得到了这样的错误,

[error] [exception.CHttpException.404] exception 'CHttpException' with message 'The system is unable to find the requested action "undefined".' in C:\wamp\yii\framework\web\CController.php:484
Stack trace:
#0 C:\wamp\yii\framework\web\CController.php(271): CController->missingAction('undefined')
#1 C:\wamp\yii\framework\web\CWebApplication.php(283): CController->run('undefined')
#2 C:\wamp\yii\framework\web\CWebApplication.php(142): CWebApplication->runController('site/undefined')
#3 C:\wamp\yii\framework\base\CApplication.php(162): CWebApplication->processRequest()
#4 C:\wamp\www\index.php(27): CApplication->run()
#5 {main}
REQUEST_URI=/site/undefined
HTTP_REFERER=http://localhost/site/index

我检查了我的主要布局,发现这个错误的javascript函数导致了这个错误:

$(".shortcuts").each(function(){
        var cacheImage = document.createElement('img');
        cacheImage.src = $(this).attr('rel');
        cache.push(cacheImage);
        });

假设在引导程序导航栏上预加载快捷方式图像。这样就解决了问题。希望这可以帮助。如果没有,请尝试发布额外的细节。

答案 1 :(得分:0)

错误日志清楚地显示了这是什么,

REQUEST_URI=/appname/site/undefined

这表明你以某种方式生成了这样的网址,当它试图使用它解析时,它会失败(我认为这是你的表单网址)

你必须分享才能查看制作此表格,否则我们无法帮助你

答案 2 :(得分:0)

如果此代码在生产环境中正常工作。然后问题可能是由于数据库或main.php的不匹配。我认为,此错误是由于未正确获取网站操作。检查一下,请求URL是否正确。