Unity json 설치
패키지 매니저 왼쪽 + 클릭, add pakage by name으로 com.unity.nuget.newtonsoft-json 설치
xampp의 htdocs 폴더가 서버. 그 안에 php 파일을 넣어두어야함
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Login : MonoBehaviour {
private string loginUri = "http://127.0.0.1/login.php";
void Start() {
StartCoroutine(LoginCoroutine("Kim", "9999"));
/*Debug.Log(System.DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss"));
Debug.Log(System.DateTime.Now.ToString("yyyy-mm-dd-hh-mm-ss"));*/
}
private IEnumerator LoginCoroutine( string _username, string _password ) {
// 패킷 구성
WWWForm form = new WWWForm();
//form.AddField("Key", Value);
//DB에서 찾을 때 Key로 찾음. 짧은게 빠름
form.AddField("loginUser", _username);
form.AddField("loginPass", _password);
//UnityWebRequest.Post(주소, 보낼 내용)
using (UnityWebRequest www = UnityWebRequest.Post(loginUri, form)) {
yield return www.SendWebRequest(); // 코루틴임. 통신 결과가 도착할때까지 기다림
// 옛날방식 이제 안씀 if (www.isNetworkError || www.isHttpError) {
// 아래처럼 바뀜
if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError) {
Debug.Log(www.error);
} else {
// DB로 데이터가 오거나 갈때 문자열로 쭉 나열해서 옴. 직렬화
// 알아볼 수 있도록 풀어쓰는게 역직렬화
// JSON은 직렬화, 역직렬화를 자동으로 해줌
Debug.Log(www.downloadHandler.text);
}
}
}
}
<?php
$servername = "localhost:3306"; // localhost 대신 ip 주소 써도 됨 뒤에 포트 번호는 xampp의 MySQL 포트 번호
$username = "root";
$password = "";
$dbname = "db_login";
$loginUser = $_POST["loginUser"]; // 데이터를 받으면 _POST에 저장됨 []안의 키가 UnityWebRequest에서 데이터를 보낼 때 적었던 Key와 같아야함
$loginPass = $_POST["loginPass"];
//conn 통신 성공 여부가 저장됨
$conn = new mysqli($servername, $username, $password, $dbname);
/*if($conn->connect_error) {
die("connection failed: " .$conn->connect_error);
}*/
$sql = "SELECT * FROM tb_user WHERE id = '" .$loginUser. "'";
$result = $conn->query($sql);
// $sql에 넣은 쿼리문을 실행한 결과가 $result에 저장됨
if($result->num_rows > 0) {
// result에 저장된 결과들을 한줄씩 꺼내서 row에 저장함
while($row = $result->fetch_assoc()) {
// 결과중에 한줄 꺼냈던 row의 pw가 UnityWebRequest로 보냈던 pw의 value와 같으면
if($row["pw"] == $loginPass) {
echo "Login success!!";
/*$time_sql = "SELECT datetime('now', 'localtime')";
$time_result = $conn->query($sql);
$row = time_result;
$conn->close();*/
exit;
}
}
echo "Wrong password..";
} else { // result를 다 검사해도 loginUser와 loginPass에 일치하는 값이 없다면 로그인 실패
echo "ID not found..";
}
$conn->close();
?>
'CS > 데이터베이스' 카테고리의 다른 글
20240417 DB 기초 (0) | 2024.04.17 |
---|