Как добавить количество просмотров сообщений с помощью куки в PHP Codeigniter? - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь добавить количество просмотров сообщений с использованием куки в PHP Codeigniter. Я создал пользовательскую библиотеку (snippetfunctions), в которой я создал функцию (add_count), как показано ниже

  public function add_count($table,$column,$value)
{

$CI =& get_instance();//CI super object
$check_visitor = $CI->input->cookie(urldecode($value), FALSE);

 $ip = $CI->input->ip_address();
// if the visitor visit this article for first time then //
//set new cookie and update article_views column  ..
//you might be notice we used slug for cookie name and ip 
//address for value to distinguish between articles  views
if ($check_visitor == false) {
    $cookie = array(
        "name"   => urldecode($value),
        "value"  => "$ip",
        "expire" =>  time() + 0,
        "secure" => false
    );

    $CI->input->set_cookie($cookie);
$CI->Constant_model->update_counter($table,$column,urldecode($value));
}
}

и я использовал эту функцию в своем файле контроллера для добавления счетчика

$this->snippetfunctions->add_count('snippets','counter_views',$slug);

Где snippets - это имя таблицы, counter_views - это имя столбца, а $slug - это URL-адрес поста, который используется для идентификации поста.

Ошибка, которую я получаю, показана на изображении

enter image description here

Модель функции

 function update_counter($table, $column, $value)
{
    // return current article views 
    $this->db->where($column, urldecode($value));
    $this->db->select('counter_views');
    $count = $this->db->get($table)->row();
    // then increase by one 
    $this->db->where($column, urldecode($value));


    $this->db->set('counter_views', ($count['counter_views'] + 1));
    $this->db->update($table);
}

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Попробуйте этот код, надеюсь, это поможет вам
3600 секунд, и это означает, что Текущее время + 1 час, ваш cookie истекает через один час

$cookie = array(
        "name"   => urldecode($value),
        "value"  => "$ip",
        "expire" =>  3600,//changes seconds for 1 hour from current time
        "secure" => false
    );

Модель:

function update_counter($table, $column, $value)
{
    // return current article views 
    $this->db->where($column, urldecode($value));
    $this->db->select('counter_views');
    $count = $this->db->get($table)->row('counter_views');

    $this->db->reset_query();
    // then increase by one 
    $this->db->set('counter_views', ($count + 1));//changes
    $this->db->where($column, urldecode($value));
    $this->db->update($table);
}
0 голосов
/ 20 апреля 2019

Пожалуйста, проверьте этот код:

public function add_count($table,$column,$value)
{

$CI =& get_instance();//CI super object
$check_visitor = $CI->input->cookie(urldecode($value), FALSE);

 $ip = $CI->input->ip_address();
// if the visitor visit this article for first time then //
//set new cookie and update article_views column  ..
//you might be notice we used slug for cookie name and ip 
//address for value to distinguish between articles  views
if ($check_visitor == false) {
    $cookie = array(
        "name"   => urldecode($value),
        "value"  => "$ip",
        "expire" =>  30,
        "secure" => false
    );

    $CI->input->set_cookie($cookie);
$CI->Constant_model->update_counter($table,$column,urldecode($value));
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...