46
Lập trình mạng – Chương 5 1 LẬP TRÌNH WEB – CGI 5.1 Giới thiệu về lập trình web 5.2 HTMLs và FORMs 5.3 Lập trình web ở Client 5.4 DHTML 5.5 Phương pháp lập trình web với CGI

Lập trình web – cgi

Embed Size (px)

Citation preview

Page 1: Lập trình web – cgi

Lập trình mạng – Chương 5 1

LẬP TRÌNH WEB – CGI

5.1 Giới thiệu về lập trình web5.2 HTMLs và FORMs5.3 Lập trình web ở Client5.4 DHTML 5.5 Phương pháp lập trình web với CGI

Page 2: Lập trình web – cgi

Lập trình mạng – Chương 5 2

5.1 Giới thiệu về lập trình web• Hệ thống WWW tĩnh:• Tập hợp các trang HTML• Không tương tác được với user• Khó khăn trong việc cập nhật thông tin thường xuyên.

• Ứng dụng web:• Có thể tương tác với user.• Có thể tương tác với các ứng dụng khác.

Page 3: Lập trình web – cgi

Lập trình mạng – Chương 5 3

5.1 Giới thiệu về lập trình web• Các đặc điểm của ứng dụng web:• Không phải là một ứng dụng độc lập, là ứng dụng chạy trên nền web-server.• Người lập trình có thể thực hiện các thao tác trên ứng dụng web như với một

ứng dụng độc lập.• Có thể lấy thông tin từ user.

Page 4: Lập trình web – cgi

Lập trình mạng – Chương 5 4

5.2 HTMLs và FORMs• HTML(HyperText Markup Language):• Là ngôn ngữ dùng để biểu diễn trang web thông qua các tags.• Thông qua các tags có thể định dạng cách hiển thị trang web.• Một trang HTML có thể chèn các hình ảnh, âm thanh trong nó, có thể liên kết

đến các trang HTML khác.

Page 5: Lập trình web – cgi

Lập trình mạng – Chương 5 5

5.2 HTMLs và FORMs• Các tags HTML cơ bản:• Khung của một file HTML:<html> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Tiêu đề của trang web</title></head><body><!-- Nội dung trang web được trình bày ở đây--></body></html>

Page 6: Lập trình web – cgi

Lập trình mạng – Chương 5 6

5.2 HTMLs và FORMs• Các tags HTML cơ bản:• Tiêu đề:

• <Hn>…</Hn> (n: 1=>6)• Phân đoạn:

• <p> … </p>• Kiểu chữ:

• In đậm: <b>…</b>• In nghiêng: <i> … </i>• Gạch dưới: <u> … </u>

Page 7: Lập trình web – cgi

Lập trình mạng – Chương 5 7

5.2 HTMLs và FORMs• Các tags HTML cơ bản:• Danh sách:

• Đánh thứ tự: <ol> [<li>]+ </ol>• Không đánh thứ tự: <ul> [<li>]+ </ul>

• Bảng:<table border="1" width="100%"> [<tr> [<td> … </td>]+ </tr>]+</table>Trộn các ô: <td colspan=“số cột trộn">&nbsp;</td>

Page 8: Lập trình web – cgi

Lập trình mạng – Chương 5 8

5.2 HTMLs và FORMs• Các tags HTML cơ bản:• Chèn hình ảnh:

• <img border="#" src="*" width="*" height="*">• Tạo điểm đánh dấu (bookmark): <a name="*">• Liên kết đến bookmark:

• <a href="#bookmark-name"> … </a>• Liên kết đến một trang web khác:

• <a href="path"> … </a> • Liên kết đến địa chỉ e-mail:

• <a href="mailto:e-mail address"> … </a>

Page 9: Lập trình web – cgi

Lập trình mạng – Chương 5 9

5.2 HTMLs và FORMs• Các tags HTML cơ bản:• Giữ định dạng đoạn khi soạn thảo:

• <pre> … </pre>• Các ký tự đặc biệt:

