CGI와 HTML

절차탁마의 이미지

요즘 CGI를 공부하고 있습니다.
예제를 보면 CGI가 전부 HTML을
출력하는것으로 나오는데요.

포탈 같은 큰 사이트에서는
CGI에서 한페이지 전부를 출력하는지요?

아니면 일부만 하고 C에서 #include 하는
방식으로 하는지요?

알려주시면 고맙겠습니다.^^

익명사용자의 이미지

CGI 는 웹서버와 사용자가 페이지를 요청했을 때 동적으로 제공할 정보를 다른프로세스가 제공할 수 있도록 통로를 열어주는거 아니겠습니까? 그러니, CGI는 단순한 통로입니다. 표준I/O 와 환경변수라는 통로에 세분화된 값확인 뭐 그런건데 그건 공부하시면서 보셨을 것이고.

그리고, 통로는 한번 열리고 닫히면 끝입니다. html 파일을 직접 access 하는 경우 html 은 하나의 파일이듯이 cgi 를 통해 요청하면 해당 요청을 받은 프로세스는 한페이지를 제공해야할 책임이 있습니다. 하지만, cgi를 통해 요청하는게 html 만 되는게 아닙니다. 반환하는 결과는 content-type 으로 image가 될수도 있고 xml 이 될 수도 있고 application 이 될수도 있습니다.

그리고, cgi는 통로일 뿐입니다. 그 뒷단에서 include를 하던 다른 프로세스를 호출하던 뭘 하던 상관없습니다. 뒤에 요구하는 작업에 따라 구현됩니다.

일반 대형 포털은 CGI 거의 안 씁니다. CGI 에서 발전 혹은 변형된 Php, Servlet, Jsp 그리고 Ejb 등. CGI 만 보면 Fast-CGI. 다 CGI와 일맥상통합니다.

익명사용자의 이미지

오.. 이런 제가 asp 나 asp.net 을 빠뜨렸네요. ms 진영은 asp 나 asp.net이 cgi 를 대체하죠.

절차탁마의 이미지

답변 고맙습니다.^^

제가 여기에 질문한 이유는 CGI inteface에 대한것은
아니었구요.^^

CGI 출력(C, php, ...)이 html을 출력할때 template html에서
데이타 부분만 출력했으면 합니다. template html은
프로그램 외부에 있고요. 이게 가능한지요?

익명사용자의 이미지

질문하신 요지가 정확히 이해가 되지 않지만,.. -.-; 질문을 이해한 대로 답변을 드리면

template html 내 중간중간 체워넣을 데이터 위치에 %요건호호% %요건하하% 라고 비슷하게 잡아 두실거고.
cgi 프로그램에서 요청의 파라메터를 보고 %요건호호% %요건하하% 부분에 체워넣을 데이터를 만듭니다.
그리고, 데이터를 채운후에.. 완성된 통짜 html 데이터를 반환해야 합니다.

뭐가 template의 골격이고 뭐가 채워진건지는 변화되는 부분이겠죠.

html 을 요청했으면 html 전체의 결과를 생성해서 반환해야할 책임이 cgi 프로그램에 있습니다.

설명드린건 순수 cgi 측면이고, 그걸 php 로 구현한다면 php 페이지자체가 로직도 가지고 있고 템플릿 html 폼도 가지고 있죠.
여기서 폼이랑 로직이라고 말씀 드렸죠?.. 요게.. jsp 는 페이지 내에 폼과 로직을 가지고 있고. asp.net 같은 경우 해당 사이트 전체로직을 하나의 dll이 가지면서 폼은 aspx에 저장합니다. aspx를 요청하면 dll 로직도 함께 해석되어서 전체 html 데이터를 반환해줍니다.

뭐 설명할 필요없는거 까지 말씀드렸는데, 설명하다보면 내용은 끝도 없기 땜에 ㅡ.ㅡ;;

원하는 내용이 설명이 되었나요? (질문을 정확히 이해했나 모르겠네요)

절차탁마의 이미지

맞습니다.^^

결론은 로직하고 폼을 다 가지고 있어야 한다는걸로
이해가 되네요.

asp.net이 좋은것 같군요. 프로그래머 입장에서는
폼이 분리되있어서 폼을 신경쓸 이유가 없으니..

C로 하다보니 html하고 code하고 같이 있으니
보기 않좋아서(html을 잘몰라서) 질문을 드렸습니다.

답변주셔서 고맙습니다.

ㅡ,.ㅡ;;의 이미지

혹시 이런거?

http://cldp.co.kr/list/kwlist.cgi?proc=html&html_name=./doc/라이브러리/Kweb_library_예제.doc

----------------------------------------------------------------------------
C Library Development Project


----------------------------------------------------------------------------

익명사용자의 이미지

그리고 질문을 보니, 약간 혼동하시는게 있으신거 같아서 (아닐수도 있지만)
사용자가 무엇을 요청합니다. 무엇은 http url 입니다. url 이 cgi를 가르키나요? templete html 을 가르키나요?
template html 을 가르키면 파일만 웹서버가 반환하면 끝입니다.

그럼.. 템플릿이라 했으니 안에 뭔가 채워넣어야 할 게 있다는 말이죠? 그걸 frame을 나눠서 frame의 소스는 cgi 의 url을 지정할 수 있습니다. 또는.. img 참조를 특정 cgi url로 지정할 수 있습니다.

하지만 요청한 url 이 cgi 라면?.. 바로위 답변처럼 템플릿 html의 내용을 읽어서 부가적으로 채울껀 채워서.. 완전한 결과물을 cgi가 반환해야할 책임이 있습니다.

요청이 템플릿 html 이고 내부 url 가 cgi 면 cgi 는 내부 url의 종류에 맞는 데이터를 만들어 보내야 하는거죠.

cgi 일 경우는 템플릿 페이지와 동적으로 처리하는 로직이 구분이 되지만, php 또는 jsp 는 그게 한몸이 될수도 있고요. cgi 역시 template html 정보를 cgi 로직내에 가지고 있다면 cgi 만 호출하게 되겠죠.

결론은 요청한 url 가 있다면, 그 url이 완성되야 할 정보는 받는애가 모두 만들어야 합니다.

단, html 은 여러가지 정보로 구성되죠. html의 text 정보는 모두 만들어야 하지만, html 내 url로 추가적으로 작성되는 정보는 물리적으로 분리되니 그 url 말고 데이터까지 요청시 제공해야할 필요는 없겠죠.

... 역시 질문의 요지를 정확히 모르니 이것저것 설명을 하게 되는군요.

죠커의 이미지

가능합니다. 보통 CGI를 하신다면 PERL을 이용하는데 PERL이 외부 파일 처리하는 것이라고 보시면 됩니다.

- CN의 낙서장 / HanIRC:#CN

ironiris의 이미지

질문에 대한 답변이라면 cgi 가 어떤 역할을 하느냐에 따라 틀리지요.
html문서를 보여줘야 하는 것이라면 html문서를 출력하면 되고
이미지를 보여줘야 한다면 이미지 데이터를 출력하면 되는 것입니다.

전에 만든 메일수신확인 이미지를 이렇게 보여줬던 기억이 있네요.
cgi호출을 받으면 여러 정보를 취합해서(위험한 행동일지도..) 1x1 짜리 gif이미지를 보내줬습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.