-1

我制作了一个应用程序,其中的场景如下:用户可以注册,注册信息会发送到 PHP 服务器并存储在 MySQL 数据库中。这是我的 PHP 文件:

 <?php

  // Check if he wants to login:
  if (!empty($_POST[username]))
  {
    require_once("connect.php");

    // Check if he has the right info.
    $query = mysql_query("SELECT * FROM gen_users
    WHERE username = '$_POST[username]'
    AND password = '$_POST[password]'")
    or die ("Error - Couldn't login user.");
    $row = mysql_fetch_array($query)
    or die ("Error - Couldn't login user.");
    if (!empty($row[username])) // he got it.
    {
      echo "success";
      exit();
    }
    else // bad info.
    {
      echo "comes in else part";
      exit();
    }
  }
?>

如果我输入与 MySQL 数据库匹配的用户名和密码,那么它会向 Android 类抛出“成功”一词,并将在应用程序中走得更远。我的应用程序中有一个注册人员的显示列表视图。

我怎么知道现在有多少人在使用我的应用程序?在应用程序中登录的人将在列表视图中显示为绿色图像,其他人将显示为红色图像。

我怎样才能做到这一点?

4

2 回答 2

2

除了@GlaciesofPacis 回答,您还可以执行以下操作之一:

  1. 每隔一段时间向服务器发送一个请求,并检查谁在线或不在线。
  2. 您可以使用客户端-服务器机制——它更复杂但更高效和优雅——并在某些客户端现在关闭或打开时使服务器推送到所有在线客户端。

我真的不知道你的应用程序应该做什么,但选项 2 - 在我看来 - 值得努力工作..

链接:

  1. php 中的套接字服务器介绍
  2. java中的socket服务器介绍
于 2012-09-18T14:31:51.123 回答
1

尝试在您的用户表中添加一个关于登录状态的列(tinyint(1),因为它是一个 MySQL 表)。它将填充为 0(表示已注销)或 1(已登录)。登录后,需要在数据库中将该值设置为 1,并在您的注销功能中设置回 0。这样,您可以使用类似于以下内容(假设使用 User 对象):

<?php
$users = getUsers();
foreach($users as $user)
{
    $display = "";
    if($user->isLoggedIn())
    {
        $display .= '<img src="green.png" alt="Logged In" />';
    }
    else
    {
        $display .= '<img src="red.png" alt="Logged Out" />';
    }
    $display .= $user->getUsername().'<br />';
    echo $display;
}
?>

更改表的 SQL 命令:

ALTER TABLE gen_users ADD COLUMN loggedin TINYINT(1) DEFAULT 0;
于 2012-09-18T14:26:27.650 回答