수색…


이 헬퍼로드 중

이 도우미는 다음 코드를 사용하여로드됩니다.

컨트롤러 자체에서 (* 반복해서 반복 할 수 있습니다 *)

$this->load->helper('captcha');

config/autoload.php ( 한 번만로드 )

$autoload['helper'] = array('captcha');

create_captcha ($ data)

CAPTCHA를 입력으로 생성하기위한 일련의 정보를 취해 이미지에 대한 이미지를 생성하여 이미지에 대한 연관 데이터 배열을 반환합니다.

[array]
(
  'image' => IMAGE TAG
  'time'    => TIMESTAMP (in microtime)
  'word'    => CAPTCHA WORD
)

'이미지'는 실제 이미지 태그입니다.

<img src="http://example.com/captcha/12345.jpg" width="140" height="50" />

"시간"은 파일 확장자가없는 이미지 이름으로 사용 된 마이크로 시간 소인입니다. 다음과 같은 숫자가됩니다 : 1139612155.3422

"단어"는 captcha 이미지에 나타나는 단어입니다. 함수에 제공되지 않으면 임의의 문자열이됩니다.

보안 문자 도우미 사용

일단로드되면 다음과 같이 captcha를 생성 할 수 있습니다.

$vals = array(
    'word'    => 'Random word',
    'img_path'    => './captcha/',
    'img_url'    => 'http://example.com/captcha/',
    'font_path'    => './path/to/fonts/texb.ttf',
    'img_width'    => '150',
    'img_height' => 30,
    'expiration' => 7200
    );

$cap = create_captcha($vals);
echo $cap['image'];
  • 보안 문자 기능을 사용하려면 GD 이미지 라이브러리가 필요합니다.
  • img_pathimg_url 만 필요합니다.
  • "단어"가 제공되지 않으면이 함수는 임의의 ASCII 문자열을 생성합니다. 당신은 무작위로 그릴 수있는 자신 만의 단어 라이브러리를 함께 넣을 수 있습니다.
  • TRUE TYPE 글꼴에 대한 경로를 지정하지 않으면 원시 못생긴 GD 글꼴이 사용됩니다. "captcha"폴더는 쓰기 가능해야합니다 (666 또는 777)
  • "만료"(초)는 이미지가 삭제되기 전에 captcha 폴더에 남아있을 시간을 나타냅니다. 기본값은 2 시간입니다.

전체 예제

다음은 데이터베이스 사용 예제입니다. 보안 문자가 표시 될 페이지에서 다음과 같은 메시지가 표시됩니다.

$this->load->helper('captcha');
$vals = array(
    'img_path'    => './captcha/',
    'img_url'    => 'http://example.com/captcha/'
    );

$cap = create_captcha($vals);

$data = array(
    'captcha_time'    => $cap['time'],
    'ip_address'    => $this->input->ip_address(),
    'word'    => $cap['word']
    );

$query = $this->db->insert_string('captcha', $data);
$this->db->query($query);

echo 'Submit the word you see below:';
echo $cap['image'];
echo '<input type="text" name="captcha" value="" />';

그런 다음 제출을 수락하는 페이지에서 다음과 같은 내용을 갖습니다.

// First, delete old captchas
$expiration = time()-7200; // Two hour limit
$this->db->query("DELETE FROM captcha WHERE captcha_time < ".$expiration);  

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

if ($row->count == 0)
{
    echo "You must submit the word that appears in the image";
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow