루비 CGI 프로그래밍
Ruby는 WEB 개발에만 사용되는 언어가 아닌 보편적인 언어이지만, WEB 애플리케이션 및 WEB 도구 개발에 가장 일반적으로 사용되는 언어입니다.
Ruby를 사용하면 자신만의 SMTP 서버, FTP 프로그램 또는 Ruby 웹 서버를 작성할 수 있을 뿐만 아니라 CGI 프로그래밍에도 Ruby를 사용할 수 있습니다.
다음으로 루비의 CGI 편집에 대해 잠시 배워보겠습니다.
웹 탐색
CGI 작동 방식을 더 잘 이해하려면 웹 페이지에서 링크나 URL을 클릭하는 과정부터 시작해 보세요.
1. 브라우저를 사용하여 URL에 액세스하고 HTTP 웹에 연결하세요. 섬기는 사람.
2. 웹 서버는 요청 정보를 받은 후 URL을 구문 분석하여 해당 파일이 서버에 존재하는지 확인하고, 파일이 존재하면 해당 파일의 내용을 반환합니다. 그렇지 않으면 오류 메시지가 반환됩니다.
3. 브라우저는 서버로부터 정보를 받아 수신된 파일이나 오류 메시지를 표시합니다.
CGI 프로그램은 Ruby 스크립트, Python 스크립트, PERL 스크립트, SHELL 스크립트, C 또는 C++ 프로그램 등이 될 수 있습니다.
CGI 아키텍처 다이어그램
웹 서버 지원 및 구성
CGI 프로그래밍을 수행하기 전에 웹 서버가 CGI를 지원하고 CGI 처리기를 구성했는지 확인하세요.
Apache는 CGI 구성을 지원합니다:
CGI 디렉터리 설정:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
모든 HTTP 서버 실행 CGI 프로그램은 미리 구성된 디렉터리에 저장됩니다. 이 디렉토리를 CGI 디렉토리라고 하며 관례적으로 이름은 /var/www/cgi-bin입니다.
CGI 파일의 확장자는 .cgi이며 Ruby는 .rb 확장자를 사용할 수도 있습니다.
기본적으로 Linux 서버가 실행되도록 구성된 cgi-bin 디렉터리는 /var/www입니다.
CGI 스크립트 실행을 위해 다른 디렉터리를 지정하려면 다음과 같이 httpd.conf 구성 파일을 수정할 수 있습니다.
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory>
AddHandler에 .rb 접미사를 추가하면 .rb로 끝나는 Ruby 스크립트 파일에 액세스할 수 있습니다.
AddHandler cgi-script .cgi .pl .rb
CGI 스크립트 작성
가장 기본적인 Ruby 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를 사용하여 프로그램에 액세스할 수 있습니다. 출력 결과는 다음과 같습니다. 시험. ".
브라우저가 URL에 액세스한 후 웹 서버는 사이트 디렉터리에서 test.cgi 파일을 찾은 다음 Ruby 파서를 사용하여 스크립트 코드를 구문 분석하고 HTML 문서에 액세스합니다.
cgi.rb를 사용하세요
Ruby는 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의 매개변수)에서 데이터를 가져오는 두 가지 방법이 있습니다. 예를 들어 URL:/cgi-bin/test.cgi?FirstName=Zara&LastName=Ali.
CGI#[]를 사용하여 FirstName 및 LastName 매개변수를 직접 가져올 수 있습니다.
#!/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"]
양식에 여러 필드가 포함된 경우 동일한 이름을 사용하면 동일한 필드의 값이 배열에 저장됩니다.
다음 예에서는 세 개의 동일한 필드 "name"이 각각 "Zara", "Huma" 및 "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"]}
참고: Ruby는 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 } } } }
String escape
URL 또는 HTML 양식 데이터의 매개변수를 처리하는 경우 따옴표("), 백슬래시(/)와 같은 지정된 특수 문자를 이스케이프해야 합니다.
Ruby CGI 객체는 이러한 특수 문자의 이스케이프를 처리하기 위해 CGI.escape 및 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>')
실행 결과 위 코드의 다음과 같습니다: r Ruby 표준 CGI 라이브러리의 전체 CGI 클래스에 있는 CGI CGI의 일반적인 메서드 관련 메서드
Cookies and SESSIONS
RUBY CGI 쿠키 - CGI 쿠키 처리 방법 .
Ruby CGI 세션 - CGI 세션 처리 방법.