Ruby-Webanwendungen - CGI-Programmierung

Ruby ist eine Allzwecksprache. Es kann überhaupt nicht als Web-Sprache bezeichnet werden . Trotzdem gehören Webanwendungen und Webtools im Allgemeinen zu den häufigsten Anwendungen von Ruby.

Sie können nicht nur Ihren eigenen SMTP-Server, FTP-Daemon oder Webserver in Ruby schreiben, sondern Ruby auch für üblichere Aufgaben wie die CGI-Programmierung oder als Ersatz für PHP verwenden.

Bitte verbringen Sie einige Minuten mit dem CGI-Programmier- Tutorial, um weitere Informationen zur CGI-Programmierung zu erhalten.

Schreiben von CGI-Skripten

Das grundlegendste Ruby CGI-Skript sieht folgendermaßen aus:

#!/usr/bin/ruby

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

Wenn Sie dieses Skript test.cgi aufrufen und es mit den richtigen Berechtigungen auf einen Unix-basierten Webhosting-Anbieter hochladen , können Sie es als CGI-Skript verwenden.

Zum Beispiel, wenn Sie die Website haben https://www.example.com/Bei einem Linux-Webhosting-Anbieter gehostet, laden Sie test.cgi in das Hauptverzeichnis hoch und erteilen ihm Ausführungsberechtigungen. Anschließend besuchen Siehttps://www.example.com/test.cgi sollte eine HTML-Seite zurückgeben, die sagt This is a test.

Wenn test.cgi von einem Webbrowser angefordert wird, sucht der Webserver auf der Website nach test.cgi und führt es dann mit dem Ruby-Interpreter aus. Das Ruby-Skript gibt einen grundlegenden HTTP-Header und anschließend ein grundlegendes HTML-Dokument zurück.

Verwenden von cgi.rb

Ruby kommt mit einer speziellen Bibliothek namens cgi Dies ermöglicht komplexere Interaktionen als mit dem vorhergehenden CGI-Skript.

Lassen Sie uns ein einfaches CGI-Skript erstellen, das cgi verwendet -

#!/usr/bin/ruby

require 'cgi'
cgi = CGI.new

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

Hier haben Sie ein CGI-Objekt erstellt und damit die Kopfzeile für Sie gedruckt.

Formularverarbeitung

Mit der Klassen-CGI können Sie auf zwei Arten auf HTML-Abfrageparameter zugreifen. Angenommen, wir erhalten eine URL von /cgi-bin/test.cgi?FirstName = Zara & LastName = Ali.

Sie können mit CGI # [] direkt wie folgt auf die Parameter Vorname und Nachname zugreifen :

#!/usr/bin/ruby

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

Es gibt eine andere Möglichkeit, auf diese Formularvariablen zuzugreifen. Dieser Code gibt Ihnen einen Hash aller Schlüssel und Werte -

#!/usr/bin/ruby

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

Es folgt der Code zum Abrufen aller Schlüssel -

#!/usr/bin/ruby

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

Wenn ein Formular mehrere Felder mit demselben Namen enthält, werden die entsprechenden Werte als Array an das Skript zurückgegeben. Der Accessor [] gibt nur den ersten von diesen zurück. Indizieren Sie das Ergebnis der params-Methode, um alle abzurufen.

In diesem Beispiel wird angenommen, dass das Formular drei Felder mit dem Namen "Name" enthält und wir drei Namen "Zara", "Huma" und "Nuha" eingegeben haben.

#!/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 kümmert sich automatisch um die GET- und POST-Methoden. Für diese beiden unterschiedlichen Methoden gibt es keine getrennte Behandlung.

Ein zugehöriges, aber einfaches Formular, das die richtigen Daten senden könnte, hätte den HTML-Code wie folgt:

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

Formulare und HTML erstellen

CGI enthält eine Vielzahl von Methoden zum Erstellen von HTML. Sie finden eine Methode pro Tag. Um diese Methoden zu aktivieren, müssen Sie ein CGI-Objekt erstellen, indem Sie CGI.new aufrufen.

Um das Verschachteln von Tags zu vereinfachen, verwenden diese Methoden ihren Inhalt als Codeblöcke. Die Codeblöcke sollten einen String zurückgeben , der als Inhalt für das Tag verwendet wird. Zum Beispiel -

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

NOTE- Die Formularmethode der CGI-Klasse kann einen Methodenparameter akzeptieren, der die HTTP-Methode (GET, POST usw.) für die Formularübermittlung festlegt. Die in diesem Beispiel verwendete Standardeinstellung ist POST.

Dies führt zu folgendem Ergebnis:

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>
         <H1>A Form: </H1>
         <TEXTAREA COLS = "70" NAME = "get_text" ROWS = "10"></TEXTAREA>
         <BR>
         <INPUT TYPE = "submit">
      </FORM>
   </BODY>
</HTML>

Strings zitieren

Wenn Sie mit URLs und HTML-Code arbeiten, müssen Sie darauf achten, bestimmte Zeichen in Anführungszeichen zu setzen. Zum Beispiel hat ein Schrägstrich (/) in einer URL eine besondere Bedeutung, also muss es seinescaped wenn es nicht Teil des Pfadnamens ist.

Beispielsweise wird jedes / im Abfrageteil der URL in die Zeichenfolge% 2F übersetzt und muss zurück in ein / übersetzt werden, damit Sie es verwenden können. Leerzeichen und kaufmännisches Und sind ebenfalls Sonderzeichen. Um dies zu handhaben, stellt CGI die Routinen bereitCGI.escape und CGI.unescape.

#!/usr/bin/ruby

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

Dies führt zu folgendem Ergebnis:

Zara+Ali%2FA Sweet+%26+Sour+Girl")
#!/usr/bin/ruby

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

Dies führt zu folgendem Ergebnis:

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

Nützliche Methoden in der CGI-Klasse

Hier ist die Liste der Methoden, die sich auf die CGI-Klasse beziehen -

  • Die Ruby CGI - Methoden zur Standard CGI Bibliothek.

Cookies und Sitzungen

Wir haben diese beiden Konzepte in verschiedenen Abschnitten erläutert. Bitte folgen Sie den Abschnitten -

  • Die Ruby CGI Cookies - Umgang mit CGI Cookies.

  • Die Ruby-CGI-Sitzungen - Verwalten von CGI-Sitzungen.

Webhosting-Server

Sie können das folgende Thema im Internet überprüfen, um Ihre Website auf einem Unix-basierten Server zu hosten:

  • Unix-basiertes Webhosting