프로필
관심블로그로등록하기
페이의지 맨위로
이전 페이지로
첫페이지로
다음 페이지로
댓글창으로
rss로 보기
방명록 / 메모

Boundless Chronicle ~ ♬

일단 본목적은 이게 아니었지만, 여러모로 배웠습니다.

먼저, http 프로토콜로 form 의 데이터를 보내는데는 GET, POST 방식이 있는데,
흔히들 브라우져로 접속하실때 domain/filename.ext?abc=123

위의 볼드된 부분처럼 직접적으로 매개변수를 부여 하는 경우에 GET 방식이 사용된다고 합니다.
소켓을 사용하기 위해 살펴보고 문의해 보니, 보안상 문제도 있고 해서 php 로 짜여진 문서에서 대부분 GET 방식을 사용하지 않는다고 합니다.

보통 변수를 받아올때, php 버젼이 상당히 높을경우엔 $abc 에 '123' 이라는 스트링이 저장되어 있겠지만, 하위 버젼에서는 직접 받아줘야 하더군요.
받는 방법은 다음과 같습니다. $abc = $_GET['abc'];

post 방식은 따로 브라우져 에서 뭔가를 한다고 적용되는 방식은 아니었습니다.

<form action="object" method="POST" enctype="multipart/form-data">
<input type="text,file,hidden,password" name="var" value="value">
<textarea name="var">value</textarea>
<input type="submit">
</form>

위에서 처럼, 녹색 부분의 method="post" 에서 주고받는 방법을 적용시켜야 하는데, 저 값이 null(빈값) 일경우엔 GET 으로 처리되는것 같더군요.
(이건 확인해보지 못했습니다.)

또 본론과는 무관하지만 파란부분의 enctype="multipart/form-data" 는 데이터의 전송 형식이라고 합니다.
종류에는 text/plain 과 multipart/form-data 의 두가지 종류가 있었습니다.
text/plain 는 데이터를 플레인 텍스트로 전송합니다, action 으로 전송할곳을 메일주소로 지정했을때 이 형식을 선택하면 데이터를 텍스트 그대로 전송할수 있다고 하네요.
multipart/form-data 는 마찬가지로 데이터를 멀티파트 데이터로 전송한답니다. 입력된 데이터가 독립된 파일로 전송되는데, 제가 이것을 쓴것은 파일을 바이너리 데이터로 전송을 해야 했기 때문이었습니다.
(이거 찾는데만 2시간정도를 소모한듯 하네요, 뭔지를 몰랐거든요 ..)

무엇보다 text/plain 의 경우이건 multipart/form-data 의 경우이건간에, 대상이 메일일 경우에는 브라우져의 영향을 심하게 받는다고 합니다.
혹여나 사용중이신분들은 CGI 프로그램을 사용하는게 낫다고 합니다. CGI 프로그램을 이용할경우 기본적으로 enctype 의 지정은 필요없다고 하네요.

다시 본론으로 돌아가서, 위의 input 태그의 type 은 크게 두가지로 나뉘어진답니다.
첫째로, 데이터를 보유할수있는 단지 역할을 하는 text,file,hidden,password 과, 전송을 시키는 단추 역할을 하는 submit 이었습니다.
text 는 말그대로 value 값으로 가진 스트링을 action 으로 전송하게 됩니다.
file 의 경우에는 파일을 선택할 수 있게 되는데, 제가 원하는게 여기에 들어있더군요. 바이너리 데이터 전송. 본래 바이너리와는 무관한듯 합니다만, 제가 추구하는것이 바이너리 데이터를 전송함과 마찬가지로 이것을 구현해 내는것이니까요. 아무튼 선택된 파일은 text 와 마찬가지로 파일 자체가 날아가게 됩니다.
hidden 의 경우는 조금 특별합니다. 이 hidden 는 다른 타입과 다르게 스트링을 적을 곳이 노출되지 않습니다. 때문에, 값을 숨겨서 전달시켜야 할경우에 value 값을 임의로 정해주고 사용하는듯 합니다. 다른것은 text와 모두 같습니다.
password. 이것역시 특별합니다. 말그대로 password 를 쓸수있는 텍스트박스를 생성해 냅니다. 이곳에 입력하는 문자열은 text 와 마찬가지로 모두 전송 되지만, 보기에 ●●●●●●● 처럼 문자열이 보이지 않습니다.
(감추는 문자열은 직접 지정할수도 있다고 합니다.)
마지막으로 submit 은, 위에서 입력한 모든 데이터를 action 으로 넘겨주는 시발점의 단추 역할을 합니다. 예를들자면 흔히들 보실수 있는 '전송' 버튼이 바로 그 submit 입니다.

