我正在使用classipress主题
在wordpress中创建一个机密网站为了显示作者在广告页面上在线或离线,我编写了以下代码,但如果两个用户一次注册则无效...如果注册用户想要查看另一个注册用户的状态,则它始终显示为离线。 .. 我虽然可能是我错过了会话开始的事情,我必须写吗?请帮助我
我写下面的代码
First I create the table in MYSQL
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;`
然后我用以下代码
写了文件wordpress_users_online.php<?php
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 = '<img src="http://www.mohibsalahuddin.com/client/wp-content/themes/classipress-313/images/online.png" border="0" /> Online';
echo $online;
}
else {
$online = '<img src="http://www.mohibsalahuddin.com/client/wp-content/themes/classipress-313/images/offline.png" border="0" /> Offline';
echo $online;
}
return $online;
}
?>
答案 0 :(得分:0)
实际上已经有一个wordpress插件了... - 编辑 - http://wordpress.org/extend/plugins/wp-useronline/
抱歉,以下是原始建议,但它们是错误的链接: http://wordpress.org/extend/plugins/who-is-online/faq/ http://wordpress.org/extend/plugins/wassup/
请记住,不要重新发明轮子,除非你也要把它盘起来。