0

我目前正在开发Java游戏。我将用游戏本身创建一个启动器,并用一些 .exe 包装器包装它。我需要帮助的是让游戏连接到某种服务器并检查用户的凭据是否为真:

  1. 用户名是真实的。
  2. 密码与列出的用户名匹配。
  3. 用户已购买游戏(真/假)AKA 是用户溢价吗?

它必须与使用 PHP 和 HTML 的网站一起使用。当用户创建一个帐户时,它既存储在网站中,也存储在游戏服务器本身中。此外,如果游戏有更新,它会通过从服务器获取文件来自动更新自己。

这个概念与 Minecraft 和 Planetside 2 等游戏非常相似。

4

2 回答 2

1

您可以构建一个 php webservice 并构建一个 java web-service 客户端。使用休息也是一种选择。

您可以构建一个 php 套接字服务器并连接到该套接字。

您可以构建一个 php 页面和一个 java httpclient。

我会确保它以某种方式加密。

于 2013-08-18T16:39:22.880 回答
1

根据您需要的交互的复杂性或级别,这可以通过简单的方式来完成,例如向 Web 服务器上的特定页面发出 GET 请求,并在查询字符串中提供必要的信息(或者您可以使用 POST)。

// Construct the query string with the proper username and password
URL url = new URL("http://www.yoursite.com/verify.php?username=happy&password=pants");
try (BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()))) {
    StringBuilder sb = new StringBuilder();
    for (String s; (s = in.readLine()) != null;)
        sb.append(s);
    switch (sb.toString().trim()) {
    case "welcome": 
        JOptionPane.showMessageDialog(null, "Welcome!");
        // Proceed to game
        break;
    case "shut up and pay me":
        JOptionPane.showMessageDialog(null, "You owe me money first!");
        break;
    case "no such user":
        JOptionPane.showMessageDialog(null, "Go away!");
        // Recursively delete all their files...
        break;
    }
}

verify.php 有一些 PHP 代码,看起来像

// Set up database stuff...

// Query the database
$query = sprintf("SELECT * FROM friends users WHERE username='%s' AND password='%s'",
         mysqli_real_escape_string($_GET["username"]),
         mysqli_real_escape_string($_GET["password"]));

if (($result = mysqli_query($query)) && ($row = mysqli_fetch_assoc($result))) {
    if ($row["license"] == "premium") {
        echo "welcome";
    } else {
        echo "shut up and pay me";
    }
} else {
    echo "no such user";
}

但这只是您可以做什么的一个非常基本的示例,不应逐字逐句地遵循。您可能不应该通过 URL 的查询字符串传递这些值(这里可能更喜欢 POST 而不是 GET),最重要的是,您也不应该以纯文本形式存储或传递密码(即,首先对其进行哈希处理)使用MD5、 SHA1 或您选择的其他哈希)。我这样做只是为了简单。

对于更复杂的事情,您可能需要您已经获得的其他方法之一,例如使用socketsweb services等。

如果您想了解有关在 Java 中使用 URL 的更多信息,可以在此处找到。或者,如果您想了解有关 PHP 的 Mysqli 的更多信息,您可以在此处获取,或者替换您自己选择的包,例如 PEAR。

于 2013-08-18T22:21:48.900 回答