본문 바로가기

카테고리 없음

2015.1.13 개발일지

반응형


[작업사항]

1. 데이터베이스에 이미지를 저장하는 방식을 이미지 자체가 아닌 경로를 저장하는 것으로 바꾸었다. 

2. 안드로이드에서 데이터베이스의 값을 사용할 수 있는 방식 중에 하나로, PHP파일에서 JSON 인코딩메소드를 사용하여 웹페이지에 JSON포맷으로 출력하는 기능을 구현하였다. 또한, 안드로이드와 GET/POST 방식으로 데이터를 수신하고, 웹페이지에 응답을 해주는 것으로 데이터 송/수신에 대한 시나리오를 결정하였다. 



[작업사항 세부 설명]

1. 데이터베이스에 이미지를 저장하는 방식을 이미지 자체가 아닌 경로를 저장하는 것으로 바꾸었다. -> 데이터베이스 스키마를 수정하였다. 왜냐하면 데이터 송수신량에서 두가지 방법이 큰 차이가 있고, 데이터가 많아질수록, 그리고 커질수록 이 문제가 심화되기 때문이다. 추후에 primary key로 지정된 속성값들을 unique 지정해주어야 한다.

2. 안드로이드에서 데이터베이스의 값을 사용할 수 있는 방식 중에 하나로, PHP파일에서 JSON 인코딩메소드를 사용하여 웹페이지에 JSON포맷으로 출력하는 기능을 구현하였다. 또한, 안드로이드와 GET/POST 방식으로 데이터를 수신하고, 웹페이지에 응답을 해주는 것으로 데이터 송/수신에 대한 시나리오를 결정하였다. -> 하지만, 추측으로 POST방식으로 받는 변수값에 대한 별수할당 문제(시간)가 있는 것으로 추정되어 해당 기능을 구현 중에 있다.


[내일 할 일]

1. 안드로이드에서 JSON형식의 데이터를 받을 수 있게 PHP에서 프로그래밍이 제대로 동작하도록 작업할 것이다. 현재 안드로이드로부터 정상적으로 메시지가 수신되고 PHP 페이지에서 그 값들을 변수에 넣는 것까지 확인하였다. 즉, 코드상에서 에러는 없지만 안드로이드에서 반환하기 위한 값들을 페이지에 출력할 수 없고, 전달할 수 없는 문제를 해결할 예정이다.


[참고사항&어려웠던 점]

데이터베이스의 스키마를 수정하기 전에 이미지를 데이터베이스에서 다루기 위한 시도를 하였지만 적당한 방법을 찾지 못하였다. '방법론'이 옳지 못하였기 때문인데 그 코드안에서 Header("Content-type: image/jpg"); 에 대한 내용이 어려웠다. Header("Content-type: image/jpg"); 는 서버가 클라이언트에게 보내주는 헤더(메시지)이다. 메시지의 내용은 이미지이고, jpg 형식이라는 것을 알려주는 특수한 함수이고 제일 위에,공백없이 앞에 위치해야 한다는 규칙을 가지고 있다.

그밖에, 오늘 알게 된 내용으로,

1.<form enctype="multipart/form-data" action="1.php" method="POST">

-> enctype="multipart/form-data" 인코딩타입. 하지 않으면 데이터 전송이 되지 않음.


2.사용자 입력이 아니라 필요에 따라 서버에 데이터를 전송해야할때 hidden 타입


3.<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

-> MAX_FILE_SIZE 데이터 크기 지정인데, value값에 해당하는 데이터를 받겠다. 언제든지 속일 수 있는 값이기 때문에, 사용자가 전송하는 데이터 크기를 '강제'하고 싶다면 php설정쪽에서 해야한다.

이것은 php설정을 변경하기 어려운 경우(호스팅) 사용한다.


4.[move_uploaded_file 함수]


move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)

 1번째 인자 : 파일이 임시로 저장되는 경로

       2번째 인자 : 파일을 실제 이동시킬 경로


리턴값은 true/false 

true 인 경우 보안상 문제가 없어서 업로드에 성공

false인 경우 보안상 문제가 있어서, 혹은 권한이 없어서 업로드에 실패


5.[move_uploaded_file 함수]


$_FILES['userfile']['tmp_name'] -> 업로드된 파일에 대한 정보가 담겨있음, var_dump($_FILES) 결과, 배열이다.


0번 인덱스 -> 'userfile' (배열)

                 -> "name" : 업로드한 파일의 실제 이름

                 -> "type" : 파일의 형식

                 -> "tmp_name" : 클라이언트에서 서버로 파일을 전송할때 임시디렉토리로 무조건 이동하게 됨. 브라우저가 전송한 파일의 서버에 위치하는 임시 디렉토리에 저장

  -> "error" : 에러 사항

  -> "size"  : 업로드된 파일의 크기

"사용자가 보내는 데이터를 담는 변수"


6.json 포맷

php -> db 할때  mysql_real_escape_string()

db  -> php할때  json_encode(배열)

json_decode()  -> php에서 json처리 


mysql_real_escape_string — mysql_query에서 특수 문자열을 이스케이프하기위해 사용

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )

unescaped_string

이스케이프할 문자열.



반응형