对于WordPress中的在线用户不起作用

时间:2012-01-25 20:36:03

标签: php mysql wordpress

我正在使用classipress主题

在wordpress中创建一个机密网站
  

http://www.mohibsalahuddin.com/client/ads/test-ad/

为了显示作者在广告页面上在线或离线,我编写了以下代码,但如果两个用户一次注册则无效...如果注册用户想要查看另一个注册用户的状态,则它始终显示为离线。 .. 我虽然可能是我错过了会话​​开始的事情,我必须写吗?请帮助我

我写下面的代码

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" />&nbsp;Online'; 
      echo $online;
      }

    else {
      $online = '<img src="http://www.mohibsalahuddin.com/client/wp-content/themes/classipress-313/images/offline.png" border="0" />&nbsp;Offline';
      echo $online;

          }           

    return $online; 

  }

?>

1 个答案:

答案 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/

请记住,不要重新发明轮子,除非你也要把它盘起来。