루비 CGI 프로그래밍
루비, 웹 응용 프로그램 및 웹 도구 가장 일반적인에서뿐만 아니라 웹 개발 언어에 사용 하나,하지만 루비 개발 보편적 인 언어입니다.
뿐만 아니라 당신은 당신의 자신의 SMTP 서버, FTP 프로그램, 또는 루비 웹 서버를 작성하는 루비를 사용할 수 있지만 또한 루비 CGI 프로그램을 사용할 수 있습니다.
의 편집 루비 CGI를 배울 수있는 시간이 걸릴 수 있습니다.
웹 브라우징
더 나은 CGI 작동 방식을 이해하기 위해, 우리는 프로세스의 웹 페이지 또는 URL에 링크를 클릭 할 수 있습니다 :
- 하나는 HTTP 웹 서버에 URL에 액세스하여 연결하는 브라우저를 사용합니다.
- 도 2를 참조하면, 웹 서버는, 그렇지 않으면 에러 메시지를 반환 요청 메시지는 URL을 해석하고 파일의 내용을 리턴 있다면,이 경우 서버에 액세스 한 파일을보고한다 수신한다.
- 도 3을 참조하면, 브라우저는 서버로부터 정보를 수신하고, 수신 된 파일 또는 에러 메시지를 표시한다.
CGI 프로그램은 루비 스크립트, 파이썬 스크립트, PERL 스크립트, 쉘 스크립트, C 또는 C ++ 프로그램이 될 수 있습니다.
CGI 차트
웹 서버 구성 및 지원
당신이 CGI 프로그래밍을 수행하기 전에 웹 서버가 CGI 및 CGI 처리기를 지원하도록 구성되어 있는지 확인하십시오.
아파치는 CGI 구성을 지원합니다 :
는 CGI 디렉토리를 설정합니다 :
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
CGI 프로그램을 실행하는 모든 HTTP 서버에서 사전 구성된 디렉토리에 저장된다. 이 디렉토리는 CGI 디렉토리라고하며, 규칙에 따라, 그것은는 / var / www /에서의 cgi-bin 디렉토리 지정됩니다.
CGI 파일은 확장자가 .cgi, 루비는 .rb 확장을 사용할 수 있습니다.
기본적으로 CGI-bin 디렉토리를 실행하는 리눅스 서버 구성은 / var / www가있다.
당신이 CGI 스크립트를 실행하려면 다른 디렉토리를 지정하려면 다음과 같이 당신은 httpd.conf 구성 파일을 수정할 수 있습니다 :
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory>
우리는 루비 스크립트 파일의 .rb 끝을 액세스 할 수 있도록, .rb 접미사 AddHandler에 추가 :
AddHandler cgi-script .cgi .pl .rb
CGI 스크립트를 작성
기본 루비 CGI 코드를 다음과 같이 :
#!/usr/bin/ruby puts "Content-type: text/html\n\n" puts "<html><body>This is a test</body></html>"
당신은 파일 서버를 test.cgi하는 코드를 유지할 수 있습니다 마지막은 CGI 스크립트로 수행 할 수있는 권한을 부여 할 수 있습니다.
주소가 http://www.example.com/ 프로그램에 액세스하는 데 사용 http://www.example.com/test.cgi로 서있는 경우, 출력은 : "이것은 테스트입니다.".
웹 사이트에 액세스하는 브라우저는 웹 서버 사이트 디렉토리 test.cgi 파일을 찾을 것이며, 다음 HTML 문서에 액세스하여 루비 인터프리터 스크립트 코드를 해결하기.
사용는 cgi.rb
루비는 더 복잡한 CGI 스크립트를 작성하는 CGI 라이브러리를 호출 할 수 있습니다.
다음 코드는 CGI 스크립트를 생성하는 CGI 스크립트 라이브러리를 호출합니다.
#!/usr/bin/ruby require 'cgi' cgi = CGI.new puts cgi.header puts "<html><body>This is a test</body></html>"
다음 코드는 CGI 객체 및 인쇄 헤더 정보를 생성합니다.
양식 처리
사용 CGI 라이브러리는 URL :? /cgi-bin/test.cgi FIRSTNAME = 자라 & 성 = 알리와 같은 데이터 (URL에 또는 매개 변수)이 양식을 제출하는 방법에서 얻을 수있다.
당신은 [] 직접 매개 변수 이름 및 성을 얻으 CGI 번호를 사용할 수 있습니다 :
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi['FirstName'] # => ["Zara"] cgi['LastName'] # => ["Ali"]
폼 데이터를 획득하기위한 또 다른 방법에있어서,
#!/usr/bin/ruby require 'cgi' cgi = CGI.new h = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]} h['FirstName'] # => ["Zara"] h['LastName'] # => ["Ali"]
다음 코드는 모든 키를 검색하는 데 사용됩니다 :
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi.keys # => ["FirstName", "LastName"]
양식이 동일한 이름의 여러 필드가 포함되어있는 경우, 다음 같은 필드의 값은 배열에 저장됩니다.
다음의 예는, "이름"3 개의 동일한 필드의 형태를 지정, "자라", "휴마"와 "Nuha"의 값 :
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi['name'] # => "Zara" cgi.params['name'] # => ["Zara", "Huma", "Nuha"] cgi.keys # => ["name"] cgi.params # => {"name"=>["Zara", "Huma", "Nuha"]}
주 : 루비 자동 GET 및 POST 방법을 결정하는 것, 두 방법을 구별 할 필요가 없다.
여기에 관련 HML 코드는 다음과 같습니다
<html> <body> <form method="POST" action="http://www.example.com/test.cgi"> First Name :<input type="text" name="FirstName" value="" /> <br /> Last Name :<input type="text" name="LastName" value="" /> <input type="submit" value="Submit Data" /> </form> </body> </html>
작성 양식 및 HTML 양식
CGI는 HTML을 생성하는 방법은 많이, 각 HTML 태그에 대응하는 방법이 포함되어 있습니다. 이 방법을 사용하기 전에, 비는 CGI.new 객체를 생성하는 CGI해야합니다.
라벨 더 간단한 중첩을하기 위해,이 방법은 코드 블록으로 만족되며, 코드 블록은 콘텐츠 라벨 등의 문자열을 반환한다. 다음과 같습니다 :
#!/usr/bin/ruby require "cgi" cgi = CGI.new("html4") cgi.out{ cgi.html{ cgi.head{ "\n"+cgi.title{"This Is a Test"} } + cgi.body{ "\n"+ cgi.form{"\n"+ cgi.hr + cgi.h1 { "A Form: " } + "\n"+ cgi.textarea("get_text") +"\n"+ cgi.br + cgi.submit } } } }
문자열 탈출
(/) 슬래시 인용 부호 ( ") : 당신이 URL 또는 HTML 양식 데이터의 매개 변수를 처리 할 때, 당신은 탈출을 같은 특수 문자를 지정해야합니다.
루비 CGI 개체는 이러한 특수 문자를 이스케이프 처리하는 이는 cgi CGI.unescape 및 방법을 제공한다 :
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
다음과 같이 위의 코드가 실행된다 :
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
예제의 또 다른 세트 :
#!/usr/bin/ruby require 'cgi' puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
다음과 같이 위의 코드가 실행된다 :
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
CGI 클래스 메서드는 일반적으로 사용되는
여기에 루비 CGI 클래스의 완전한 방법입니다
- CGI 루비 - 표준 CGI 라이브러리와 관련된 방법
쿠키 및 세션
- 는 CGI 쿠키 루비 - CGI 쿠키를 처리하는 방법에 대해 설명합니다.
- 는 CGI 세션 루비 - CGI 세션을 처리하는 방법에 대해 설명합니다.