【问题标题】:Codeigniter form validation callbacks not workingCodeigniter 表单验证回调不起作用
【发布时间】:2023-03-29 00:36:01
【问题描述】:

可能很简单,但这是我的问题,我已经在我的用户系统中实现了一个简单的验证码,但我似乎无法使用回调表单验证来检查验证码是否正确。

我将答案存储在用户会话中,并在表单验证时检查它是否正确。

你可以在这里看到它:http://77.96.119.180/beer/user/register 请原谅对啤酒的任何提及;)

这是我的代码:

$this->form_validation->set_rules('captcha', 'Image verification', 'trim|required|xss_clean|integer|callback_captcha_check');

这是表格的一部分

// CAPTCHA
$random_word = rand(10000, 99999);
$vals = array(
    'word'   => $random_word,
    'img_path'   => './captcha/',
    'img_url'    => 'http://77.96.119.180/beer/captcha/',
    'font_path'  => './captcha/fonts/pdark.ttf',
    'img_width'  => '150',
    'img_height' => 50,
    'expiration' => 7200
);

$cap = create_captcha($vals);

// Store captcha answer in session
$this->session->set_userdata('captcha_answer', $random_word);

$content .= form_label('Please enter the numbers in the box to verify you are human (Hint: Only numbers will appear)', 'captcha');
$content .= '<div class="left" style="margin-left:20px;">' . $cap['image'] . '</div>';
$content .= form_input(array('name' => 'captcha', 'value' => '', 'class' => 'right', 'style' => 'width:75%; margin-top:5px;'));

这里是回调函数

public function captcha_check($str)
    {
        if ($str == $this->session->userdata('captcha_answer'))
        {
            // Captcha is correct
            $this->form_validation->set_message('captcha', 'The %s was wrong, please try again');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }

【问题讨论】:

  • 如果你 var_dump($str);exit;在您的回调中,是否显示您的字符串?
  • 不,我试过添加 echo "hello";它永远不会出现在页面上,所以回调永远不会被调用
  • 向下列表:您的回调函数与设置表单验证规则并正确处理表单的控制器位于同一控制器中?
  • 我会发布整个脚本,但它有点长,我可以将它发送到电子邮件并提供行号
  • ahhhhh 我刚刚注意到您在验证码匹配时返回 false,反之亦然时返回 true

标签: php codeigniter callback


【解决方案1】:

您的验证规则在您的回调函数中是相反的。你的 return true 和 return false 逻辑需要颠倒。

只需将您的 if 语句更改为:

if ($str != $this->session->userdata('captcha_answer'))

【讨论】:

  • 哈哈,我以为很简单!这行得通,尽管现在我得到了错误:无法访问与您的字段名称对应的错误消息。但我可以解决这个问题
猜你喜欢
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 2014-09-24
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多