Latest web development tutorials

programmazione Ruby CGI

Ruby è un linguaggio universale, non solo quello usato nel linguaggio di sviluppo web, ma lo sviluppo Ruby in applicazioni Web e strumenti web sono i più comuni.

Non solo è possibile utilizzare Ruby per scrivere il proprio server SMTP, FTP, o il server Web Ruby, ma anche può essere uso di programmazione Ruby CGI.

Prendiamo un momento per imparare Ruby CGI modificato.


navigazione Web

Per capire meglio come funziona la CGI, siamo in grado di cliccare su un link in una pagina web o un URL del processo:

  • 1, utilizzare il browser per accedere all'URL e connettersi al server Web HTTP.
  • 2, il server Web riceve il messaggio di richiesta sarà analizzata URL e guardare file acceduti sul server se c'è, se c'è da restituire il contenuto del file, altrimenti restituisce un messaggio di errore.
  • 3, il browser riceve le informazioni dal server e visualizza i messaggi di file o di errore ricevuti.

programmi CGI possono essere uno script Ruby, script Python, script in Perl, shell script, programmi C o C ++.


Grafico CGI

cgiarch


configurazione del server Web e il supporto

Prima di effettuare la programmazione CGI, fare in modo che il server Web è stato configurato per supportare CGI e gestore CGI.

Apache supporta la configurazione CGI:

Impostare la directory CGI:

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

Tutti i server HTTP per eseguire programmi CGI vengono memorizzati in una directory pre-configurato. Questa directory è chiamata la directory CGI, e per convenzione, prende il nome / var / www / directory cgi-bin.

file di CGI estensione .cgi, Ruby può essere utilizzato anche estensione .RB.

Per impostazione predefinita, la configurazione del server Linux in esecuzione directory cgi-bin è / var / www.

Se si desidera specificare una directory diversa per eseguire script CGI, è possibile modificare il file di configurazione httpd.conf come segue:

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

Aggiungere .RB AddHandler suffisso, in modo da poter accedere fine .RB del file di script di Ruby:

AddHandler cgi-script .cgi .pl .rb

Scrivere script CGI

codice di base di Ruby CGI come segue:

#!/usr/bin/ruby

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

È possibile mantenere il codice per test.cgi file server e l'ultimo ad impartire autorizzazioni sufficienti per eseguire come script CGI.

Se l'indirizzo ti trovi come http://www.example.com/, http://www.example.com/test.cgi utilizzato per accedere al programma, l'output è: "Questa è una prova.".

Il browser per accedere al sito Web, server Web trovare il file test.cgi nella directory del sito, e quindi a risolvere l'interprete e sceneggiatura codice Ruby accedendo a un documento HTML.


Usa cgi.rb

Rubino può chiamare libreria CGI di scrivere script CGI più complesse.

Il codice seguente chiama la libreria di script CGI per creare uno script CGI.

#!/usr/bin/ruby

require 'cgi'

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

Il seguente codice, creare un oggetto informazioni CGI e intestazione di stampa.


elaborazione dei moduli

Utilizzando biblioteca CGI può essere ottenuto in due modi per inviare il modulo (o parametri nella URL) di dati, come ad esempio l'URL :? /cgi-bin/test.cgi FirstName = Zara & Cognome = Ali.

È possibile utilizzare i CGI # [] ottenere direttamente i parametri di nome e cognome:

#!/usr/bin/ruby

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

Un altro metodo per ottenere i dati del modulo:

#!/usr/bin/ruby

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

Il seguente codice viene utilizzato per recuperare tutta la chiave:

#!/usr/bin/ruby

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

Se il modulo contiene più campi con lo stesso nome, il valore dello stesso campo sarà memorizzato in una matrice.

Il seguente esempio, specificare la forma di tre campi identici "nome", i valori di "Zara", "Huma" e "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: rubino determina automaticamente i metodi GET e POST, non vi è alcuna necessità di distinguere tra i due metodi.

Ecco il relativo codice HML:

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

Creazione di moduli e form HTML

CGI contiene un sacco di modi per creare HTML, ogni tag HTML ha un metodo corrispondente. Prima di utilizzare questi metodi, il rapporto deve CGI per creare oggetti CGI.new.

Al fine di rendere l'etichetta più semplice nesting, questi metodi saranno contenuti in un blocco di codice, il blocco di codice restituisce la stringa come etichetta contenuti. Come segue:

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

stringa di escape

Quando si ha a che fare con i parametri dei dati del modulo URL o HTML, è necessario specificare la fuga caratteri speciali, come ad esempio: le virgolette ( "), barra (/).

Rubino oggetto CGI fornisce CGI.escape CGI.unescape e metodi per affrontare la fuga di questi caratteri speciali:

#!/usr/bin/ruby

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

Il codice di cui sopra viene eseguita come segue:

#!/usr/bin/ruby

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

Un'altra serie di esempi:

#!/usr/bin/ruby

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

Il codice di cui sopra viene eseguita come segue:

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

metodi di classe CGI comunemente utilizzati

Ecco il metodo completo in Ruby classe CGI


Cookie e Sessions