• Добрый день!
    Написал мини плагин для учета заходящий на сайт пользователей:

    add_action('wp_login','stats_reg_user');
    function stats_reg_user($login) {
        $user = get_user_by('login', $login);
        if($user->ID>0)
        {
            global $wpdb;
            $mysql_now = $wpdb->get_row( "SELECT NOW() as dbNow", ARRAY_A);
            $wpdb->insert(
                $wpdb->prefix . 'log',
                array(
                        'id_user' => $user->ID,
                        'date' => $mysql_now['dbNow']
                     ),
                array(
    		'%d',
    		'%s'
                    )
            );
        }
    }

    Но почему то у некоторых при заходе в wp в базе оседает несколько записей с одной и той же датой, у кого 2 у кого 3. Почему так происходит, и как это устранить?

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • День добрый!) Тут с логикой разобраться нужно, нужно определится что ты хочешь отследить:
    1. Заходил ли сегодня человек на сайт.
    2. Заходил ли сегодня человек на сайт и сколько раз он это сделал.
    В данном случае у Вас код написан под второй вариант, но если Вы не записываете в БД время, то естественно Вы не увидите, во сколько были переходы, а видите только одинаковые по дате записи(но не по времени).
    Если Вам нужен 1ый вариант, то нужно сделать проверку, заходил ли данный юзер на сайт сегодня, если да то не записывать в БД(как сейчас у Вас это происходит), если нет то записать.

    Мне надо когда пользователь аутентифицируется тогда и записать, 10 раз будет заходить, так 10 раз и записать.
    При этом, на основной части компьютеров работает нормально: ввожу логин пароль, данные записываются, а вот на некоторых захожу и появляется не одна запись, как надо, а несколько.

    Не понимаю зачем так усложнять $mysql_now = $wpdb->get_row( «SELECT NOW() as dbNow», ARRAY_A); для этого есть специальная функция CURRENT_TIMESTAMP. Сделай тип поля date если есть такая возможность типом DATETIME. Да и вообще там настроить можно чтобы при записи автоматом дата и время ставились. После этого можно будет увидеть по секундную запись в БД и думаю станет ясно в чем дело.

    $wpdb->insert(
                $wpdb->prefix . 'log',
                array(
                        'id_user' => $user->ID,
                        'date' => CURRENT_TIMESTAMP
                     ),
                array(
    		'%d',
    		'%s'
                    )
            );

    Ок, попробую, но не пойму что из этого будет следовать…

    ничего не изменилось, данные в базе двоятся у некоторых:
    id id_user date
    4506 611 2015-09-01 10:17:52
    4505 425 2015-09-01 10:17:49
    4504 425 2015-09-01 10:17:49
    4503 471 2015-09-01 10:15:38

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Несколько записей в базу вместо одной» закрыта для новых ответов.