Latest web development tutorials

programmation Ruby CGI

Ruby est un langage universel, pas seulement celui utilisé dans le langage de développement web, mais le développement Ruby dans des applications WEB et les outils Web sont les plus communs.

Non seulement vous pouvez utiliser Ruby pour écrire votre propre serveur SMTP, FTP, ou Ruby serveur Web, mais peut aussi être utiliser la programmation Ruby CGI.

Prenons un moment pour apprendre le Ruby CGI édité.


navigation sur le Web

Pour mieux comprendre comment CGI fonctionne, on peut cliquer sur un lien sur une page Web ou URL du processus:

  • 1, utilisez votre navigateur pour accéder à l'URL et la connexion au serveur Web HTTP.
  • 2, serveur Web reçoit le message de demande sera analysée URL et regarder les fichiers disponibles sur le serveur s'il y a, si l'on veut retourner le contenu du fichier, sinon il renvoie un message d'erreur.
  • 3, le navigateur reçoit les informations du serveur et affiche les messages de fichiers ou d'erreur reçus.

Les programmes CGI peuvent être un script Ruby, le script Python, PERL de script, le script SHELL, C ou programmes C ++.


CGI Graphique

cgiarch


configuration du serveur Web et de soutien

Avant de procéder à la programmation CGI, assurez-vous que votre serveur Web a été configuré pour soutenir CGI et gestionnaire de CGI.

Apache prend en charge la configuration de CGI:

Mettre en place le répertoire CGI:

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

Tout serveur HTTP pour exécuter des programmes CGI sont stockés dans un répertoire pré-configuré. Ce répertoire est appelé le répertoire CGI, et par convention, il est nommé var / www / / cgi-bin.

fichier CGI .cgi, Ruby peut également être utilisé l'extension .rb.

Par défaut, la configuration du serveur Linux exécutant répertoire cgi-bin / var / www.

Si vous souhaitez spécifier un répertoire différent pour exécuter des scripts CGI, vous pouvez modifier le fichier de configuration httpd.conf comme suit:

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

Ajouter .rb suffixe AddHandler, afin que nous puissions accéder à la fin .rb du fichier de script Ruby:

AddHandler cgi-script .cgi .pl .rb

Ecrire des scripts CGI

Ruby code CGI de base comme suit:

#!/usr/bin/ruby

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

Vous pouvez garder le code pour test.cgi serveur de fichiers et le dernier pour donner des autorisations suffisantes pour exécuter comme un script CGI.

Si l'adresse que vous tenez comme http://www.example.com/, http://www.example.com/test.cgi utilisé pour accéder au programme, la sortie est: "Ceci est un test.".

Le navigateur pour accéder au site Web, serveur Web de trouver le fichier test.cgi dans le répertoire du site, puis de résoudre l'interprète et l'écriture du code Ruby en accédant à un document HTML.


Utilisez cgi.rb

Ruby peut appeler la bibliothèque de CGI pour écrire des scripts CGI plus complexes.

Le code suivant appelle la bibliothèque de scripts CGI pour créer un script CGI.

#!/usr/bin/ruby

require 'cgi'

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

Le code suivant, créer une information d'objet CGI et tête d'impression.


Traitement des formulaires

Utilisation de la bibliothèque de CGI peut être obtenue de deux façons de soumettre le formulaire (ou des paramètres dans l'URL) de données, telles que l'URL :? /cgi-bin/test.cgi FirstName = Zara & LastName = Ali.

Vous pouvez utiliser les CGI # [] obtenir directement les paramètres FirstName et LastName:

#!/usr/bin/ruby

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

Une autre méthode d'obtention des données de formulaire:

#!/usr/bin/ruby

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

Le code suivant permet de récupérer toutes les clés:

#!/usr/bin/ruby

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

Si le formulaire contient plusieurs champs portant le même nom, la valeur du même champ sera stocké dans un tableau.

L'exemple suivant, préciser la forme de trois champs identiques "name", les valeurs de "Zara", "Huma" et "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"]}

Remarque: Ruby déterminera automatiquement les méthodes GET et POST, il n'y a pas lieu de distinguer entre les deux méthodes.

Voici le code HML pertinente:

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

Création de formulaires et formulaire HTML

CGI contient beaucoup de façons de créer HTML, chaque balise HTML a une méthode correspondante. Avant d'utiliser ces méthodes, le rapport doit CGI pour créer des objets CGI.new.

Afin de rendre l'étiquette de plus simple imbrication, ces méthodes seront contenu comme un bloc de code, le bloc de code renvoie la chaîne comme une étiquette de contenu. Comme suit:

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

Chaîne évasion

Lorsque vous faites affaire avec des paramètres dans les données de formulaire URL ou HTML, vous devez spécifier l'évasion des caractères spéciaux, tels que: les guillemets ( "), barre oblique (/).

Ruby objet CGI fournit cgi.escape CGI.unescape et des méthodes pour faire face à échapper à ces caractères spéciaux:

#!/usr/bin/ruby

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

Le code ci-dessus est exécuté comme suit:

#!/usr/bin/ruby

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

Une autre série d'exemples:

#!/usr/bin/ruby

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

Le code ci-dessus est exécuté comme suit:

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

méthodes de la classe CGI couramment utilisés

Voici la méthode complète de Ruby classe CGI

  • CGI les Ruby - méthodes bibliothèque CGI standard liées

Cookies et Sessions