티거쌤 유니티 15강 - 게임서버

구글 크롬 웹 앱 -> php 테스트 툴 postman 설치 
https://plus.google.com/share?url=https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?utm_source=plus

http://www.apexvj.com/v3/ 비주얼 이제이션 사이트



=====[ P H P ]==============================================================================
서버란? ( 역활적인 의미가 중요. )
서버 - 정보를 제공하는 역할.
클라이언트 - 정보를 제공 받는 역할

소셜서버 - 게임정보를 저장 출력, 갱신 타인의 게임 상태를 받아오거나 하는 웹서버.
웹서버 - HTTP 기반으로 제작된 서버

[ 게임서버 구조 ]

 

[ PHP동작 구조 ]





=====[ 프로그램 설치 ]==============================================================================
윈도우 서버 호스팅 받을것.- 원격호스팅 가능(윈도우 원격 접속 가능)
아래 설치 방식 그대로 웹 접속해서 설치 가능

01. AutoSet910_x32 설치 (AutoSet = APM - Apache & Php & Mysql 한꺼번에 설치해주는 프로그램 )
   - http 프로토콜을 이용하고 80 포트를 사용한다
   - 오토셋 설치 후 웹 서버 실행 
   - 서버 웹 접속 주소 http://127.0.0.1/index.php
  [ 오토셋 홈 디렉토리 찾기 ]
   설정 -> 웹서버 기본설정 -> 폴더 찾기. ( 기본 C:\AutoSet9\public_html )

  (아파치는 리소스 전달자)

02. http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
    - Windows x64 29.79 MB   jre-7u80-windows-x64.exe 설치

03. netbeans https://netbeans.org/downloads/ -> HTML5 & PHP 다운로드 ( php 편집기 )
   
서버 책 추천.
1. 성공과 실패를 결정하는 1% 네트워크 원리 -> html연동부분 보기
2. 웹을 지탱하는 기술
3. HEAD FIRST NETWORKING

=====[ P H P 문법]==============================================================================

<html>
<head>
 <title>  더하기 </title>
</head>
<body> 
 1 + 2 = 
<?php  //php html에서 php 태그 시작 - 요청 -> 연산 -> 출력
 echo 1 + 2; //echo = 출력하라.
?> 

</body>
</html>


넷빈즈 실행 ============

파일 -> 뉴 -> PHP-> PHP applicaction 선택 -> 프로덕트 네임 입력 -> 소스 폴더 선택 ->
좌측 소스 파일스 마우스 우클릭 뉴 -> php 선택 

php 문법은 ' <?php '  로 시작해서  ' ?> '로 끝난다

문자열은 ' ' 를 써도 되고 " " 를 써도 된다. 

http://localhost/ 는 자기 자신의 서버 주소다.


크롬 포스트맨 추가 https://chrome.google.com/webstore/search/postman?hl=ko
https://plus.google.com/share?url=https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?utm_source=plus
추가 후 설치



php - > get 는 보안이 안되며 웹브라우저 주소창에 실제 주소가 보인다.


<?php

    $name = "오크";
    $level = 1;
    $speed = 12.3;
    $hp = 50;
    $damage = 10;
    
    //hp 감소
    $hp = $hp - $damage;
    
    echo 'name : '.$name.', ';
    echo 'level : '.$level.', ';
    echo 'speed : '.$speed.', ';
    echo 'damage : '.$damage.', ';
    echo 'hp : '.$hp;

?>

php는 ' . ' 으로 문자열과 변수를 붙여서 사용한다.



<?php
    // url : http//서버주소//php파일명.php?data키값
    // 서버쪽에서 생성되는 이름 , 값을 지칭하는 키값
    // 클라이언트가 보내준 get 메소드의 데이터를 추출함


$get_data = $_GET["data"]; // $get_data 변수생성후 데이터를 입력 받는다.
 echo 'get data : '.$get_data; // $get_data 변수를 화면에 출력한다.
/*
$post_data = $_POST["data"];
//추출한 데이터를 출력함
echo 'post data : '.$post_data;
 
 */


$mydata = $_GET["data"];
echo '내가 입력한 데이터는 : '.$mydata;

?>

//주소 포함됨 보안에 취약
$mydata = $_GET["get_data"];
echo '내가 입력한 겟 데이터는 : '.$mydata;