위의 소스를 보면 input 태그 말고도 textarea 태그가 있습니다. 이것은 input 태그와는 조금 틀립니다.
뭐가 틀린지는.. 저도 모릅니다. 그냥 생긴게 틀리고 뭔가가 있을법합니다. 이것은 나중에 제대로 알아봐야겠습니다.

다시 post 관련으로 돌아가겠습니다.
POST 형식의 데이터를 받아오는 방법은 GET 과 비슷합니다. php 에서는 $var = $_POST['var']; 입니다.

GET 과 POST 모두 수용할수 있는 방법이 있더군요. $var = $_REQUEST['var']; 이네요.
이방법은 편할수도 있겠지만, 위험할수도 있으니 조심해야겠습니다.

이렇게 장황하게 포스팅을 작성했지만, 결국 제가 원하는 소스를 짤수는 없었습니다. 아무래도 실력이 부족한 탓이겠지요.
롤모델은 http://cube.monodiary.net/76 입니다.
POST 형식으로 저 위의 작업과 동일한 일을 처리할수 있는 mirc 스크립트를 짜실수 있는분은 도움좀 주세요 :)
부탁합니다.

Special Thanks.
<AmOuR^회사> 평화 // rfc 보면 http 규약 나와있으니 / 그거 참고해서 만드시면 되실거 같네요 / 그리고 파일 올리기는 / 바이너리로
<이아우> POST방식이 궁금하신거면 소켓보단 / HTTP 1.1 문서보시면 빠를듯 / POST는 GET으로 보낼때 / GET http://~~ 부분을 / POST http://~~ 으로 바꾸고 / 보낼 파라미터를.. / POST 보낼때 주의할점은 / Content-length 값만 / 잘 챙겨주시면됩니다
<Enchant> http://www.mircscripts.org/comments.php?cid=2547 / 요거 참고해보시길..

모두 정말 감사합니다. ^^
태그 : get,html,HTTP,mIRC,post
카테고리 : marking/for-me
날짜 : 2010/02/08 22:03
트랙백 주소 :: http://cube.monodiary.net/77/trackback/
덧글 2개! 하나 달아 주세요~
옵션
댓글 달기
  1. 답글수정삭제 2010/02/08 22:23 이아우

    '너무 mirc 스크립트로 어떻게 구현해야 하냐'에 머리를 싸매고 계신거 같네요.
    그냥 일반적인 소켓통신과 똑같이 구현하시면 됩니다.
    http://www.faqs.org/rfcs/rfc2616.html
    rfc 문서를 참고하시는게 빠를거 같습니다.

    • 수정삭제 2010/02/08 22:27 평화

      감사합니다.
      어떻게 구현해야 하냐에 머리 싸매고 있는것은 맞는것같습니다.
      다만, 지금까지 해왔던것처럼 스크립트 다 짜고 테스트를 해보면, 연결까지는 잘 되지만 값이 잘 안넘어가서 계속 그쪽맞 찾아다닌것 같네요. 좀더 넓게 봐야겠습니다.

T5553 - T55 - Y74





KUNASkin 09R6.5 SE Released by L a i n, KUNA, Contents by KUNA. All rights Reserved.



로딩중입니다. 잠시만 기다려 주세 요...