English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby est un langage polyvalent, ce n'est pas seulement un langage appliqué au développement web, mais Ruby est le plus couramment utilisé dans le développement d'applications web et d'outils web.
Avec Ruby, vous pouvez non seulement écrire votre propre serveur SMTP, programme FTP ou serveur web Ruby, mais vous pouvez également utiliser Ruby pour programmer en CGI.
Ensuite, passons un peu de temps à apprendre la création de CGI en Ruby.
Pour mieux comprendre comment fonctionne CGI, nous pouvons suivre le flux en cliquant sur un lien ou une URL sur une page web :
1、utilisez votre navigateur pour accéder à l'URL et vous connecter au serveur web HTTP.
2、le serveur Web reçoit des informations de requête, analyse l'URL et vérifie si le fichier demandé existe sur le serveur. S'il existe, il renvoie le contenu du fichier, sinon il renvoie un message d'erreur.
3、le navigateur reçoit des informations du serveur et affiche le fichier reçu ou un message d'erreur.
Les programmes CGI peuvent être des scripts Ruby, des scripts Python, des scripts PERL, des scripts SHELL, du C ou du C++ programmes, etc.
Avant de commencer à programmer en CGI, assurez-vous que votre serveur Web prend en charge CGI et que le gestionnaire de CGI est configuré.
Apache prend en charge la configuration CGI :
Configurer le répertoire CGI :
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Tous les serveurs HTTP exécutent des programmes CGI dans un répertoire préconfiguré. Ce répertoire est appelé répertoire CGI et, selon la convention, il est nommé/var/www/cgi-Répertoire bin.
Les fichiers CGI ont une extension .cgi, Ruby peut également utiliser l'extension .rb.
Par défaut, la configuration du serveur Linux exécute des cgi-Le répertoire bin contient/var/www。
Si vous souhaitez spécifier un autre répertoire pour l'exécution 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 body>/Directory>
Ajoutez l'extension .rb dans AddHandler, ainsi nous pourrons accéder aux fichiers de scripts Ruby se terminant par .rb :
AddHandler cgi-script.cgi .pl .rb
Le code Ruby CGI le plus basique est présenté comme suit :
#!/usr/bin/ruby puts "Content"-type: text/html\n\n" puts "<html><body>This is a test</body></html>"
Vous pouvez garder ce code dans le fichier test.cgi, le télécharger sur le serveur et attribuer les permissions suffisantes, puis il peut être exécuté en tant que script CGI.
Si l'adresse de votre site est http://<form method="POST" action="http:/ ,即可用过http://<form method="POST" action="http:/L'accès à ce programme par test.cgi, le résultat est : "This is a test."。
Après que le navigateur a visité cette adresse, le serveur Web trouvera le fichier test.cgi dans le répertoire du site et l'analysera avec l'interpréteur Ruby pour accéder au document HTML.
Ruby peut appeler la bibliothèque CGI pour écrire des scripts CGI plus complexes.
Le code suivant appelle la bibliothèque CGI pour créer un script de CGI.
#!/usr/bin/ruby require 'cgi' cgi = CGI.new puts cgi.header puts "<html><body>This is a test</body></html>"
Dans le code suivant, un objet CGI est créé et les informations d'en-tête sont affichées.
L'utilisation de la bibliothèque CGI permet de récupérer les données du formulaire soumis (ou les paramètres de l'URL) de deux manières : Par exemple, l'URL :/cgi-bin/test.cgi?FirstName=Zara&LastName=Ali。
Vous pouvez utiliser CGI#[] pour obtenir directement les paramètres FirstName et LastName :
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi['FirstName'] # => ["Zara"] cgi['LastName'] # => ["Ali"]
Il existe une autre méthode pour obtenir les données du 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 est utilisé pour rechercher tous les clés :
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi.keys # => ["FirstName", "LastName"]
Si le formulaire contient plusieurs champs du même nom, les valeurs de ce champ identique seront conservées dans un tableau.
Dans l'exemple suivant, trois champs identiques du formulaire "name" sont spécifiés, leurs valeurs respectives sont "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.keys # => ["name"]
cgi.params # => {"name"=>["Zara", "Huma", "Nuha"]}Attention :
Ruby juge automatiquement les méthodes GET et POST, donc il n'est pas nécessaire de traiter différemment les deux méthodes.
Voici le code HTML pertinent : <html> <body>//<form method="POST" action="http:/www.example.com test.cgi"> /<input type="submit" value="Submit Data" Nom de naissance :<input type="text" name="FirstName" value="" /<input type="submit" value="Submit Data" <br /<input type="submit" value="Submit Data" Nom de famille :<input type="text" name="LastName" value="" /<input type="submit" value="Submit Data" body>/> body>/form> body>/<
Création de formulaires et de HTML Le paquet CGI contient de nombreuses méthodes pour créer du HTML, chaque balise HTML a une méthode correspondante.
Avant d'utiliser ces méthodes, il est nécessaire de créer un objet CGI à l'aide de CGI.new.
#!/usr/bin/ruby Pour simplifier l'encastrement des balises, ces méthodes prennent le contenu en tant que blocs de code, et les blocs de code renvoient une chaîne en tant que contenu des balises. Voici un exemple : require "cgi"4cgi = CGI.new("html" }) 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 } } } }
Lorsque vous traitez les paramètres d'URL ou les données de formulaires HTML, vous devez escaping les caractères spéciaux indiqués, tels que : les guillemets ("), les barres obliques inversées (\)/)。
L'objet CGI en Ruby fournit les méthodes CGI.escape et CGI.unescape pour traiter ces caractères spéciaux :
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/Une fille douce et piquante
The execution result of the above code is as follows:
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/Une fille douce et piquante
Another set of examples:
#!/usr/bin/ruby require 'cgi' puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
The execution result of the above code is as follows:
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
The following are the complete methods related to the CGI class in Ruby
Ruby CGI - Standard CGI Library Related Methods
Ruby CGI Cookies - How to handle CGI Cookies.
Ruby CGI Sessions - How to handle CGI sessions.