//주소 포함안됨 보안에 강점
$mydata = $_POST["post_data"];
echo '내가 입력한 포스트 데이터는 : '.$mydata;
GET 방식
1
2
3
4
5
6
7
<?php
    // URL : http://서버주소/php파일명.php?data=값
    // 클라이언트가 보내준 GET 메소드의 데이타를 추출함
    $get_data = $_GET["get_data"];
    // 추출한 데이타를 출력함
    echo 'get data : '.$get_data;
?>
?
POST 방식
1
2
3
4
5
6
7
<?php
    // URL : http://서버주소/php파일명.php
    // 보내는 데이타는 Body의 form-data에 추가함
    // 클라이언트가 보내준 POST 메소드의 데이타를 추출함
    $post_data = $_POST["post_data"];
    echo 'post data : '.$post_data;

== [ 유니티에서 PHP로 값 넘기는법 ]======================

유니티 -> 캔버스 ->  UI 인풋필드 생성
-> 인스펙터 ->  TEXT 초기 텍스트 설정 할 수 있음.
PLACE HOLDER 초기 텍스트 값.

스크립트 넣고 인풋필드 한번 더 넣는다

Canvas -> InputField -> 인스펙터 -> EndEdit 에 스크립트가 연결된 게임 오브젝트를 집어 넣는다

게임 오브젝트 스크립트 
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class inputmag : MonoBehaviour {
    
    public void OnInputFieldEdata(InputField IF)
    {
        Debug.Log("입력필드값 : " + IF.text);
    }
}
집어 넣은 뒤 InputField인스펙터의 input field(script) 컴포넌트를 한번 더 넣는다.



====================[ 소스 ]========================================

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class inputmag : MonoBehaviour {
 
    public string serverAddress;
    
    public void OnInputFieldEdata(InputField IF)
    {
        StartCoroutine(GetTestCor(IF.text));
        
    
    }
 
 
    IEnumerator GetTestCor(string data)
    {
        //geturl 설정
        string url = "http://" + serverAddress + "/get_dataPhp.php?get_data=" + data;
 
        Debug.Log("입력필드값 : " + url);
 
        //WWW 클라이언트 객체 생성
        WWW wwwClient = new WWW(url);
 
        //전송
        yield return wwwClient;
 
 
        if (wwwClient.error == null)
        {
            Debug.Log("http get result : " + wwwClient.text);
        }
        else
        {
            Debug.Log(wwwClient.error);
        }
 
    }
}
php 아이디 패스워드 만들고
유니티 입력필드 아이디 패스 워드 넣고
버튼 클릭시 로그인 성공 실패 출력


=[c# 코드 ] ==========================================================


using UnityEngine;
using System.Collections;
using UnityEngine.UI;
 
public class mag : MonoBehaviour {
 
    // InputField 형 변수 생성
    private InputField _id;
    private InputField _pass;
 
    // 서버 접속 주소 (인스펙터)
    public string serverAddress;
 
 
 
    public void setid (InputField id)
    {
        this._id = id;        
    }
    public void pass(InputField pass)
    {
        this._pass = pass;
    }
 
 
    public void OnInputField()
    {
        StartCoroutine(inputID());
    }
    
 
    IEnumerator inputID()
    {
        string url = "http://" + serverAddress + "/login.php";
        Debug.Log(url);
 
        WWWForm loginData = new WWWForm();
        loginData.AddField("id_data", _id.text);              
        loginData.AddField("pass_data", _pass.text);
                        
        WWW login = new WWW(url, loginData);     
 
        yield return login;
 
        if (login.error == null )
        {
            Debug.Log("http post result : " + login.text);
        }
        else
        {
            Debug.Log("http post result : " + login.error);
        }
    }
}


=[php 코드 ] ==========================================================

<?php
 
$id = "adepter";
$pass = 1234567;
 
$data1 = $_POST["id_data"];
$data2 = $_POST["pass_data"];
 
$loginOk = "로그인 성공";
$loginBad = "로그인 실패";
 
if($id == $data1 && $pass == $data2){
    echo '로그인 상태 : '.$loginOk;
}
else{
    echo '로그인 상태 : '.$loginBad;
}
 
?>




댓글

이 블로그의 인기 게시물

날짜 시간 시간차 시간 계산 하기

코루틴에서 CallBack 함수 적용하기

C++ 언어 퍼센트 구하는 방법 / 기본 언어 퍼센트 구하는 방법