• Khoảng trắng: &nbsp;• © : &copy;• ® : &reg;• < : &lt;• > : &gt;• & : &amp;

Page 10: Lập trình web – cgi

Lập trình mạng – Chương 5 10

5.2 HTMLs và FORMs• Các tags HTML cơ bản:• Số mũ:

• Superscript: <sup> … </sup>• Subscript: <sub> … </sup>

• Định dạng font chữ:• <font face=“” size=“” color=“”>…</font>

• Đường ngăn cách:• <hr size=“” width=“”>

• Xuống dòng trong một đoạn:• <br>

Page 11: Lập trình web – cgi

Lập trình mạng – Chương 5 11

5.2 HTMLs và FORMs• Tạo các frame:• Khái niệm frame trong HTML cho phép hiển thị nhiều trang

HTML đồng thời.• Minh họa:

Page 12: Lập trình web – cgi

Lập trình mạng – Chương 5 12

5.2 HTMLs và FORMs• Cú pháp tạo frame:

<frameset [name=“”] {cols|rows}=“[%, ]*{%}”>[<frame src=“file HTML” [name=“”] [target=“”]>]+

[<noframes>Your browser doesn't support them.

</noframes>]</frameset>

Page 13: Lập trình web – cgi

Lập trình mạng – Chương 5 13

5.2 HTMLs và FORMs• FORMs• Là các thành phần của HTML cho phép user có thể nhập thông tin vào.• Tương tự như giao diện của một ứng dụng bao gồm: textbox, listbox,

checkbox, …• Dữ liệu được do user nhập được truyền giữa web-client và web-server thông

qua FORMs• Dùng các tags để thiết kế.

Page 14: Lập trình web – cgi

Lập trình mạng – Chương 5 14

5.2 HTMLs và FORMs• FORMs• Cấu trúc cơ bản của một form:

<FORM ACTION=“file" METHOD={GET|POST}>[<INPUT TYPE=“” NAME=“” VALUE="">]+

</FORM> • Các loại (type) INPUT:

• TEXT: là textbox dùng để nhập dữ liệu.• Cú pháp:

<INPUT [TYPE=TEXT] NAME="text-id" [SIZE=nn] [MAXLENGTH=nn] [VALUE="default text"]>

Page 15: Lập trình web – cgi

Lập trình mạng – Chương 5 15

5.2 HTMLs và FORMs• FORMs(tt)• Các loại (type) INPUT:

• SUBMIT: truyền dữ liệu form đến ứng dụng web• Cú pháp: <INPUT TYPE=SUBMIT [NAME="button-id"]

[VALUE="text"]> • RESET:đưa nội dung của form trở về giá trị ban đầu

