【问题标题】:Check captcha with lower and uppercase characters in php在php中检查带有大小写字符的验证码
【发布时间】:2012-01-11 22:01:38
【问题描述】:

我使用codeigniter,我想为验证码制作有效数据,如果验证码混合了大小写字符,用户应该在输入中插入小写或大写或混合它们。

在下面的代码中我试过了,但它不检查大小写字符,如何解决?

我的验证码图片如下:dAwVJ

//$cap = $this->input->post('captcha');
$cap = 'dAwVJ';// if i change this to dawvj return(output) is true, i don't want this

// Then see if a captcha exists:    
$sql   = "SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?";
$binds = array(
    $cap,
    $this->input->ip_address(),
    $expiration
);
$query = $this->db->query($sql, $binds);
$row   = $query->row();

if ($row->count == 0) {
    return false;
} else {
    return true;
}

【问题讨论】:

  • 我认为以区分大小写的方式检查验证码对用户不友好,因为没有人可以识别随机验证码中的小写/大写差异,或者您的验证码很容易阅读(例如,所有字母都相同) size) 那么它仍然没用;)
  • 您是否检查过数据库排序规则不以_ci结尾,这意味着sql检查不区分大小写

标签: php codeigniter captcha


【解决方案1】:

你的意思是mysql中区分大小写的字符串比较?我想应该是这样的:WHERE word like binary ?

由于您使用的是 codeigniter,这可能很有用:mysql, case sensitive compare through codeigniter

【讨论】:

    【解决方案2】:

    试试这个 sql:

    $sql   = "SELECT COUNT(*) AS count FROM captcha WHERE binary word = ? AND ip_address = ? AND captcha_time > ?";
    

    【讨论】:

      【解决方案3】:
      $sql   = "SELECT COUNT(*) AS count FROM captcha WHERE BINARY word = ? AND ip_address = ? AND captcha_time > ?";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 2016-03-02
        • 2015-02-08
        • 1970-01-01
        • 2018-06-17
        相关资源
        最近更新 更多