Teceract
Постоялец
- Регистрация
- 15 Фев 2009
- Сообщения
- 205
- Реакции
- 117
- Автор темы
- #1
Доброго времени дня!
Недавно наткнулся на скрипт, который определяет статус пользователя по его последней активности.
Скрипт рабочий, но до версии 3.8.2.
Оригинал кода:
Для просмотра ссылки Войдиили Зарегистрируйся
С версии 3.9.х возникает проблема с insert into, в таблицу бд не добавляются данные о пользователе и возникает 2 одинаковых ошибки:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in строка, на которую ссылаются ошибки:
Так как записи о пользователе не добавляются в таблицу бд, то как я понял, параметр пустой и выходит ошибка.
Собственно вопрос: как исправить проблему с добавлением данных в таблицу?
Недавно наткнулся на скрипт, который определяет статус пользователя по его последней активности.
Скрипт рабочий, но до версии 3.8.2.
PHP:
<?php
session_start();
/*
** Создаем таблицу в бд
CREATE TABLE `wordpress_users_online` (
`user_id` int(11) default NULL,
`full_name` varchar(64) NOT NULL default '',
`session_id` varchar(128) NOT NULL default '',
`ip_address` varchar(15) NOT NULL default '',
`time_entry` varchar(14) NOT NULL default '',
`time_last_click` varchar(14) NOT NULL default '',
`last_page_url` varchar(255) NOT NULL default ''
) ENGINE=MyISAM;
Шаг 1: Добавить в header.php
include("wordpress_users_online.php");
update_user_online();
Шаг 2: Вызываем функцию
is_online($user_id);
*/
define('TABLE_USERS', 'wordpress_users');
define('TABLE_USER_ONLINE', 'wordpress_users_online');
function update_user_online() {
//global $user_id;
global $current_user;
get_currentuserinfo();
if ($current_user->ID && $current_user->user_login) {
$wo_user_id = $current_user->ID;
$wo_full_name = $user['user_nicename'];
} else {
$wo_user_id = '';
$wo_full_name = 'Guest';
}
$wo_session_id = session_id();
$wo_ip_address = getenv('REMOTE_ADDR');
$wo_last_page_url = getenv('REQUEST_URI');
$current_time = time();
$xx_mins_ago = ($current_time - 300);
// remove entries that have expired
mysql_query("delete from " . TABLE_USER_ONLINE . " where time_last_click < '" . $xx_mins_ago . "'");
$stored_user_query = mysql_query("select count(*) as count from " . TABLE_USER_ONLINE . " where session_id = '" . mysql_escape_string($wo_session_id) . "'");
$stored_user = mysql_fetch_array($stored_user_query);
if ($stored_user['count'] > 0) {
mysql_query("update " . TABLE_USER_ONLINE . " set user_id = '" . (int)$wo_user_id . "', full_name = '" . mysql_escape_string($wo_full_name) . "', ip_address = '" . mysql_escape_string($wo_ip_address) . "', time_last_click = '" . mysql_escape_string($current_time) . "', last_page_url = '" . mysql_escape_string($wo_last_page_url) . "' where session_id = '" . mysql_escape_string($wo_session_id) . "'");
} else {
mysql_query("insert into " . TABLE_USER_ONLINE . " (user_id, full_name, session_id, ip_address, time_entry, time_last_click, last_page_url) values ('" . (int)$wo_user_id . "', '" . mysql_escape_string($wo_full_name) . "', '" . mysql_escape_string($wo_session_id) . "', '" . mysql_escape_string($wo_ip_address) . "', '" . mysql_escape_string($current_time) . "', '" . mysql_escape_string($current_time) . "', '" . mysql_escape_string($wo_last_page_url) . "')");
}
}
function is_online($user_id) {
$stored_user_query = mysql_query("select user_id from ".TABLE_USER_ONLINE." where user_id = '" . mysql_escape_string($user_id) . "'");
$stored_user = mysql_fetch_array($stored_user_query);
if(isset($stored_user['user_id']))
$online = 'Online';
else
$online = 'Offline';
return $online;
}
?>
Для просмотра ссылки Войди
С версии 3.9.х возникает проблема с insert into, в таблицу бд не добавляются данные о пользователе и возникает 2 одинаковых ошибки:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in строка, на которую ссылаются ошибки:
PHP:
$stored_user = mysql_fetch_array($stored_user_query);
Так как записи о пользователе не добавляются в таблицу бд, то как я понял, параметр пустой и выходит ошибка.
Собственно вопрос: как исправить проблему с добавлением данных в таблицу?