Pengaturcaraan Ruby CGI
Ruby ialah bahasa universal, bukan sahaja bahasa yang digunakan untuk pembangunan WEB, tetapi Ruby ialah bahasa yang paling biasa dalam pembangunan aplikasi WEB dan alatan WEB.
Menggunakan Ruby, anda bukan sahaja boleh menulis pelayan SMTP anda sendiri, program FTP atau pelayan web Ruby, tetapi anda juga boleh menggunakan Ruby untuk pengaturcaraan CGI.
Seterusnya, mari luangkan sedikit masa untuk mempelajari pengeditan CGI Ruby.
Semakan imbas web
Untuk lebih memahami cara CGI berfungsi, kita boleh mulakan dengan proses mengklik pautan atau URL pada halaman web:
1 Gunakan penyemak imbas anda untuk mengakses URL dan menyambung ke pelayan web HTTP.
2. Selepas menerima maklumat permintaan, pelayan web akan menghuraikan URL dan menyemak sama ada fail yang diakses wujud pada pelayan Jika fail itu wujud, kembalikan kandungan fail tersebut. jika tidak mesej ralat akan dikembalikan.
3. Penyemak imbas menerima maklumat daripada pelayan dan memaparkan fail atau mesej ralat yang diterima.
Atur cara CGI boleh menjadi skrip Ruby, skrip Python, skrip PERL, skrip SHELL, program C atau C++, dsb.
Rajah seni bina CGI
Sokongan dan konfigurasi pelayan web
Sebelum anda melakukan pengaturcaraan CGI, pastikan anda Pelayan web menyokong CGI dan mempunyai pengendali CGI dikonfigurasikan.
Apache menyokong konfigurasi CGI:
Sediakan direktori CGI:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Semua program CGI pelaksanaan pelayan HTTP disimpan dalam direktori pra-konfigurasi. Direktori ini dipanggil direktori CGI, dan mengikut konvensyen, ia dinamakan /var/www/cgi-bin.
Fail CGI mempunyai sambungan .cgi dan Ruby juga boleh menggunakan sambungan .rb.
Secara lalai, direktori cgi-bin tempat pelayan Linux dikonfigurasikan untuk dijalankan ialah /var/www.
Jika anda ingin menentukan direktori lain untuk menjalankan skrip CGI, anda boleh mengubah suai fail konfigurasi httpd.conf seperti berikut:
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory>
Tambah akhiran .rb dalam AddHandler supaya kami boleh mengaksesnya . Fail skrip Ruby yang berakhir dengan rb:
AddHandler cgi-script .cgi .pl .rb
Menulis skrip CGI
Kod CGI Ruby yang paling asas adalah seperti berikut:
#!/usr/bin/ruby puts "Content-type: text/html\n\n" puts "<html><body>This is a test</body></html>"
Anda boleh menyimpan kod ini untuk Dalam fail test.cgi, anda boleh melaksanakannya sebagai skrip CGI selepas pergi ke pelayan kali terakhir dan memberikan kebenaran yang mencukupi.
Jika alamat tapak anda ialah http://www.example.com/, anda boleh menggunakan http://www.example.com/test.cgi untuk mengakses program ini. "Ini adalah ujian."
Selepas penyemak imbas mengakses URL, pelayan web akan menemui fail test.cgi dalam direktori tapak, dan kemudian menggunakan penghurai Ruby untuk menghuraikan kod skrip dan mengakses dokumen HTML.
Gunakan cgi.rb
Ruby boleh menghubungi perpustakaan CGI untuk menulis skrip CGI yang lebih kompleks.
Kod berikut memanggil pustaka CGI untuk mencipta skrip CGI skrip.
#!/usr/bin/ruby require 'cgi' cgi = CGI.new puts cgi.header puts "<html><body>This is a test</body></html>"
Dalam kod berikut, objek CGI dicipta dan maklumat pengepala dicetak.
Pemprosesan borang
Menggunakan perpustakaan CGI, anda boleh mendapatkan data daripada penyerahan borang (atau parameter dalam URL) dalam dua cara, Contohnya URL:/cgi-bin/test.cgi?FirstName=Zara&LastName=Ali.
Anda boleh menggunakan CGI#[] untuk mendapatkan terus parameter FirstName dan LastName:
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi['FirstName'] # => ["Zara"] cgi['LastName'] # => ["Ali"]
Cara lain untuk mendapatkan data borang:
#!/usr/bin/ruby require 'cgi' cgi = CGI.new h = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]} h['FirstName'] # => ["Zara"] h['LastName'] # => ["Ali"]
Kod berikut digunakan untuk mendapatkan semua nilai utama :
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi.keys # => ["FirstName", "LastName"]
Jika borang mengandungi berbilang medan dengan nama yang sama, nilai medan yang sama akan disimpan dalam tatasusunan.
Dalam contoh berikut, tiga medan yang sama "nama" dinyatakan dalam borang dan nilainya ialah "Zara", "Huma" dan "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:Ruby akan menentukan kaedah GET dan POST secara automatik, jadi tidak perlu merawat kedua-dua kaedah secara berbeza.
Berikut ialah kod HML yang berkaitan:
<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>
Mencipta borang Borang dan HTML
CGI mengandungi sejumlah besar kaedah untuk mencipta HTML, setiap tag HTML mempunyai kaedah yang sepadan. Sebelum menggunakan kaedah ini, objek CGI mesti dibuat melalui CGI.new.
Untuk memudahkan sarang teg, kaedah ini menganggap kandungan sebagai blok kod dan blok kod akan mengembalikan rentetan sebagai kandungan teg. Seperti yang ditunjukkan di bawah:
#!/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 Escape
Apabila anda memproses parameter dalam URL atau data borang HTML, anda perlu melarikan diri daripada aksara khas yang ditentukan, seperti: Tanda petikan ( "), backslash (/).
Objek Ruby CGI menyediakan kaedah CGI.escape dan CGI.unescape untuk mengendalikan melarikan diri aksara khas ini:
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
Kod di atas dilaksanakan Hasilnya adalah seperti berikut:
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
Satu lagi set contoh:
#!/usr/bin/ruby require 'cgi' puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
Keputusan pelaksanaan kod di atas adalah seperti berikut:
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
Kaedah yang biasa digunakan dalam kelas CGI
Berikut ialah kaedah berkaitan kelas CGI lengkap dalam Ruby
Ruby CGI - kaedah berkaitan perpustakaan CGI standard
Kuki dan Sesi
Kuki CGI Ruby - Cara mengendalikan Kuki CGI.
Sesi CGI Ruby - Cara mengendalikan sesi CGI.