88 lines
2.3 KiB
PHP
88 lines
2.3 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
/**
|
|
* Captcha class
|
|
*/
|
|
|
|
/**
|
|
* 비회원이 접근시 보여주는 captcha 에 관한 controller 입니다.
|
|
*/
|
|
class Captcha extends MY_Controller
|
|
{
|
|
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
/**
|
|
* 라이브러리를 로딩합니다
|
|
*/
|
|
$this->load->helper(array('captcha', 'string'));
|
|
}
|
|
|
|
|
|
/**
|
|
* 캡차 세션 생성후 보여주는 함수입니다.
|
|
*/
|
|
function show($width = '', $height = '')
|
|
{
|
|
$this->output->set_content_type('application/json');
|
|
|
|
if ( ! $width) {
|
|
$width = 150;
|
|
}
|
|
if ( ! $height) {
|
|
$height = 40;
|
|
}
|
|
|
|
$img_path = config_item('uploads_dir') . '/captcha/';
|
|
if ( ! is_dir($img_path)) {
|
|
@mkdir($img_path, 0755);
|
|
@chmod($img_path, 0755);
|
|
$file = $img_path . 'index.php';
|
|
$f = @fopen($file, 'w');
|
|
@fwrite($f, '');
|
|
@fclose($f);
|
|
@chmod($file, 0644);
|
|
}
|
|
|
|
$data = array(
|
|
'img_path' => $img_path,
|
|
'img_url' => site_url(config_item('uploads_dir') . '/captcha') . '/',
|
|
'img_width' => $width,
|
|
'img_height' => $height,
|
|
'font_size' => 15,
|
|
'font_path' => './assets/fonts/BreeSerif-Regular.ttf',
|
|
'pool' => '23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ',
|
|
'word_length' => '8',
|
|
'img_id' => 'captcha',
|
|
);
|
|
|
|
$cap = create_captcha($data);
|
|
|
|
$save = array(
|
|
'captcha_time' => $cap['time'],
|
|
'ip_address' => $this->input->ip_address(),
|
|
'word' => $cap['word'],
|
|
);
|
|
$this->session->set_userdata('captcha', $save);
|
|
|
|
exit(json_encode($cap));
|
|
}
|
|
|
|
|
|
/**
|
|
* 구글 캡차 생성후 보여주는 함수입니다.
|
|
*/
|
|
function recaptcha()
|
|
{
|
|
$html = '<div id="google-recaptcha">';
|
|
$html .= '<script src="https://www.google.com/recaptcha/api.js"></script>';
|
|
$html .= '<div class="g-recaptcha" data-sitekey="' . $this->configlib->item('recaptcha_sitekey') . '"></div>';
|
|
$html .= '</div">';
|
|
|
|
echo $html;
|
|
}
|
|
}
|