刷新在线用户列表中的问题

时间:2011-07-25 00:33:29

标签: php

我的在线用户列表存在问题。 代码工作正常,所有在线用户都显示在屏幕上,但是当我点击刷新时,再次显示同一用户的电子邮件,当我第二次点击刷新时,用户的电子邮件显示三次,依此类推。 / p>

这是我的代码:

<?php

require_once("db.php");

db_connect();

session_start();


$player_timeout = time() - 5 * 60;

$time = time();

if (isset($_SESSION['email'])) {

$login=mysql_query("insert into activePlayer(player_email,time_visited,status)   values('".$_SESSION['email']."','".$time."', 'true')");

}

else

{echo "You are not logged in";}

$tmout = mysql_query("DELETE FROM activePlayer WHERE time_visited < ".$player_timeout);

$online_member = mysql_query("SELECT player_email FROM activePlayer");

$row=mysql_num_rows($online_member);

$member_row=mysql_fetch_array($online_member);

echo "Welcome &nbsp; '".$_SESSION['email']."'";

?>

<body>

<select > <?php  

 if ($row<1)
      {
        echo "&nbsp;";
      }
      else
      {?> <p><p>Online Players:<option><?php echo $member_row['player_email'];?>  
     </option>}
      <?php for ($i=1;$i<$row;$i++)

{
      $member_row=mysql_fetch_array($online_member);?>
      <p><p>Online Players:<option><?php echo $member_row['player_email']; }}?>   
 </option></select>
</body>

请问我该如何解决这个问题

2 个答案:

答案 0 :(得分:0)

您需要做的是重定向:

if (isset($_SESSION['email'])) {
  mysql_query("INSERT INTO activePlayer (player_email,time_visited,status)
               VALUES ('".$_SESSION['email']."','".$time."', 'true')");

  unset($_SESSION['email']);
  header("Location: otherpage.php"); // or it can be the same page
}

答案 1 :(得分:0)

每次刷新时,如果用户已登录,则在数据库中插入一行。您必须检查用户是否已存在于数据库中并更新其记录。如果他没有记录,那么就像你一样创建一个新的。

$hasRow = mysql_query("SELECT * FROM activePlayer WHERE player_email='".$_SESSION['email']."' LIMIT 1");
if(mysql_num_rows($hasRow) > 0) {
    $login = mysql_query("UPDATE activePlayer SET visited=".time()." WHERE player_email='".$_SESSION['email']."'");
} else {
    $login=mysql_query("insert into activePlayer(player_email,time_visited,status)   values('".$_SESSION['email']."','".$time."', 'true')");
}