2011-07-25 10 views
1

オンラインユーザーリストに問題があります。 コードはうまくいき、すべてのオンラインユーザーが画面に表示されますが、リフレッシュをクリックすると、同じユーザーの電子メールが再び表示され、2回目のリフレッシュをクリックするとユーザーの電子メールが3回表示されます。ここでオンラインユーザーリストの更新に関する問題

は私のコードです:

<?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> 

どのように私はあなたがする必要がどのような

答えて

0

あなたがリフレッシュするたびに、ユーザーがログインしている場合は、dbに行を追加します。ユーザーがすでにdbに存在するかどうかを確認し、代わりにレコードを更新する必要があります。彼がレコードを持っていない場合は、あなたのように新しいレコードを作成してください。

$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')"); 
} 
+0

ありがとうございます。 – Amal

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 
} 
+0

私はそれをしなかったが、何も同じメールが – Amal

+0

@Amal再び繰り返されるが起こっていない、私は問題を参照してください、あなたは電子メールvarialbleの設定を解除する必要があります。私の編集を参照してください – Ibu