Latest web development tutorials
×

Ruby หลักสูตร

Ruby หลักสูตร Ruby แนะนำโดยย่อ Ruby สิ่งแวดล้อม Ruby ติดตั้ง Linux Ruby ติดตั้ง Windows Ruby การเข้ารหัสจีน Ruby เลือกบรรทัดคำสั่ง Ruby ตัวแปรสภาพแวดล้อม Ruby ไวยากรณ์ Ruby ชนิดข้อมูล Ruby คลาสและวัตถุ Ruby กรณีระดับ Ruby ตัวแปร Ruby ผู้ประกอบการ Ruby หมายเหตุ Ruby เงื่อนไข Ruby การไหลเวียน Ruby ทาง Ruby กลุ่ม Ruby โมดูล Ruby เชือก Ruby แถว Ruby กัญชา Ruby วันที่และเวลา Ruby ขอบเขต Ruby iterator Ruby input และ output ไฟล์ Ruby File ชั้นเรียนและวิธี Ruby Dir ชั้นเรียนและวิธี Ruby ผิดปกติ

Ruby การสอนที่ทันสมัย

Ruby เชิงวัตถุ Ruby นิพจน์ปกติ Ruby การเข้าถึงฐานข้อมูล - DBI หลักสูตร Ruby MySQL Ruby CGI โครงการ Ruby CGI ทาง Ruby CGI Cookies Ruby CGI Sessions Ruby ส่ง Email SMTP Ruby Socket โครงการ Ruby XML, XSLT, XPath Ruby Web Services Ruby multithreading Ruby JSON Ruby RubyGems

การเขียนโปรแกรม CGI ทับทิม

ทับทิมเป็นภาษาสากลที่ไม่เพียงหนึ่งที่ใช้ในการพัฒนาเว็บภาษา แต่การพัฒนาทับทิมในงานเว็บและเครื่องมือบนเว็บที่พบมากที่สุด

ไม่เพียง แต่คุณสามารถใช้ทับทิมจะเขียนเซิร์ฟเวอร์ของคุณเอง SMTP โปรแกรม FTP หรือทับทิมเว็บเซิร์ฟเวอร์ แต่ยังสามารถใช้ในการเขียนโปรแกรม CGI ทับทิม

ขอใช้เวลาสักครู่เพื่อเรียนรู้ทับทิม CGI แก้ไข


การท่องเว็บ

เพื่อทำความเข้าใจวิธี CGI ทำงานเราสามารถคลิกที่ลิงค์บนหน้าเว็บหรือ URL ของกระบวนการ:

  • 1 ใช้เบราว์เซอร์ของคุณเพื่อเข้าถึง URL และเชื่อมต่อไปยังเว็บเซิร์ฟเวอร์ HTTP
  • 2 เว็บเซิร์ฟเวอร์ได้รับข้อความร้องขอจะถูกแยก URL และมองไฟล์เข้าถึงได้บนเซิร์ฟเวอร์ถ้ามีถ้ามีจะกลับเนื้อหาของแฟ้มมิฉะนั้นก็จะส่งกลับข้อผิดพลาด
  • 3, เบราว์เซอร์ได้รับข้อมูลจากเซิร์ฟเวอร์และแสดงไฟล์ที่ได้รับหรือข้อความผิดพลาด

โปรแกรม CGI สามารถเป็นสคริปต์ทับทิมสคริปต์ Python สคริปต์ PERL, เชลล์สคริปต์โปรแกรม C หรือ C ++


แผนภูมิ CGI

cgiarch


การกำหนดค่าเซิร์ฟเวอร์เว็บและการสนับสนุน

ก่อนที่จะทำการเขียนโปรแกรม CGI, ให้แน่ใจว่าเว็บเซิร์ฟเวอร์ของคุณได้รับการกำหนดค่าให้สนับสนุน CGI และ CGI จัดการ

Apache สนับสนุนการกำหนดค่า CGI:

ตั้งค่าไดเรกทอรี CGI นี้:

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

เซิร์ฟเวอร์ HTTP ทั้งหมดที่จะรันโปรแกรม CGI จะถูกเก็บไว้ในไดเรกทอรีที่กำหนดไว้ล่วงหน้า ไดเรกทอรีนี้เรียกว่าไดเรกทอรี CGI และโดยการประชุมมันเป็นชื่อ / var / www / directory cgi-bin

CGI .cgi นามสกุลไฟล์ทับทิมยังสามารถใช้ในการขยาย .rb

โดยค่าเริ่มต้นการกำหนดค่าเซิร์ฟเวอร์ Linux ทำงานไดเรกทอรี cgi-bin เป็น / var / www

หากคุณต้องการที่จะระบุไดเรกทอรีที่แตกต่างกันเพื่อเรียกใช้สคริปต์ CGI, คุณสามารถปรับเปลี่ยนการตั้งค่าไฟล์ httpd.conf ดังต่อไปนี้:

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