• Cú pháp: <INPUT TYPE=RESET [VALUE=“text"]> • BUTTON: nút nhấn bất kỳ

• Cú pháp: <INPUT TYPE=BUTTON [NAME="button-id"] [VALUE="text"]>

Page 16: Lập trình web – cgi

Lập trình mạng – Chương 5 16

5.2 HTMLs và FORMs• FORMs(tt)• Các loại (type) INPUT:

• RATIO: chọn lựa một trong nhiều• Cú pháp: <INPUT TYPE=RADIO NAME="radio-set-id" VALUE="choice-

id" [checked]><input type="radio" value="V1" checked name="R1">Option 1<br><input type="radio" value="V2" name="R1">Option 2<br><input type="radio" value="V2" name="R1">Option 3

Page 17: Lập trình web – cgi

Lập trình mạng – Chương 5 17

5.2 HTMLs và FORMs• FORMs(tt)• Các loại (type) INPUT:

• CHECKBOX: lựa chọn một hoặc nhiều • Cú pháp: <INPUT TYPE=CHECKBOX NAME="id"

VALUE="choice-id" [CHECKED]> • Ví dụ:

<input type="checkbox" name="C1“ value="ON">Check 1 <br> <input type="checkbox" name="C1" value="ON" checked>Check 2

Page 18: Lập trình web – cgi

Lập trình mạng – Chương 5 18

5.2 HTMLs và FORMs• FORMs(tt)• Các loại (type) INPUT:

• HIDDEN: dữ liệu không hiển thị• Cú pháp: <INPUT TYPE=HIDDEN NAME="id"

VALUE="data">

• Nhập vùng văn bản: TEXTAREA• <TEXTAREA NAME="id" [COLS=nn] [ROWS=nn]>default text</TEXTAREA>

Page 19: Lập trình web – cgi

Lập trình mạng – Chương 5 19

5.2 HTMLs và FORMs• FORMs(tt)• Lựa chọn listbox: SELECT

• <SELECT NAME="id" [SIZE=nn] [MULTIPLE]>[<OPTION [VALUE=“value"] [SELECTED]>text ]+</SELECT>

<select size="1" name="D1"> <option value="501097">Mạng máy tính</option><option value="501016">Lập trình mạng</option></select>

Page 20: Lập trình web – cgi

Lập trình mạng – Chương 5 20

5.3 Lập trình web ở Client• Các trang HTML web có thể được lập trình để thực hiện các thao tác

thực thi trên web client.• Các phương pháp phổ biến để lập trình hiện nay:• Script (Javascript, Vbscript)• Java Applet• ActiveX Control

Page 21: Lập trình web – cgi

Lập trình mạng – Chương 5 21

5.3 Lập trình web ở Client• Javascript ở client:• Ngôn ngữ kịch bản chạy trên web client. Có thể làm việc khác nhau trên các

loại web browser khác nhau.• Code được chèn xen kẽ với các tags HTML• Các đoạn mã Javasript được chạy dựa vào các sự kiện của các phần tử HTML• Cú pháp các câu lệnh giống ngôn ngữ Java• Không tương tác được với server

Page 22: Lập trình web – cgi

Lập trình mạng – Chương 5 22

5.3 Lập trình web ở Client• Cú pháp cho một đoạn code Javascript:

<script language=“JavaScript”>//các khai báo biến[var variable;]*//các lệnh gọi hàm và các hàmfunction function-name([agrv]*){//các câu lệnh khai báo và thực thi[return [value];]}</script>

• Sử dụng file Javascript (*.js) đã có:<script language="JavaScript" src="*.js"></script>

Page 23: Lập trình web – cgi

Lập trình mạng – Chương 5 23

5.3 Lập trình web ở Client• Các đối tượng được xây dựng sẵn trong JavaScript:• window: chứa các thuộc tính liên quan đến cửa sổ hiện thời• document: chứa các thuộc tính trong trang web• location: các thuộc tính về địa chỉ trang web• history: các thuộc tính về vị trí mà web browser đã đến

Page 24: Lập trình web – cgi

Lập trình mạng – Chương 5 24

5.3 Lập trình web ở Client• Mỗi phần tử trong trang HTML đều có thể coi là một đối tượng, có

thể khai báo sự kiện để gọi hàm Javascript.• Cú pháp:

<tags-name [properties]* [event-name=“procedure call” ]*>

• Các sự kiện có thể dùng:• onClick: click chuột vào đối tượng.• onFocus: focus vào đối tượng trong form.

Page 25: Lập trình web – cgi

Lập trình mạng – Chương 5 25

5.3 Lập trình web ở Client• Javascript• Các sự kiện có thể dùng(tt):

• onMouseOver: di chuyển chuột vào trên đối tượng.• onMouseOut: di chuyển chuột ra khỏi đối tượng.• onChange: thay đổi giá trị của các đối tượng chứa văn bản.• onBlur: chuyển focus khỏi đối tượng trong form.• onSelect: chọn phần tử trong listbox.• onLoad: xảy ra khi một document được load.

Page 26: Lập trình web – cgi

Lập trình mạng – Chương 5 26

5.3 Lập trình web ở Client• Javascript• Có thể dùng để thiết lập/kiểm tra các dữ liệu nhập trên form

ở phía web client.• Truy xuất các phần tử trong form thông qua JavascriptCác cú pháp bên dưới dùng

form = window.document.form-name• checkbox

form.check-name.checked = {true|false}Trường hợp dùng nhiều checkbox cùng tên(nhóm)

var check_len = form.check-name.length;for (i = 0; i < len; i++){

form.check-name[i].checked={true|false};}

Page 27: Lập trình web – cgi

Lập trình mạng – Chương 5 27

5.3 Lập trình web ở Client• Javascript• Option button

form.option_name[index].checked = {true|false}• Select

form.select_name.options[index].selected = {true|false}Chỉ số hiện thời đang được chọn:

form.select_name.selectedIndex• Text

form.text_name.value

Page 28: Lập trình web – cgi

Lập trình mạng – Chương 5 28

5.3 Lập trình web ở Client• Kiểm tra phần tử SELECT

var select_value;function dropDownMenu() {var myindex=document.forms[0].menu.selectedIndex;if (myindex==0) {alert("\nYou must make a selection from the drop-down menu.");document.forms[0].menu.focus();}else {select_value =document.forms[0].menu.options[myindex].value;return true; }}

Page 29: Lập trình web – cgi

Lập trình mạng – Chương 5 29

5.3 Lập trình web ở Clientfunction isEmail() {if (document.forms[0].elements[1].value == '') {alert ("\n The E-Mail field is blank. \n\n “+“Please enter your E-Mail address.")

document.forms[0].elements[1].focus();return false;}if (document.forms[0].elements[1].value.indexOf ('@',0) == -1 ||document.forms[0].elements[1].value.indexOf ('.',0) == -1) {alert ("\n The E-Mail field requires a \"@\" and a \".\""+ "be used. \n\nPlease re-enter your E-Mail address.")document.forms[0].elements[1].select();document.forms[0].elements[1].focus();return false;}return true;}

Page 30: Lập trình web – cgi

Lập trình mạng – Chương 5 30

5.3 Lập trình web ở Client• Java Applet:• Là một ứng dụng được viết bằng Java, nhúng trong trang HTML.• Khi trang HTML có chứa tag applet được gọi, class applet được tải về máy

client và thực thi trên máy client.• Một ứng dụng applet phải thừa kế class java.applet.Applet • Có thể thực hiện các thao tác như một chương trình Java, tuy nhiên bị hạn

chế một số chức năng vì tính bảo mật cho máy client.

Page 31: Lập trình web – cgi

Lập trình mạng – Chương 5 31

5.3 Lập trình web ở Client//file SampleApplet.javaimport java.applet.*; import java.awt.*;

public class SampleApplet extends Applet {

String text = "error"; int x = 0; int y = 20;

public void init() {

text = getParameter("text");

try { x = Integer.parseInt(getParameter("x"));

y = Integer.parseInt(getParameter("y")); }catch(NumberFormatException ex){ }

}

public void paint(Graphics g) {

g.setFont(new Font("TimesRoman",Font.BOLD+

Font.ITALIC,36));

g.drawString(text,x,y);

}

}

Page 32: Lập trình web – cgi

Lập trình mạng – Chương 5 32

5.3 Lập trình web ở Clientsample.html

<HTML> <HEAD> <TITLE>Using the Applet Tag</TITLE> </HEAD> <BODY> <H1>An Applet that Displays Text at a Designated Location</H1><APPLET CODE="SampleApplet.class" HEIGHT=300 WIDTH=300> <PARAM NAME="text" VALUE="Applets are fun!"> <PARAM NAME="x" VALUE="50"> <PARAM NAME="y" VALUE="50"> Text displayed by browsers that are not Java-enabled. </APPLET> </BODY> </HTML>

Page 33: Lập trình web – cgi

Lập trình mạng – Chương 5 33

5.3 Lập trình web ở Client• Hoạt động của một Applet• Được web browser tải mã(byte code) về máy client.• Method init() sẽ được gọi để khởi động các thông số.• Method start() được gọi để thực thi.• Method stop() được gọi khi người dùng thoát khỏi applet • Method destroy() được thực thi khi applet kết thúc.

• ActiveX Control: tương tự như Java Applet, được viết bởi các công nghệ của Mircosoft.

Page 34: Lập trình web – cgi

Lập trình mạng – Chương 5 34

5.4 DHTML• DHTML (Dynamic HTML) là trang HTML có chứa các đoạn mã

JavaScript tạo các hiệu ứng, thay đổi các phần tử trong trang HTML. • DHTML kết hợp giữa HTML, Javascript và Cascading Style Sheets(CSS).• CSS là sự kết hợp giữa các tags HTML và style. Style có thể chứa nhiều

thuộc tính.

Page 35: Lập trình web – cgi

Lập trình mạng – Chương 5 35

5.4 DHTML• Mọi tags HTML đều có style. Javascript có thể dựa trên các biến cố để

thay đổi các thuộc tính của style.• Mỗi phần tử trong trang HTML đều có thể được gán ID (khác với

name) và có các thuộc tính style.• Có thể dùng tag <div id=“”>…</div>• Mỗi web browser có thể thực thi một số lệnh khác nhau.

Page 36: Lập trình web – cgi

Lập trình mạng – Chương 5 36

5.4 DHTML• Phát hiện loại web browser:• Dùng các thuộc tính appName và appVersion của đối tượng navigator

var browser_name= navigator.appName;var browser_version = navigator.appName;alert(“You use browser “+browser_name+” version “+ browser_version);

• Phân biệt hai loại chính:if(document.all){ //IEthe_div=eval(“window.document.all.”+div_name+”.style”);

}else if(document.layers){//Netscapethe_div=eval(“window.document.all.”+div_name);

}

Page 37: Lập trình web – cgi

Lập trình mạng – Chương 5 37

5.4 DHTML<HTML><HEAD><TITLE>Javascipt example about timer</TITLE><SCRIPT language="JavaScript"><!--var second_counter=0, counter=0;function my_timer(){ D = new Date();seconds= D.getSeconds();if(seconds!=second_counter) counter++;second_counter=seconds;if(counter>=1000) counter=0;document.images[0].src= get_images(counter/100);document.images[1].src= get_images((counter%100)/10);document.images[2].src= get_images(counter%10);SecondText.innerText=counter;setTimeout('my_timer()',1000);}

Page 38: Lập trình web – cgi

Lập trình mạng – Chương 5 38

5.4 DHTMLfunction get_images(number){var newNum= Math.floor(number);return "../images/"+newNum+".jpg";}--></SCRIPT></HEAD><BODY onload='my_timer()'><P><FONT face=System>Timer : <IMG alt="" src="../images/0.jpg" width="13" height="23"><IMG alt="" src="../images/0.jpg" width="13" height="23"><IMG alt="" src="../images/0.jpg" width="13" height="23"> <FONT face="Arial Black" ID="SecondText">000</FONT> seconds</FONT></P></BODY></HTML>

Page 39: Lập trình web – cgi

Lập trình mạng – Chương 5 39

5.5 Lập trình web với CGI• Trang HTML chỉ chứa các nội dung cố định hoặc có thể thao tác thay

đổi qua DHTML ở client• Nhu cầu sử dụng các trang web như một ứng dụng (giao tiếp với user,

tìm kiếm, nội dung thay đổi, tương tác các ứng dụng, với database…)=> ứng dụng web• CGI (Common Gateway Interface) là một chuẩn (standard) để viết ứng

dụng web

Page 40: Lập trình web – cgi

Lập trình mạng – Chương 5 40

5.5 Lập trình web với CGI• Một ứng dụng web theo chuẩn CGI có các đặc điểm:• Là ứng dụng chạy trên nền web server. • Nhận thông tin từ web browser và xuất thông tin để web browser hiển thị

thông qua web server.• Ứng dụng có thể được viết với bất cứ ngôn ngữ lập trình có standard input và

standard output. (C/C++, Perl, Shell script, Dos shell…)

Page 41: Lập trình web – cgi

Lập trình mạng – Chương 5 41

5.5 Lập trình web với CGI• Cách thức hoạt động của ứng dụng web CGI:• Web server nhận request ứng dụng CGI từ browser.• Web server gọi ứng dụng CGI, truyền các thông số bằng các biến môi

trường(thông qua standard input).• Ứng dụng web CGI xử lý, giao tiếp với các ứng dụng khác (database, mail…),

xuất kết quả dạng HTML qua standard output đến web server.• Web server nhận kết quả và trả về cho browser.

Page 42: Lập trình web – cgi

Lập trình mạng – Chương 5 42

5.5 Lập trình web với CGI• Hình vẽ minh họa hoạt động CGI

Page 43: Lập trình web – cgi

Lập trình mạng – Chương 5 43

5.5 Lập trình web với CGI• Ví dụ (Perl):

1 #!/usr/bin/perl 2 # A very common echo script on just about every server 3 $| = 1; 4 print "Content-type: text/plain\n\n"; 5 print "CGI/1.0 test script report\n\n"; 6 if ($ENV{'REQUEST_METHOD'} eq "POST") { 7 $form = <STDIN>; 8 print "$form \n"; 9 } else {10 print "argc is $#ARGV \nargv is ";11 while (@ARGV) {12 $ARGV=shift;13 print "$ARGV "; 14 }15 }

Page 44: Lập trình web – cgi

Lập trình mạng – Chương 5 44

5.5 Lập trình web với CGI• Ví dụ (Perl):

16 print "\n";17 #18 print "SERVER_SOFTWARE = $ENV{'SERVER_SOFTWARE'}\n"; 19 print "SERVER_NAME = $ENV{'SERVER_NAME'}\n";20 print "GATEWAY_INTERFACE = $ENV{'GATEWAY_INTERFACE'}\n"; 21 print "SERVER_PROTOCOL = $ENV{'SERVER_PROTOCOL'}\n"; 22 print "SERVER_PORT = $ENV{'SERVER_PORT'}\n";23 print "SERVER_ROOT = $ENV{'SERVER_ROOT'}\n";24 print "REQUEST_METHOD = $ENV{'REQUEST_METHOD'}\n"; 25 print "HTTP_AccEPT = $ENV{'HTTP_AccEPT'}\n";26 print "PATH_INFO = $ENV{'PATH_INFO'}\n";27 print "PATH = $ENV{'PATH'}\n";28 print "PATH_TRANSLATED = $ENV{'PATH_TRANSLATED'}\n"; 29 print "SCRIPT_NAME = $ENV{'SCRIPT_NAME'}\n";

Page 45: Lập trình web – cgi

Lập trình mạng – Chương 5 45

5.5 Lập trình web với CGI• Ví dụ (Perl):

30 print "QUERY_STRING = $ENV{'QUERY_STRING'}\n";31 print "QUERY_STRING_UNESCAPED = $ENV{'QUERY_STRING_UNESCAPED'}\n"; 32 print "REMOTE_HOST = $ENV{'REMOTE_HOST'}\n";33 print "REMOTE_IDENT = $ENV{'REMOTE_IDENT'}\n";34 print "REMOTE_ADDR = $ENV{'REMOTE_ADDR'}\n";35 print "REMOTE_USER = $ENV{'REMOTE_USER'}\n";36 print "AUTH_TYPE = $ENV{'AUTH_TYPE'}\n";37 print "CONTENT_TYPE = $ENV{'CONTENT_TYPE'}\n";38 print "CONTENT_LENGTH = $ENV{'CONTENT_LENGTH'}\n"; 39 print "DOCUMENT_ROOT = $ENV{'DOCUMENT_ROOT'}\n"; 40 print "DOCUMENT_URI = $ENV{'DOCUMENT_URI'}\n";41 print "DOCUMENT_NAME = $ENV{'DOCUMENT_NAME'}\n"; 42 print "DATE_LOCAL = $ENV{'DATE_LOCAL'}\n";43 print "DATE_GMT = $ENV{'DATE_GMT'}\n";44 print "LAST_MODIFIED = $ENV{'LAST_MODIFIED'}\n";

Page 46: Lập trình web – cgi

Lập trình mạng – Chương 5 46