2013-08-18 31 views
0

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

  1. 用户名是REAL。
  2. 用用户名列出的密码匹配。
  3. 用户已购买游戏(对/错)AKA是用户溢价?

它与使用PHP和HTML网站的工作。当用户创建一个账户时,它将被存储在网站和游戏服务器本身中。另外,如果游戏有更新,它会通过从服务器获取文件自动更新自身。

的概念是相当类同游戏一样,我的世界和星际2

回答

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一个等

如果您想与URL中的详细信息Java,可以找到here。或者如果你想了解更多关于PHP Mysqli的信息,你可以得到here,或者用你自己的软件包替代PEAR。

1

你可以建立一个PHP Web服务并建立一个Java Web服务客户端。使用休息也是一种选择。

你可以建立一个PHP套接字服务器,并连接到插座。

你可以建立一个PHP页面和一个Java的HttpClient。

我会确保它是某种加密。

+0

因为我几乎还处于规划一个小白,我do't很明白这一点非常好。 :( –