เพิ่ม AddHandler ต่อท้าย .rb เพื่อให้เราสามารถเข้าถึงปลาย .rb ของไฟล์สคริปต์ทับทิม:

AddHandler cgi-script .cgi .pl .rb

เขียนสคริปต์ CGI

พื้นฐานรหัส CGI ทับทิมดังนี้

#!/usr/bin/ruby

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

คุณสามารถเก็บรหัสเพื่อ test.cgi ไฟล์เซิร์ฟเวอร์และคนสุดท้ายที่จะบอกสิทธิ์เพียงพอในการดำเนินการตามสคริปต์ซีจี

ถ้าที่อยู่ที่คุณยืนเป็น http://www.example.com/, http://www.example.com/test.cgi ใช้ในการเข้าถึงโปรแกรมผลลัพธ์คือ: "นี่คือการทดสอบ."

เบราว์เซอร์ในการเข้าถึงเว็บไซต์ที่เว็บเซิร์ฟเวอร์จะพบไฟล์ test.cgi ในไดเรกทอรีเว็บไซต์และจากนั้นในการแก้ไขล่ามและสคริปต์รหัสทับทิมโดยการเข้าถึงเอกสาร HTML


ใช้ cgi.rb

ทับทิมสามารถเรียกห้องสมุด CGI การเขียนสคริปต์ CGI ที่ซับซ้อนมากขึ้น

รหัสต่อไปนี้เรียกว่าห้องสมุดสคริปต์ CGI เพื่อสร้างสคริปต์ซีจี

#!/usr/bin/ruby

require 'cgi'

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

รหัสต่อไปนี้สร้างวัตถุ CGI และหัวพิมพ์ข้อมูล


ประมวลผลแบบฟอร์ม

การใช้ห้องสมุด CGI สามารถหาได้ในสองวิธีที่จะส่งแบบฟอร์ม (หรือพารามิเตอร์ใน URL) ของข้อมูลเช่น URL :? /cgi-bin/test.cgi FirstName = Zara และนามสกุล = อาลี

คุณสามารถใช้ CGI # [] โดยตรงได้รับพารามิเตอร์ FirstName และนามสกุล:

#!/usr/bin/ruby

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

อีกวิธีหนึ่งสำหรับการได้รับข้อมูลรูปแบบ:

#!/usr/bin/ruby

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

รหัสต่อไปนี้จะใช้ในการดึงข้อมูลที่สำคัญทั้งหมด:

#!/usr/bin/ruby

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

หากรูปแบบมีหลายเขตข้อมูลที่มีชื่อเดียวกันแล้วค่าของเขตข้อมูลเดียวกันจะถูกเก็บไว้ในอาร์เรย์

ตัวอย่างต่อไปนี้ระบุรูปแบบของสามช่องเหมือนกัน "ชื่อ" ค่าของ "ซาร่า", "Huma" และ "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"]}

หมายเหตุ: ทับทิมอัตโนมัติจะตรวจสอบวิธี GET และ POST ที่มีความจำเป็นที่จะแยกแยะความแตกต่างระหว่างสองวิธี

นี่คือรหัส 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>

การสร้างรูปแบบและแบบฟอร์ม HTML

CGI มีหลายวิธีที่จะสร้าง HTML แท็ก HTML แต่ละคนมีวิธีการที่สอดคล้องกัน ก่อนที่จะใช้วิธีการเหล่านี้จะต้องอัตราส่วน CGI ในการสร้างวัตถุ CGI.new

เพื่อที่จะทำให้ฉลากรังง่ายขึ้นวิธีการเหล่านี้จะเป็นเนื้อหาที่เป็นบล็อกของรหัสการป้องกันรหัสส่งกลับสตริงเป็นป้ายเนื้อหา ดังต่อไปนี้:

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

หลบหนีสตริง

เมื่อคุณกำลังเผชิญกับพารามิเตอร์ใน URL หรือ HTML ข้อมูลในแบบฟอร์มที่คุณจะต้องระบุตัวอักษรพิเศษหลบหนีเช่นเครื่องหมายคำพูด ( "), ทับ (/)

ทับทิม CGI วัตถุให้ CGI.escape CGI.unescape และวิธีการที่จะจัดการกับการหลบหนีอักขระพิเศษเหล่านี้:

#!/usr/bin/ruby

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

รหัสข้างต้นจะถูกดำเนินการดังต่อไปนี้:

#!/usr/bin/ruby

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

อีกชุดหนึ่งตัวอย่าง:

#!/usr/bin/ruby

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

รหัสข้างต้นจะถูกดำเนินการดังต่อไปนี้:

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

วิธีการเรียน CGI ที่ใช้กันทั่วไป

นี่คือวิธีการที่สมบูรณ์ในระดับ CGI ทับทิม

  • CGI ทับทิม - วิธีห้องสมุด CGI มาตรฐานที่เกี่ยวข้อง

คุกกี้และการประชุม