Latest web development tutorials

programación Ruby CGI

Ruby es un lenguaje universal, no sólo el que se utiliza en el lenguaje de desarrollo web, pero el desarrollo de Ruby en aplicaciones web y herramientas web son los más comunes.

No sólo se puede utilizar Ruby a escribir su propio servidor SMTP, el programa de FTP o servidor Web Ruby, pero también se puede utilizar de programación Ruby CGI.

Vamos a tomar un momento para aprender Ruby CGI editado.


navegación web

Para entender mejor cómo funciona CGI, podemos hacer clic en un enlace en una página web o URL del proceso:

  • 1, utilizar el navegador para acceder a la URL y conectarse con el servidor web HTTP.
  • 2, el servidor Web recibe el mensaje de solicitud será analizada URL y buscar los archivos a los que accede en el servidor si hay, si hay que devolver el contenido del archivo, de lo contrario, devuelve un mensaje de error.
  • 3, el navegador recibe la información desde el servidor y muestra los mensajes de error o de archivos recibidos.

Los programas CGI pueden ser un script Ruby, Python guión, guión escrito en Perl script de shell, los programas de C o C ++.


Gráfico CGI

cgiarch


configuración del servidor web y el apoyo

Antes de realizar la programación CGI, asegúrese de que el servidor Web se ha configurado para soportar CGI y controlador CGI.

Apache soporta la configuración CGI:

Configurar el directorio CGI:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

Todo servidor HTTP para ejecutar programas CGI se almacenan en un directorio preconfigurado. Este directorio se llama el directorio CGI, y por convención, se nombra directorio / var / www / cgi-bin.

archivo CGI extensión .cgi, Ruby también se puede utilizar la extensión .rb.

Por defecto, la configuración del servidor Linux corriendo directorio cgi-bin es / var / www.

Si desea especificar un directorio diferente para ejecutar scripts CGI, puede modificar el archivo de configuración httpd.conf de la siguiente manera:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory>

Añadir .rb AddHandler sufijo, por lo que podemos acceder .rb final del archivo de script Ruby:

AddHandler cgi-script .cgi .pl .rb

Escribir scripts CGI

código básico CGI de Ruby como sigue:

#!/usr/bin/ruby

puts "Content-type: text/html\n\n"
puts "<html><body>This is a test</body></html>"

Puede mantener el código para test.cgi servidor de archivos y la última para impartir permisos suficientes para realizar como un script CGI.

Si la dirección se pone de pie como http://www.example.com/, http://www.example.com/test.cgi utilizado para acceder al programa, la salida es: "Esto es una prueba.".

El navegador para acceder al sitio Web, servidor Web se encuentra el archivo en el directorio test.cgi sitio, y luego resolver el intérprete y la escritura de código Ruby mediante el acceso a un documento HTML.


uso cgi.rb

Ruby puede llamar a la biblioteca CGI para escribir scripts CGI más complejas.

El siguiente código llama a la biblioteca script CGI para crear una secuencia de comandos CGI.

#!/usr/bin/ruby

require 'cgi'

cgi = CGI.new
puts cgi.header
puts "<html><body>This is a test</body></html>"

El siguiente código, crear un objeto de información CGI y de cabeza de impresión.


Procesamiento de formularios

El uso de la biblioteca CGI se puede obtener de dos formas de enviar el formulario (o parámetros en la URL) de datos, como la dirección URL :? /cgi-bin/test.cgi Nombre = Zara y apellido = Ali.

Se pueden utilizar los CGI # [] obtener directamente los parámetros de nombre y apellidos:

#!/usr/bin/ruby

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

Otro método para la obtención de los datos del formulario:

#!/usr/bin/ruby

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

El siguiente código se utiliza para recuperar todas las claves:

#!/usr/bin/ruby

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

Si el formulario contiene varios campos con el mismo nombre, entonces el valor del mismo campo se almacena en una matriz.

En el siguiente ejemplo, especificar la forma de tres campos idénticos "nombre", los valores de "Zara", "Huma" y "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"]}

Nota: Rubí determinará automáticamente el métodos GET y POST, no hay necesidad de distinguir entre los dos métodos.

Aquí está el código HML relevante:

<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>

Creación de formularios y de formularios HTML

CGI contiene una gran cantidad de maneras de crear HTML, cada etiqueta HTML tiene un método correspondiente. Antes de utilizar estos métodos, la relación debe CGI para crear objetos CGI.new.

Con el fin de hacer que la etiqueta más sencilla de anidación, estos métodos serán contenido como un bloque de código, el bloque de código devuelve la cadena como una etiqueta de contenido. En la siguiente manera:

#!/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
         }
      }
   }
}

cadena de escape

Cuando se trata de parámetros en los datos del formulario de URL o HTML, es necesario especificar el escape caracteres especiales, como por ejemplo: entre comillas ( "), barra (/).

Rubí objeto CGI proporciona cgi.escape CGI.unescape y métodos para hacer frente a escapar estos caracteres especiales:

#!/usr/bin/ruby

require 'cgi'
puts CGI.escape(Zara Ali/A Sweet & Sour Girl")

El código de seguridad se ejecuta como sigue:

#!/usr/bin/ruby

require 'cgi'
puts CGI.escape(Zara Ali/A Sweet & Sour Girl")

Otro conjunto de ejemplos:

#!/usr/bin/ruby

require 'cgi'
puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')

El código de seguridad se ejecuta como sigue:

&lt;h1&gt;Zara Ali/A Sweet & Sour Girl&lt;/h1&gt;'

métodos de clase CGI utilizan comúnmente

Éstos son el método completo en clase CGI de Ruby


Cookies y Sesiones