Я создал помощник для сохранения user_agent
в db
, который имеет метод saveVisit();
visit_helper:
function saveVisit($visitable_type='',$visitable_id='')
{
$CI =& get_instance();
$CI->load->library('user_agent');
$ip = $CI->input->ip_address();
$userId = $CI->session->userdata('userId');
if (!isset($userId)) {
$userId = 0;
}
if ($CI->agent->is_mobile()) {
$mobile=$CI->agent->mobile();
}else {
$mobile=0;
}
$data = array(
'ip'=>$ip,
'visitable_id'=>$visitable_id,
'visitable_type'=>$visitable_type,
'user_id'=>$userId,
'created_at'=>dbtime(),
'browser'=>$CI->agent->browser(),
'version'=>$CI->agent->version(),
'platform'=>$CI->agent->platform(),
'mobile'=>$mobile,
'referral'=>$CI->agent->referrer(),
);
$CI->db->insert('visits',$data);
}
Когда я вызываюметод, подобный saveVisit();
, который был создан в моем помощнике , все в порядке и вызывается там, где я написал!
Но когда я вызываю этот метод из $route['default_controller'] = 'display/home';
, этот метод будет вызываться из всех методов во всех моих контроллерах !!!
Я хочу назвать этот метод только домашней страницей, а не всеми контроллерами / методами !
Эта проблема касается только моего $route['default_controller'] = 'display/home';
кода моего контроллера:
class Display extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function home()
{
// some codes here
saveVisit('home');
}
}
Я хочу, чтобы saveVisit();
вызывался только на домашней странице, а не другие
РЕДАКТИРОВАНИЕ:
Я создал новую функцию в helper для проверки и вызова по умолчанию контроллер , функция вызывается один раз НО выполняется дважды !
тест метод код в помощнике:
function test()
{
$CI =& get_instance();
if ($CI->session->userdata('visit')!=null) {
$plus = $CI->session->userdata('visit');
$CI->session->set_userdata('visit',$plus+1);
echo $CI->session->userdata('visit');
}else {
$CI->session->set_userdata('visit',1);
}
И когда я звоню test();
внутри по умолчанию Controller
результат для каждого обновления страницы - (Другие контроллеры были нормальными):
2
4
6
8
10
12
14
.
.
.
Почему это произошло?
РЕДАКТИРОВАТЬ 3:
Когда я вызываю вспомогательную функцию внутри контроллер по умолчанию , он запускается дважды и запускается один раз издругие контроллеры !проблема в том, что я не вызывал функцию в других контроллерах