Unityでシステムを開発しています。
現在、ログイン機能をつけようと考え、多々のサイトを参考にやってきましたが、どうしても実現できなく、行き詰ってしまいました。
進捗としては、Unityでログイン画面を作りました。画面にはユーザ名とパスワードを入力する
InputFieldとログインボタンを用意しました。
ユーザ名とパスワードを入力後、ログインボタンを押すと、InputFieldに入力された値と、あらかじめMySQLに登録したユーザデータが一致していれば、次のシーンに移行する機能を作りたいと考えています。
作るうえで分からないことは、InputFieldに入力した値をMySQLにあるユーザデータとどのように照合するのかということです。
初めての利用、質問であるため、拙い文章ですみません…
まだUnityやMySQLは使い始めたばかりの初心者なので、至らない点ばかりですが、お力をお借りできないでしょうか。
よろしくお願いします。
後日、sakura_hanaさんからの回答を参考に挑戦してみましたが、Unityから送ったデータとMySQLに登録したデータとの照合を終えた後の処理で行き詰ってしまいました。そこまでのソースを以下に示しますので、間違い等あれば、ご教授お願いできないでしょうか。
1.Unity:InputFieldに入力した値をPHPにPOSTする
C#
1using UnityEngine; 2using System.Collections; 3using UnityEngine.UI; 4 5public class SubmitManager : MonoBehaviour 6{ 7 string str1; 8 string str2; 9 public InputField inputField1; 10 public InputField inputField2; 11 12 public void OnClickButton() 13 { 14 StartCoroutine(Connect()); 15 } 16 private IEnumerator Connect() 17 { 18 string url = "http://localhost/unity/unity_text.php"; 19 str1 = inputField1.text;//入力されたユーザ名を格納 20 str2 = inputField2.text;//入力されたパスワードを格納 21 WWWForm form = new WWWForm(); 22 form.AddField("Text1", str1); 23 form.AddField("Text2", str2); 24 WWW www = new WWW(url, form); 25 yield return www; 26 27 if (www.error == null) 28 { 29 Debug.Log("WWW Submit Ok!: " + www.text); 30 } 31 else 32 { 33 Debug.Log("WWW Submit Error: " + www.error); 34 } 35 36 } 37}
2.PHP:POSTされたデータを元にデータベースを照合する
PHP
1<?php 2// 接続情報 3$servername = "localhost"; 4$username = "root"; 5$password = "hogehoge"; 6$dbname = "example"; 7// インプット値 8$i_name = (string)filter_input(INPUT_POST, 'Text1'); 9$i_pass = (string)filter_input(INPUT_POST, 'Text2'); 10 11try { 12 // DB接続 13 $pdo = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password); 14 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 15 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 16 // SQL発行 17 $stmt = $pdo->prepare("SELECT * FROM userdata WHERE name = ? AND password = ?"); 18 $stmt->bindValue(1, $i_name); 19 $stmt->bindValue(2, $i_pass); 20 $stmt->execute(); 21 // 結果の取得 22 if($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 23 echo $row['name'] . " collation is complete!"; 24 }else{ 25 echo "no user or no password"; 26 } 27} 28catch(PDOException $e) { 29 echo "Connection failed: " . $e->getMessage(); 30} 31// DB切断 32$pdo = null; 33?>
ここまでのコードにより、UnityのInputFieldに入力した値がMySQLのデータと照合して、合っていたらUnityのログに、WWW Submit Ok!: (ユーザ名) collation complete!表示されます。
ユーザ名とパスワードが照合できた場合、Unityでは次の画面に遷移し、できなった場合は画面の遷移をしないという処理を行いたいのですが、どのようなソースコードを書けばいいのかわかりません。
(参考サイトをみると、JSONで値を返すという記事を見つけたので、JSON形式で値を返す場合は、MINIJsonを用いようかと考えています。)
説明が分かりづらく、すみません…
ご協力お願いできないでしょうか。
よろしくお願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/26 13:02