Latest web development tutorials

Ruby-CGI-Programmierung

Ruby ist eine universelle Sprache, nicht nur die eine in Web-Entwicklung Sprache verwendet, aber Ruby-Entwicklung in Web-Anwendungen und Web-Tools sind die häufigsten.

Sie können nicht nur Ruby-verwenden Sie Ihre eigenen SMTP-Server, FTP-Programm zu schreiben, oder Ruby Web-Server, aber auch Ruby-CGI-Programmierung verwenden werden können.

Lassen Sie uns einen Moment Zeit nehmen, die Ruby-CGI bearbeitet zu lernen.


Web-Browsing

Um besser zu verstehen, wie CGI funktioniert, können wir auf einen Link klicken Sie auf einer Webseite oder URL des Prozesses:

  • 1, verwenden Sie Ihren Browser auf die URL zugreifen und an den HTTP-Web-Server verbinden.
  • 2, Web-Server empfängt die Anforderungsnachricht URL analysiert werden und der Zugriff auf Dateien auf dem Server aussehen, wenn es, wenn es um den Inhalt der Datei zurück, sonst wird es eine Fehlermeldung zurück.
  • 3 empfängt der Browser die Informationen von dem Server und zeigt die empfangene Datei oder Fehlermeldungen.

CGI-Programme kann ein Ruby-Skript, Python-Skript, PERL-Skript, Shell-Skript, C oder C ++ Programme sein.


CGI-Diagramm

cgiarch


Web-Server-Konfiguration und Support

Bevor Sie die CGI-Programmierung durchführen, stellen Sie sicher, dass Ihr Webserver konfiguriert wurde CGI und CGI-Handler zu unterstützen.

Apache unterstützt CGI-Konfiguration:

Stellen Sie das CGI-Verzeichnis auf:

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

Alle HTTP-Server CGI-Programme auszuführen, werden in einem vorkonfigurierten Verzeichnis gespeichert. Dieses Verzeichnis ist das CGI-Verzeichnis genannt, und durch Konvention, es heißt / var / www / cgi-bin-Verzeichnis.

CGI Dateierweiterung .cgi Ruby kann auch .rb Erweiterung verwendet werden.

Standardmäßig Linux-Server-Konfiguration cgi-bin-Verzeichnis ausgeführt wird, ist / var / www.

Wenn Sie ein anderes Verzeichnis angeben möchten, CGI-Skripte ausführen, können Sie die Konfigurationsdatei httpd.conf wie folgt ändern:

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

In .rb Suffix AddHandler, so dass wir .rb Ende des Ruby-Skript-Datei zugreifen können:

AddHandler cgi-script .cgi .pl .rb

Schreiben von CGI-Skripten

Basic-Code Ruby-CGI wie folgt:

#!/usr/bin/ruby

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

Sie können den Code halten Dateiserver test.cgi und die letzte ausreichende Berechtigungen zu verleihen, als CGI-Skript auszuführen.

Wenn die Adresse, die Sie als http://www.example.com/ stehen, http://www.example.com/test.cgi verwendet, um das Programm zugreifen zu können, ist die Ausgabe: "Dies ist ein Test.".

Der Browser auf die Website zugreifen, werden Web-Server test.cgi Datei im Site-Verzeichnis, zu finden und dann durch den Zugriff auf ein HTML-Dokument den Ruby-Interpreter und Script-Code zu lösen.


Verwenden Sie cgi.rb

Ruby-CGI-Bibliothek aufrufen komplexere CGI-Skripte zu schreiben.

Der folgende Code ruft die CGI-Skript-Bibliothek ein CGI-Skript zu erstellen.

#!/usr/bin/ruby

require 'cgi'

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

Der folgende Code, ein CGI-Objekt und Druckkopfinformationen erstellen.


Formularverarbeitung

Mit Hilfe von CGI-Bibliothek kann auf zwei Arten erhalten werden, um die Form (oder Parameter in der URL) von Daten, wie zB URL :? /cgi-bin/test.cgi Vorname = Zara & Nachname = Ali zu unterbreiten.

Sie können die CGI # [] verwenden, direkt Parameter erhalten Vorname und Nachname:

#!/usr/bin/ruby

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

Eine andere Methode, um die Formulardaten zu erhalten:

#!/usr/bin/ruby

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

Der folgende Code wird verwendet, um alle Schlüssel abzurufen:

#!/usr/bin/ruby

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

Wenn das Formular mehrere Felder mit demselben Namen enthält, dann wird der Wert des gleichen Feldes wird in einem Array gespeichert werden.

Das folgende Beispiel, geben Sie die Form von drei identische Felder "Name", die Werte von "Zara", "Huma" und "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"]}

Hinweis: Rubin wird die GET und POST - Methoden automatisch zu bestimmen, besteht keine Notwendigkeit , zwischen den beiden Methoden zu unterscheiden.

Hier ist der relevante HML-Code:

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

Erstellen von Formularen und HTML-Formular

CGI enthält eine Menge Möglichkeiten, HTML zu erstellen, jedes HTML-Tag ein entsprechendes Verfahren hat. Bevor diese Methoden verwenden, muss das Verhältnis CGI-Objekte zu erstellen CGI.new.

Um dem Etikett einfacher Verschachtelung zu machen, diese Methoden als ein Block von Codeinhalt sein wird, gibt der Codeblock die Zeichenfolge als Content-Label. Wie folgt:

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

Wenn Sie mit den Parametern in der URL oder HTML-Formulardaten zu tun haben, müssen Sie die Escape-Sonderzeichen angeben, wie zB: in Anführungszeichen ( "), Schrägstrich (/).

Ruby-CGI-Objekt stellt cgi.escape CGI.unescape und Methoden zu behandeln diese Sonderzeichen zu entkommen:

#!/usr/bin/ruby

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

Der obige Code wird wie folgt ausgeführt:

#!/usr/bin/ruby

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

Eine weitere Reihe von Beispielen:

#!/usr/bin/ruby

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

Der obige Code wird wie folgt ausgeführt:

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

CGI Klassenmethoden häufig verwendete

Hier sind die komplette Methode in Ruby CGI-Klasse

  • CGI der Ruby - Standard - CGI - Bibliothek im Zusammenhang mit Methoden

Cookies und Sessions