CS/데이터베이스

20240417 DB

싹난 감자 2024. 4. 17. 15:06

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