2013-08-22 2 views
0

내 응용 프로그램 중 하나에서 CI를 사용하고 여기서 CI 보안 문자를 구현합니다. 나는 random_string('alnum', 8)을 사용하여 대소 문자 조합 보안 문자 코드를 만듭니다. 여기서 사용자는 이미지에 정확하게 표시되는 보안 문자 코드를 작성해야합니다. 케이스 센티티브입니다. 여기에 몇 가지 트릭을 추가해야합니다. 캡틴 코드를 대문자 또는 소문자로 채울 수있는 대소 문자를 이미지에 표시된 것과 같이 제거하고 싶습니다. 나는 이것에 대한 strtolower()을 사용했다 : - 여기CodeIgniter의 보안 문자 대소 문자 구분

$cap_word = random_string('alnum', 8); 

$options = array(
'word' => $cap_word, 
'img_path' => './captcha/', 
'img_url' => base_url() . 'captcha/', 
'font_path' => './fonts/custom.ttf', 
'img_width' => 150, 
'img_height' => 30, 
'expiration' => 7200 
); 

$cap = create_captcha($options); 

그리고 검사에 대한 내 콜백 함수입니다 -

public function validate_captcha_code() { 

    $cap = $this->input->post('captcha_code'); 
    if($cap != $cap_word) { 
    $this->form_validation->set_message('validate_captcha_code', 'Wrong captcha code, Please try again.'); 
     return false; 
    }else{ 
     return true; 
    } 
} 

답변

0

당신은 그런 당신의 유효성 검사 기능을 업데이트 -

public function validate_captcha_code() { 

    $cap = $this->input->post('captcha_code'); 

     if(strtolower($cap) != strtolower($cap_word) || strtoupper($cap) != strtoupper($cap_word)) { 
      $this->form_validation->set_message('validate_captcha_code', 'Wrong captcha code, Please try again.'); 
      return false; 
     }else{ 
      return true; 
     } 
} 

이는 대소 모두에서 작동이 희망을 봅니다. 그리고 무슨 일이 일어나는지 알려줘.

+0

감사합니다. 이것은 대소 문자 사용자 입력 모두에서 작동합니다. – follett

1

갱신이에 대한 유효성 검사 기능이

여기 내 보안 문자 구현 코드입니다.

public function validate_captcha_code() { 

$cap = strtolower($this->input->post('captcha_code')); 
if($cap != strtolower($cap_word)) { 
$this->form_validation->set_message('validate_captcha_code', 'Wrong captcha code, Please try again.'); 
    return false; 
}else{ 
    return true; 
} 
} 
+0

도움 주셔서 감사합니다. 이것은 소문자로만 작동합니다. 여기서 사용자는 소문자 만 입력 할 수 있습니다. 하지만 그 사용자는 대소 문자를 모두 채울 수 있어야합니다. – follett

+0

@follett 비교할 때 소문자로 변환되기 때문에 민감성이 제거됩니다. –