Introduction to CGI programming with Ruby _ruby topics

Source: Internet
Author: User
Tags hosting web hosting


To write a CGI script:



The most basic ruby CGI script looks like this:


#!/usr/bin/ruby

puts "http/1.0 OK"
puts "content-type:text/html\n\n" puts "


If you call this script test.cgi upload to a unix/linux web hosting service provider and have the appropriate permissions, you can use it as a CGI script.



For example, if you have a website hosted by a Linux web hosting provider, such as: Http://www.yiibai.com/test.cgi's home directory, and give it permission to execute, then access the http://www.yiibai.com/test.cgi Should return an HTML page display: This is a test.



Here when test.cgi requests from a Web browser, the Web server looks to execute it using the Ruby interpreter. The Ruby Script returns a basic HTTP header, and then returns a basic HTML document.
Use CGI.RB:



Ruby has a special called CGI library that makes more complex interactions than the previous CGI scripts.



Let's create a basic CGI using CGI script:


#!/usr/bin/ruby

require ' cgi '

cgi = cgi.new
puts Cgi.header puts
"


Here, you create a CGI object and use it to print the header row.
Form processing:



There are two ways to access HTML query parameters using the CGI class. Suppose we give a/cgi-bin/test.cgi? Firstname=zara&lastname=ali.



You can access the parameters FirstName and LastName use cgi#[] as follows:


#!/usr/bin/ruby

require ' cgi '
cgi = cgi.new
cgi[' FirstName '] # => ["Zara"]
cgi[' LastName '] # => [ "Ali"]


There is another way to access these form variables. This code gives the hash value of all the items and values:


#!/usr/bin/ruby

require ' cgi '
cgi = cgi.new
h = cgi.params # => {"FirstName" =>["Zara"], "LastName" = >["Ali"]}
h[' FirstName '] # => ["Zara"]
h[' LastName ']  # => ["Ali"]


Here's the code to retrieve all the keys:


#!/usr/bin/ruby

require ' cgi '
cgi = cgi.new
cgi.keys     # => ["FirstName", "LastName"]


If the form contains more than one field with the same name, the corresponding value is returned to the script as an array. [] Accessor returns these are only the first.



In this example, suppose there are three fields in the form named "name", we have entered three names "Zara", "Huma" and "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"]}


Note: Ruby will automatically handle the Get and post methods. There are no separate ways to deal with these two different methods.



A related, but basic form, that can send the correct data, will have HTML code, just like this:

Create forms and HTML:



CGI contains a number of methods for creating HTML. You will find one of the methods for each label. To make these methods, you must create a CGI object by calling Cgi.new.



To make tags easier to nest, these methods take their content as a block of code. The code block returns a string, which will be used as the content of the label. For example:


#!/usr/bin/ruby

require "cgi"
cgi = cgi.new ("Html4")
cgi.out{
  cgi.html{
   "\ 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
     }
}}


Note: The method parameters of the CGI class can be accepted, which will set up the form submission used on the HTTP method (Get,post, etc.). By default, a post is used in this example.



This will produce the following results:


content-type:text/html
content-length:302
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 final//en" >
<HTML>
<HEAD>
<title>this is a test</title>
</HEAD>
<BODY>
<form method= "POST" enctype= "application/ x-www-form-urlencoded ">
<HR>


Reference string:



When dealing with URLs and HTML code, you must carefully reference some characters. For example, a slash character (/) has a special meaning in the URL, so it must be escaped if it is not part of the path name.



For example, the/query URL portion will be translated into a string%2f/and must be translated when used. Space and special characters with symbols. To deal with this problem, CGI provides: Cgi.escape and cgi.unescape in routine procedures.


#!/usr/bin/ruby

require ' CGI '
puts Cgi.escape (Zara ali/a Sweet & Sour Girl ")


This will produce the following results:


ZARA+ALI%2FA sweet+%26+sour+girl ")

#!/usr/bin/ruby

require ' CGI ' puts
cgi.escapehtml (' 


This will produce the following results:

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.