Initial import from local backup (Documents-Playground/pakerpale)
This commit is contained in:
183
application/hooks/Common.php
Normal file
183
application/hooks/Common.php
Normal file
@@ -0,0 +1,183 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Common hook class
|
||||
*
|
||||
* Copyright (c) CIBoard <www.ciboard.co.kr>
|
||||
*
|
||||
* @author CIBoard (develop@ciboard.co.kr)
|
||||
*/
|
||||
|
||||
class _Common
|
||||
{
|
||||
|
||||
function init()
|
||||
{
|
||||
$CI =& get_instance();
|
||||
|
||||
if ($CI->uri->segment(1) === 'install') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (config_item('use_lock_ip') && $CI->cbconfig->item('site_ip_whitelist')) {
|
||||
$whitelist = $CI->cbconfig->item('site_ip_whitelist');
|
||||
$whitelist = preg_replace("/[\r|\n|\r\n]+/", ',', $whitelist);
|
||||
$whitelist = preg_replace("/\s+/", '', $whitelist);
|
||||
if (preg_match('/(<\?|<\?php|\?>)/xsm', $whitelist)) {
|
||||
$whitelist = '';
|
||||
}
|
||||
if ($whitelist) {
|
||||
$whitelist = explode(',', trim($whitelist, ','));
|
||||
$whitelist = array_unique($whitelist);
|
||||
if (is_array($whitelist)) {
|
||||
$CI->load->library('Ipfilter');
|
||||
$ipfilter = new Ipfilter();
|
||||
if ( ! $ipfilter->filter($whitelist)) {
|
||||
$title = ($CI->cbconfig->item('site_blacklist_title'))
|
||||
? $CI->cbconfig->item('site_blacklist_title')
|
||||
: 'Maintenance in progress...';
|
||||
$message = $CI->cbconfig->item('site_blacklist_content');
|
||||
|
||||
show_error($message, '500', $title);
|
||||
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (config_item('use_lock_ip') && $CI->cbconfig->item('site_ip_blacklist')) {
|
||||
$blacklist = $CI->cbconfig->item('site_ip_blacklist');
|
||||
$blacklist = preg_replace("/[\r|\n|\r\n]+/", ',', $blacklist);
|
||||
$blacklist = preg_replace("/\s+/", '', $blacklist);
|
||||
if (preg_match('/(<\?|<\?php|\?>)/xsm', $blacklist)) {
|
||||
$blacklist = '';
|
||||
}
|
||||
if ($blacklist) {
|
||||
$blacklist = explode(',', trim($blacklist, ','));
|
||||
$blacklist = array_unique($blacklist);
|
||||
if (is_array($blacklist)) {
|
||||
$CI->load->library('Ipfilter');
|
||||
$ipfilter = new Ipfilter();
|
||||
if ($ipfilter->filter($blacklist)) {
|
||||
$title = ($CI->cbconfig->item('site_blacklist_title'))
|
||||
? $CI->cbconfig->item('site_blacklist_title')
|
||||
: 'Maintenance in progress...';
|
||||
$message = $CI->cbconfig->item('site_blacklist_content');
|
||||
show_error($message, '500', $title);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$CI->load->library('Mobile_detect');
|
||||
$detect = new Mobile_detect();
|
||||
|
||||
$device_view_type = (get_cookie('device_view_type') === 'desktop' OR get_cookie('device_view_type') === 'mobile')
|
||||
? get_cookie('device_view_type') : '';
|
||||
if (empty($device_view_type)) {
|
||||
$device_view_type = $detect->isMobile() ? 'mobile' : 'desktop';
|
||||
}
|
||||
$CI->cbconfig->set_device_view_type($device_view_type);
|
||||
|
||||
$device_type = $detect->isMobile() ? 'mobile' : 'desktop';
|
||||
$CI->cbconfig->set_device_type($device_type);
|
||||
|
||||
if (get_cookie('autologin') && ! $CI->session->userdata('mem_id')) {
|
||||
$CI->load->model('Autologin_model');
|
||||
$where = array(
|
||||
'aul_key' => get_cookie('autologin'),
|
||||
);
|
||||
$autodata = $CI->Autologin_model->get_one('', '', $where);
|
||||
if ( ! element('mem_id', $autodata)) {
|
||||
delete_cookie('autologin');
|
||||
} elseif ( ! element('aul_datetime', $autodata) OR (strtotime(element('aul_datetime', $autodata)) < ctimestamp() - (86400 * 30))) {
|
||||
$CI->Autologin_model->delete(element('aul_id', $autodata));
|
||||
delete_cookie('autologin');
|
||||
} elseif ($CI->input->ip_address() !== element('aul_ip', $autodata)) {
|
||||
$CI->Autologin_model->delete(element('aul_id', $autodata));
|
||||
delete_cookie('autologin');
|
||||
} else {
|
||||
$tmpmember
|
||||
= $CI->Member_model->get_by_memid(element('mem_id', $autodata), 'mem_id, mem_denied, mem_is_admin');
|
||||
if ( ! element('mem_id', $tmpmember)) {
|
||||
$CI->Autologin_model->delete(element('aul_id', $autodata));
|
||||
delete_cookie('autologin');
|
||||
} elseif (element('mem_denied', $tmpmember)) {
|
||||
$CI->Autologin_model->delete(element('aul_id', $autodata));
|
||||
delete_cookie('autologin');
|
||||
} elseif (element('mem_is_admin', $tmpmember)) {
|
||||
$CI->Autologin_model->delete(element('aul_id', $autodata));
|
||||
delete_cookie('autologin');
|
||||
} else {
|
||||
$CI->session->set_userdata('mem_id', element('mem_id', $autodata));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($CI->member->is_member()) {
|
||||
if ($CI->member->item('mem_id') === false) {
|
||||
unset($CI->member);
|
||||
$CI->session->sess_destroy();
|
||||
redirect(current_full_url(), 'refresh');
|
||||
}
|
||||
$mem_id = (int) $CI->member->item('mem_id');
|
||||
if ($CI->member->item('mem_denied')) {
|
||||
unset($CI->member);
|
||||
$CI->session->sess_destroy();
|
||||
redirect(current_full_url(), 'refresh');
|
||||
} else {
|
||||
if (substr($CI->member->item('mem_lastlogin_datetime'), 0, 10) !== cdate('Y-m-d')) {
|
||||
if ($CI->cbconfig->item('point_login')) {
|
||||
$CI->load->library('point');
|
||||
$CI->point->insert_point(
|
||||
$mem_id,
|
||||
$CI->cbconfig->item('point_login'),
|
||||
cdate('Y-m-d') . ' 첫로그인',
|
||||
'login',
|
||||
$mem_id,
|
||||
cdate('Y-m-d') . ' 로그인'
|
||||
);
|
||||
}
|
||||
$updatedata = array(
|
||||
'mem_lastlogin_datetime' => cdate('Y-m-d H:i:s'),
|
||||
'mem_lastlogin_ip' => $CI->input->ip_address(),
|
||||
);
|
||||
$CI->Member_model->update($mem_id, $updatedata);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 관리자 페이지
|
||||
if ($CI->member->is_admin() !== 'super'
|
||||
&& $CI->uri->segment(1) === config_item('uri_segment_admin')) {
|
||||
redirect('login?url=' . urlencode(current_full_url()));
|
||||
}
|
||||
|
||||
if (config_item('use_lock_ip')
|
||||
&& $CI->uri->segment(1) === config_item('uri_segment_admin')
|
||||
&& $CI->cbconfig->item('admin_ip_whitelist')) {
|
||||
|
||||
$whitelist = $CI->cbconfig->item('admin_ip_whitelist');
|
||||
$whitelist = preg_replace("/[\r|\n|\r\n]+/", ',', $whitelist);
|
||||
$whitelist = preg_replace("/\s+/", '', $whitelist);
|
||||
if (preg_match('/(<\?|<\?php|\?>)/xsm', $whitelist)) {
|
||||
$whitelist = '';
|
||||
}
|
||||
if ($whitelist) {
|
||||
$whitelist = explode(',', trim($whitelist, ','));
|
||||
$whitelist = array_unique($whitelist);
|
||||
if (is_array($whitelist)) {
|
||||
$CI->load->library('Ipfilter');
|
||||
if ( ! Ipfilter::filter($whitelist)) {
|
||||
$title = '관리자 페이지';
|
||||
$message = '현재 접속하신 아이피는 관리자 페이지 접근이 차단되었습니다';
|
||||
show_error($message, '500', $title);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
206
application/hooks/Member_dormant.php
Normal file
206
application/hooks/Member_dormant.php
Normal file
@@ -0,0 +1,206 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Member_dormant hook class
|
||||
*
|
||||
* Copyright (c) CIBoard <www.ciboard.co.kr>
|
||||
*
|
||||
* @author CIBoard (develop@ciboard.co.kr)
|
||||
*/
|
||||
|
||||
class _Member_dormant
|
||||
{
|
||||
|
||||
private $CI;
|
||||
|
||||
public $dormant_days_text;
|
||||
|
||||
/**
|
||||
* 휴면회원으로 전환, 휴면회원이 곧 될 대상자에게 메일을 발송하는 프로세스를 담당하고 있습니다.
|
||||
*/
|
||||
function init()
|
||||
{
|
||||
$this->CI =& get_instance();
|
||||
|
||||
if ($this->CI->input->is_ajax_request() === true) {
|
||||
return;
|
||||
}
|
||||
if ($this->CI->input->method() !== 'get') {
|
||||
return;
|
||||
}
|
||||
if ($this->CI->uri->segment(1) === 'install') {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->CI->cbconfig->item('member_dormant_auto_clean')) {
|
||||
$cachename = 'check_hook_member_dormant_auto_clean';
|
||||
$cachetime = 25000;
|
||||
if ( ! $this->CI->cache->get($cachename)) {
|
||||
$this->auto_clean();
|
||||
$this->CI->cache->save($cachename, '1', $cachetime);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->CI->cbconfig->item('member_dormant_auto_email')) {
|
||||
$cachename = 'check_hook_member_dormant_auto_email';
|
||||
$cachetime = 21000;
|
||||
if ( ! $this->CI->cache->get($cachename)) {
|
||||
$this->auto_email();
|
||||
$this->CI->cache->save($cachename, '1', $cachetime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 일정 시간이 지나 휴면회원 대상자가 된 회원을 삭제하거나 별도의 저장소로 옮기는 프로세스를 담당합니다
|
||||
*/
|
||||
function auto_clean()
|
||||
{
|
||||
$where = array();
|
||||
$dormant_days = $this->CI->cbconfig->item('member_dormant_days') ? $this->CI->cbconfig->item('member_dormant_days') : 365;
|
||||
$gap = $dormant_days * 24 * 60 * 60;
|
||||
$lastlogin = ctimestamp() - $gap;
|
||||
$lastlogin_datetime = cdate('Y-m-d H:i:s', $lastlogin);
|
||||
$where['mem_lastlogin_datetime <='] = $lastlogin_datetime;
|
||||
$where['mem_register_datetime <='] = $lastlogin_datetime;
|
||||
$this->CI->load->model('Member_model');
|
||||
$result = $this->CI->Member_model->get('', 'mem_id', $where);
|
||||
if ($result) {
|
||||
$this->CI->load->model('Member_dormant_model');
|
||||
foreach ($result as $value) {
|
||||
$mem_id = element('mem_id', $value);
|
||||
if ($this->CI->cbconfig->item('member_dormant_method') === 'delete') {
|
||||
$this->CI->member->delete_member($mem_id);
|
||||
} else {
|
||||
$this->CI->member->archive_to_dormant($mem_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 일정 시간이 지나 휴면회원 대상자가 되기 전에 이메일로 회원에게 알려주는 프로세스를 담당합니다
|
||||
*/
|
||||
function auto_email()
|
||||
{
|
||||
/**
|
||||
* Email 라이브러리를 가져옵니다
|
||||
*/
|
||||
$this->CI->load->library('email');
|
||||
|
||||
$this->dormant_days_text = array(
|
||||
'30' => '30일',
|
||||
'90' => '90일',
|
||||
'180' => '180일',
|
||||
'365' => '1년',
|
||||
'730' => '2년',
|
||||
'1095' => '3년',
|
||||
'1460' => '4년',
|
||||
'1825' => '5년',
|
||||
);
|
||||
|
||||
$where = array();
|
||||
$dormant_days = $this->CI->cbconfig->item('member_dormant_days') ? $this->CI->cbconfig->item('member_dormant_days') : 365;
|
||||
$email_days = $this->CI->cbconfig->item('member_dormant_auto_email_days') ? $this->CI->cbconfig->item('member_dormant_auto_email_days') : 365;
|
||||
$gap = $dormant_days * 24 * 60 * 60;
|
||||
$email_gap = $email_days * 24 * 60 * 60;
|
||||
$lastlogin = ctimestamp() - $gap + $email_gap;
|
||||
$lastlogin_datetime = cdate('Y-m-d H:i:s', $lastlogin);
|
||||
$this->CI->load->model('Member_dormant_notify_model');
|
||||
$result = $this->CI->Member_dormant_notify_model->get_unsent_email_member($lastlogin_datetime);
|
||||
if ($result) {
|
||||
foreach ($result as $value) {
|
||||
$mem_id = element('mem_id', $value);
|
||||
// 메일 발송하기
|
||||
|
||||
$searchconfig = array(
|
||||
'{홈페이지명}',
|
||||
'{회사명}',
|
||||
'{홈페이지주소}',
|
||||
'{회원아이디}',
|
||||
'{회원닉네임}',
|
||||
'{회원실명}',
|
||||
'{회원이메일}',
|
||||
'{메일수신여부}',
|
||||
'{쪽지수신여부}',
|
||||
'{문자수신여부}',
|
||||
'{최종로그인시간}',
|
||||
'{정리예정날짜}',
|
||||
'{정리기준}',
|
||||
'{정리방법}',
|
||||
);
|
||||
$receive_email = element('mem_receive_email', $value) ? '동의' : '거부';
|
||||
$receive_note = element('mem_use_note', $value) ? '동의' : '거부';
|
||||
$receive_sms = element('mem_receive_sms', $value) ? '동의' : '거부';
|
||||
$dormant_timestamp = strtotime(element('mem_lastlogin_datetime', $value)) + ($this->CI->cbconfig->item('member_dormant_days') * 24 * 60 * 60);
|
||||
$dormant_date = cdate('Y년 m월 d일', $dormant_timestamp);
|
||||
$dormant_datetime = cdate('Y-m-d H:i:s', $dormant_timestamp);
|
||||
$replaceconfig = array(
|
||||
$this->CI->cbconfig->item('site_title'),
|
||||
$this->CI->cbconfig->item('company_name'),
|
||||
site_url(),
|
||||
element('mem_userid', $value),
|
||||
element('mem_nickname', $value),
|
||||
element('mem_username', $value),
|
||||
element('mem_email', $value),
|
||||
$receive_email,
|
||||
$receive_note,
|
||||
$receive_sms,
|
||||
cdate('Y년 m월 d일 H시 i분', strtotime(element('mem_lastlogin_datetime', $value))),
|
||||
$dormant_date,
|
||||
$this->dormant_days_text[$this->CI->cbconfig->item('member_dormant_days')],
|
||||
($this->CI->cbconfig->item('member_dormant_method') === 'delete' ? '삭제' : '별도의 저장소에 보관'),
|
||||
);
|
||||
$replaceconfig_escape = array(
|
||||
html_escape($this->CI->cbconfig->item('site_title')),
|
||||
html_escape($this->CI->cbconfig->item('company_name')),
|
||||
site_url(),
|
||||
html_escape(element('mem_userid', $value)),
|
||||
html_escape(element('mem_nickname', $value)),
|
||||
html_escape(element('mem_username', $value)),
|
||||
html_escape(element('mem_email', $value)),
|
||||
$receive_email,
|
||||
$receive_note,
|
||||
$receive_sms,
|
||||
cdate('Y년 m월 d일 H시 i분', strtotime(element('mem_lastlogin_datetime', $value))),
|
||||
$dormant_date,
|
||||
$this->dormant_days_text[$this->CI->cbconfig->item('member_dormant_days')],
|
||||
($this->CI->cbconfig->item('member_dormant_method') === 'delete' ? '삭제' : '별도의 저장소에 보관'),
|
||||
);
|
||||
|
||||
$title = str_replace(
|
||||
$searchconfig,
|
||||
$replaceconfig,
|
||||
$this->CI->cbconfig->item('send_email_dormant_notify_user_title')
|
||||
);
|
||||
$content = str_replace(
|
||||
$searchconfig,
|
||||
$replaceconfig_escape,
|
||||
$this->CI->cbconfig->item('send_email_dormant_notify_user_content')
|
||||
);
|
||||
|
||||
$this->CI->email->clear(true);
|
||||
$this->CI->email->from($this->CI->cbconfig->item('webmaster_email'), $this->CI->cbconfig->item('webmaster_name'));
|
||||
$this->CI->email->to(element('mem_email', $value));
|
||||
$this->CI->email->subject($title);
|
||||
$this->CI->email->message($content);
|
||||
$this->CI->email->send();
|
||||
|
||||
$insertdata = array(
|
||||
'mem_id' => element('mem_id', $value),
|
||||
'mem_userid' => element('mem_userid', $value),
|
||||
'mem_email' => element('mem_email', $value),
|
||||
'mem_username' => element('mem_username', $value),
|
||||
'mem_nickname' => element('mem_nickname', $value),
|
||||
'mem_register_datetime' => element('mem_register_datetime', $value),
|
||||
'mem_lastlogin_datetime' => element('mem_lastlogin_datetime', $value),
|
||||
'mdn_dormant_datetime' => $dormant_datetime,
|
||||
'mdn_dormant_notify_datetime' => cdate('Y-m-d H:i:s'),
|
||||
);
|
||||
$this->CI->Member_dormant_notify_model->insert($insertdata);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
85
application/hooks/Scheduler.php
Normal file
85
application/hooks/Scheduler.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Scheduler hook class
|
||||
*
|
||||
* Copyright (c) CIBoard <www.ciboard.co.kr>
|
||||
*
|
||||
* @author CIBoard (develop@ciboard.co.kr)
|
||||
*/
|
||||
|
||||
class _Scheduler
|
||||
{
|
||||
|
||||
function init()
|
||||
{
|
||||
$CI =& get_instance();
|
||||
|
||||
if (config_item('enable_scheduler') === false) {
|
||||
return;
|
||||
}
|
||||
if ($CI->input->is_ajax_request() === true) {
|
||||
return;
|
||||
}
|
||||
if ($CI->input->method() !== 'get') {
|
||||
return;
|
||||
}
|
||||
if ($CI->uri->segment(1) === 'install') {
|
||||
return;
|
||||
}
|
||||
|
||||
$cachename = 'check_scheduler_executed';
|
||||
$cachetime = (int) config_item('check_scheduler_second');
|
||||
|
||||
if ( ! $CI->cache->get($cachename)) {
|
||||
|
||||
$scheduler_data = $CI->cbconfig->item('scheduler');
|
||||
$scheduler_array = json_decode($scheduler_data, true);
|
||||
$interval_data = $CI->cbconfig->item('scheduler_interval');
|
||||
$interval_array = json_decode($interval_data, true);
|
||||
|
||||
$libraryname = '';
|
||||
$find_scheduler = false;
|
||||
if ($scheduler_array && is_array($scheduler_array)) {
|
||||
foreach ($scheduler_array as $value) {
|
||||
if ( ! element('lasttime', $value)) {
|
||||
if (file_exists(APPPATH . 'libraries/Scheduler/' . element('library_name', $value) . '.php')) {
|
||||
$find_scheduler = true;
|
||||
$libraryname = element('library_name', $value);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$interval = element('interval', element(element('interval_field_name', $value), $interval_array));
|
||||
if (element('lasttime', $value) + $interval < ctimestamp()) {
|
||||
if (file_exists(APPPATH . 'libraries/Scheduler/' . element('library_name', $value) . '.php')) {
|
||||
echo element('lasttime', $value) . '//'. $interval . '//'. ctimestamp();
|
||||
$find_scheduler = true;
|
||||
$libraryname = element('library_name', $value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($find_scheduler && $libraryname) {
|
||||
|
||||
$CI->load->library('Scheduler/' . $libraryname);
|
||||
$s = new $libraryname();
|
||||
if (method_exists($s, 'scheduler')) {
|
||||
|
||||
$s->scheduler();
|
||||
|
||||
$scheduler_array[$libraryname]['lasttime'] = ctimestamp();
|
||||
$savedata = array();
|
||||
$savedata['scheduler'] = json_encode($scheduler_array);
|
||||
$CI->Config_model->save($savedata);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$CI->cache->save($cachename, '1', $cachetime);
|
||||
}
|
||||
}
|
||||
}
|
||||
64
application/hooks/Stat.php
Normal file
64
application/hooks/Stat.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Stat hook class
|
||||
*
|
||||
* Copyright (c) CIBoard <www.ciboard.co.kr>
|
||||
*
|
||||
* @author CIBoard (develop@ciboard.co.kr)
|
||||
*/
|
||||
|
||||
class _Stat
|
||||
{
|
||||
|
||||
function init()
|
||||
{
|
||||
$CI =& get_instance();
|
||||
|
||||
if ($CI->uri->segment(1) === 'install') {
|
||||
return;
|
||||
}
|
||||
if ($CI->input->is_ajax_request() === true) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ( ! get_cookie('user_ip') OR $CI->uri->segment(1) !== config_item('uri_segment_admin')) {
|
||||
|
||||
// 방문자 기록
|
||||
if (get_cookie('user_ip') !== $CI->input->ip_address()) {
|
||||
$CI->load->model('Stat_count_model');
|
||||
$CI->load->model('Stat_count_date_model');
|
||||
|
||||
$cookie_name = 'user_ip';
|
||||
$cookie_value = $CI->input->ip_address();
|
||||
$cookie_expire = 86400; // 1일간 저장
|
||||
set_cookie($cookie_name, $cookie_value, $cookie_expire);
|
||||
|
||||
$sco_agent = $CI->agent->agent_string() ? $CI->agent->agent_string() : '';
|
||||
$insertdata = array(
|
||||
'sco_ip' => $CI->input->ip_address(),
|
||||
'sco_date' => cdate('Y-m-d'),
|
||||
'sco_time' => cdate('H:i:s'),
|
||||
'sco_referer' => $CI->agent->referrer(),
|
||||
'sco_current' => current_full_url(),
|
||||
'sco_agent' => $sco_agent,
|
||||
);
|
||||
$result = $CI->Stat_count_model->insert($insertdata);
|
||||
|
||||
// 정상으로 INSERT 되었다면 방문자 합계에 반영
|
||||
if ($result) {
|
||||
$CI->Stat_count_date_model->add_visit_date();
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! $CI->session->userdata('site_referer')) {
|
||||
$CI->session->set_userdata(
|
||||
'site_referer',
|
||||
$CI->agent->referrer()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
application/hooks/index.html
Normal file
10
application/hooks/index.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user