2013-08-18 67 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很明白這一點非常好。 :( –