– Là một trang nội dung, có thể được viết bằng nhiều ngôn ngữ khác nhau nhưng có kết quả trả về client là HTML.. Website.[r]
(1)PHP The First Day
Đào Quang Minh Trung tâm Tính tốn Hiệu cao – ĐHBK Hà Nội
minh0302@gmail.com
(2)Chương 1: Tổng quan thiết kế Web
Nhắc lại số khái niệm Phân loại website
Một số bước phát triển website Giới thiệu hướng dẫn cài đặt phần
mềm hỗ trợ xây dựng website
(3)(4)Một số khái niệm cần thiết
Domain Name
– Là tên gắn với địa IP
– Máy chủ DNS thực việc gắn (ánh xạ) có yêu cầu truy cập
– Được chia làm nhiều cấp, phân biệt dấu chấm – Ví dụ: hpcc.hut.edu.vn gắn với 202.191.56.49
• vn: Việt Nam (cấp 1)
• edu: Tổ chức giáo dục (cấp 2) • hut: Tên quan (cấp 3)
• hpcc: Đơn vị quan (cấp 4)
(5)(tiếp)
Máy chủ
– Là máy chuyên cung cấp tài nguyên, dịch vụ cho máy tính khác
– Thường cài đặt phần mềm chuyên dụng để có khả cung cấp
– Một máy chủ dùng cho hay nhiều mục đích Tên máy chủ thường gắn với mục đích sử dụng Ví dụ:
• File server
• Application server • Mail server
• Web server
(6)(tiếp)
Máy khách
– Máy khai thác dịch vụ máy chủ
– Với dịch vụ thường có phần mềm chuyên biệt để khai thác
– Một máy tính vừa client vừa server – Một máy tính khai thác dịch vụ
(7)(tiếp)
Cổng dịch vụ
– Là số thuộc vào khoảng 0-65535, dùng để xác định dịch vụ máy chủ
– Hai dịch vụ khác chiếm cổng khác
– Mỗi dịch vụ thường chiếm cổng xác định Ví dụ theo mặc định là:
(8)(tiếp)
Chuỗi định vị tài nguyên (URL – Uniform
Resource Locator)
– Tài nguyên: file mạng
– Xác định vị trí cách khai thác file – Cấu trúc: giao_thức://địa_chỉ_máy (hoặc
IP)/đường_dẫn/tên_file
– VD: http://www.hut.edu.vn/content/index.php
– Trong trường hợp mặc định, nhiều thành phần bỏ qua:
(9)(tiếp)
Web page
– Là trang nội dung, viết nhiều ngơn ngữ khác có kết trả client HTML
Website
– Tập hợp web page có nội dung thống phục vụ cho mục đích
WWW (World Wide Web)
– Tập hợp website mạng Internet
Web Server
– Là máy phục vụ web (chạy máy chủ)
– Một số phần mềm web server chuyên dụng như: Apache (open source) Internet Information Services – IIS (Microsoft)
Web Browser
(10)(11)Phân loại website
Dựa vào cơng nghệ phát triển, có loại:
– Web tĩnh:
• Dễ phát triển • Tương tác yếu • Sử dụng HTML
• Cơng cụ trực quan
– Web động:
• Khó phát triển • Tương tác mạnh
• Sử dụng nhiều ngôn ngữ khác
(12)(tiếp)
– Mọi người sử dụng nhận kết giống
– Trang web viết HTML, thay đổi có thay đổi người xây dựng
– Khả tương tác yếu
– Webserver hoạt động giống file server
Web Server
URL yêu cầu
URL yêu cầu
HTML
HTML
Client
Network
(13)(tiếp)
– Mỗi người sử dụng nhận nội dung khác phụ thuộc vào kết chạy chương trình
– Trang web viết HTML + Ngơn ngữ lập trình phía server Có thể thay đổi người sử dụng
– Khả tương tác mạnh
Web Server
URL yêu cầu
URL yêu cầu
HTML
HTML
Client
Network Biên dịch,
Thực thi Trang web động
(14)(tiếp)
Một số công nghệ viết web động
– Động phía Client:
• JavaScript, VBScript chạy client • Applet
• Flash
– Động phía Server:
• Common Gateway Interface (CGI) • Java Server Pages (JSP)
• ASP: Microsoft
– Viết VBScript, JavaScript chạy phía server – Sử dụng web server IIS
• PHP: Mã nguồn mở
– Ngơn ngữ lập trình PHP, chạy phía server – Webserver: Apache, IIS
– Bộ biên dịch: PHP
(15)(16)Một số bước phát triển website
Phân tích thiết kế hệ thống
(17)(tiếp)
Một số ý
– Đặc tả: Website để làm gì? Ai dùng? Trình độ người dùng? Bố cục? Nội dung? Hình ảnh? v.v – Phân tích: Mối liệ quan nội dung? Thứ
tự nội dung? (kịch website)
– Thiết kế: Sơ đồ cấu trúc website, giao diện, tĩnh hay động, CSDL, nội dung trang, liên kết trang v.v
(18)(tiếp)
Kiểm thử
– Kiểm tra nhiều trình duyệt – Kiểm tra nhiều loại mạng
– Kiểm tra tốc độ loại đường truyền – Kiểm tra liên kết
(19)(20)Các phần mềm tảng xây dựng website
Operating System: Linux Web Server: Apache
(21)Các phần mềm hỗ trợ
Server Suites: LAMPP,XAMPP, EasyPHP
Integrated Development Environment
– NetBean, Eclipse, Dreamweaver
Database
(22)(tiếp)
XAMPP
– Download từ website:
http://www.apachefriends.org/en/xampp-linux.html
hoặc:
http://hpcc.hut.edu.vn/coursesk51/setups/ xampp-win32-1.7.1-installer.exe
– Cài đặt XAMPP: vào Terminal, gõ: tar xvfz
xampp-linux-1.7.1.tar.gz -C /opt
– Chú ý:
(23)(tiếp)
NetBean
– Download từ website:
http://dlc.sun.com/netbeans/6.5/beta/
hoặc:
http://hpcc.hut.edu.vn/coursesk51/setu ps/netbeans-6.5-ml-linux.sh
– Cài đặt: mở Terminal, gõ sh netbeans-6.5beta-linux.sh
(24)(tiếp)
MySQL
– Download từ website:
http://dev.mysql.com/downloads/gui-tools/5.0.html
– Tiến hành cài đặt thơng qua cửa sổ dịng lệnh Terminal
– Truy cập sở liệu thông qua MySQL
(25)(26)Viết chương trình PHP đầu tiên Cài đặt Xampp:
– Download gói cài đặt theo đường dẫn (ở phần trước)
– Khởi động xampp quyền root – Chuyển sang người dùng Root:
#sudo su
– Khởi động Xampp:
(27)(tiếp)
Sử dụng Nano Gedit để viết file php với dòng
lệnh sau:
<?php
$a = “PHP is so easy !”; echo $a;
?>
Lưu lại file vừa viết thành: index.php
Copy vào thư mục /opt/lampp/htdoc/coursek51/ Chạy PHP từ web browser:
(28)Chương 2: Làm quen với PHP
Tổng quan
Cú pháp ngôn ngữ Cấu trúc điều khiển
(29)(30)Tổng quan PHP
PHP: viết tắt hồi quy “PHP: Hypertext
Preprocessor”
Là ngơn ngữ lập trình để viết trang
web động chạy server
Bộ biên dịch PHP phần mềm mã nguồn
mở, chạy với web server như Apache, IIS,…
Thường kết hợp với hệ quản trị CSDL
(31)(tiếp) Có khả hướng đối tượng
Thông dịch
Phân biệt chữ hoa chữ thường
(32)(33)Cú pháp ngơn ngữ PHP
Chú thích PHP
– // # để bắt đầu dòng thích – /* … */ để bắt đầu đoạn thích
<?php
#Đây thích //Đây thích /*Đây thích Đây thích /*
(34)(tiếp)
Biến
– Phân biệt chữ hoa, chữ thường
– Bắt đầu dấu $, tiếp sau $ tên biến $a = 5; $A = 10;
– Tên biến bao gồm chữ cái, chữ số, dấu gạch nối (_) phải bắt đầu chữ (_) $a_1 = “Hello”; //hợp lệ
$5b = 10; //không hợp lệ
(35)(tiếp)
– Không cần khai báo trước (được tự động khai báo vào lần gán giá trị
– Việc sử dụng biến chưa khởi tạo gây lỗi
– Cho phép sử dụng giá trị biến làm tên biến khác
if($a<10) //không hợp lệ chưa khởi tạo $a
$a = “temp”;
(36)(tiếp)
PHP hỗ trợ kiểu liệu
– Số:
• Số nguyên: -231 đến 231 – 1
+ Hệ thập phân: $a = 16; + Hệ 16 (hexa): $a=0x10;
• Số thực: từ 1.7E-308 đến 1.7E+308
+ Biểu diễn: $a = 0.017;
+ Dạng khoa học: $a = 17.0E-03
– Chuỗi:
• Giới hạn nháy đơn („) kép (“)
• Chuỗi đặt dấu nháy kép bị thay xử ký ký tự cịn nháy đơn khơng VD:
$a = “Hello”;
$b = “$a World” //tương đương $b = “Hello World”
(37)(tiếp)
Chuỗi (tiếp)
– Để làm rõ biến chuỗi, cần bao biến vào cặp ngoặc nhọn { }
– Biến mảng, biến biến, biến tên có dấu gạch nối dấu chấm viết chuỗi bắt buộc phải bao lại
$a = “He”;
(38)(tiếp)
Chuỗi (tiếp)
– Ký tự thoát (\): sử dụng để viết ký tự đặc biệt chuỗi
Cần có chuỗi: He said:”PHP is good”!
$a = “He said: \“PHP is good\”!”;
– Một số ký tự buộc phải sử dụng ký tự thoát $,\, “,… ngồi cịn:
• \n: xuống dịng
(39)(tiếp)
Kiểu logic
– Có hai trạng thái true false function status ($in)
{
if ($in<5) return true; else return false;
}
(40)(tiếp)
Kiểu mảng
– Cho phép chứa nhiều giá trị liệu đánh mục số hay chuỗi
– Để truy cập vào phần tử, đặt số [ ] – Có thể sử dụng số khơng liên tiếp
– Có thể thêm phần tử vào cuối mảng cách bỏ số
$a[0] = “Xin”;
(41)(tiếp)
Kiểu mảng (tiếp)
– Chỉ số chuỗi
$a [“ho”] = “Nguyen”; $a [“ten”] = “Mai”;
– Mảng nhiều chiều (so phan tu cua mang)
• Được coi mảng mảng
$a[0][0] = “STT”; $a[0][1] = “1”;
$a[1][0] = “Ho ten”;
(42)(tiếp)
Kiểu mảng (tiếp)
– Khởi tạo mảng hàm array()
• Chỉ số mặc định
$a=array(“xin”, “chào”, “bạn”); /*tương đương với
$a[]=“xin”; $a[]=“chào”; $a[]=“bạn”;*/
• Chỉ số mặc định với số đầu khác
$a=array(5=>“xin”, “chào”, “bạn”); //phantu 5,6,7
/*tương đương với $a[5]=“xin”;
(43)(tiếp)
Khởi tạo mảng hàm array()(tiếp) – Chỉ số chuỗi:
$a=array(“ten”=>”Hồng”, “mau”=>”Đỏ”); /*Tương đương với:
$a[“ten”] = “Hồng”; $a[“mau”] = “Đỏ”;*/
– Mảng nhiều chiều:
$a = array(
array(“TT”, “Họ tên”), array(1,”Nguyễn Văn A”)
(44)(tiếp)
Ép kiểu kiểm tra kiểu
– Sử dụng cú pháp tương tự C/C++
$a = “123abc”; $so = (int) $a;
$kytu = (string) $a;
– Kiểm tra kiểu:
Gettype(),is_bool(),is _long(),
Ký hiệu Ý nghĩa kiểu (int), (integer) Số nguyên (real), (double),
(float) Số thập phân (string) Chuỗi
(array) Mảng
(object) Đối tượng
(bool), (boolean) Logic
(unset) NULL, tương tự
(45)(tiếp)
Toán tử
– Kiểu số:
• Kết hợp: +, -, *, /, % • Tăng giảm: ++,
VD: $a++; $a ; ++$a; $a;
– Chuỗi: Toán tử chấm (.)
– Logic: AND (&&), OR (||), XOR, !
– Gán: =, +=, -=, *=, /=, %=, &=,^=,.= – So sánh: ==, !=, <, >, <=, >=
(46)(47)(48)switch
switch ($biến){
case (giá_trị1): các_lệnh1;
case (giá_trị2): các_lệnh2;
default:
các_lệnh_khác;
(49)Lặp không xác định While do
while (BTLG) {
các lệnh; }
do {
các_lệnh
(50)Lặp xác định for
for (lệnh_khởi_tạo; BTLG; lệnh2){ các_lệnh;
}
foreach ($biến_mảng as $giá_trị){ lệnh;
}
foreach ($biến_mảng as $khoá=>$giá_trị){ lệnh;
(51)Break Continue
Break: Kết thúc khối lệnh for, while, do-while hoặc switch
Continue: bỏ qua phần sau continue
(52)Hàm tự tạo function
Khái báo hàm
Để trả giá trị cho hàm ta sử dụng lệnh return biểu_thức;
Để thoát khỏi hàm:
– sử dụng return
– exit;
function tên_hàm(ts1, ts2,…, tsn) { //các lệnh thân hàm
(53)Hàm tự tạo (tt)
Gọi hàm:
tên_hàm(gt1,gt2,…,gtn); Chú ý:
– Nếu hàm khơng có tham số, khai báo hàm, gọi hàm phải giữ lại ()
– Để khai báo hàm với tham số mặc định, khai báo ta đưa giá trị tham số vào
(54)Phạm vi biến
Phạm vi biến phạm vi biến xác định
Trong PHP, biến có phạm vi:
– Local variables - Biến cục bộ:
• Khởi tạo hàm
• Có tác dụng từ khởi tạo đến hết hàm
– Global variables - Biến tồn cục:
• Khởi tạo ngồi hàm
• Có tác dụng từ khởi tạo đến hết file trừ hàm • Để đưa biến toàn cục vào hàm, sử dụng khai báo
global $biến1, $biến2,…; $_GLOBAL[’biến’]=“giá trị”
(55)Biến tĩnh
Khai báo hàm
Giá trị lưu trữ qua nhiều lần gọi hàm Chỉ khởi tạo lần khai báo đầu tiên Để khai báo:
(56)Hằng số
Khai báo: define (“tên_biến”,giá_trị) Kiểm tra tồn số cú pháp:
(57)Chèn file
include(“địa_chỉ_file”); require(“địa_chỉ_file”);
(58)(59)PHP The Second Day
Đào Quang Minh Trung tâm Tính tốn Hiệu cao – ĐHBK Hà Nội
minh0302@gmail.com
(60)Chương 2: Làm quen với PHP (tiếp)
Lập trình hướng đối tượng PHP
(61)(62)Khai báo thể lớp PHP
Các lớp khai báo thơng qua từ khóa class,
thuộc tính khai báo dạng biến phương thức khai báo dạng hàm
class tên_lớp {
//danh_sách_các biến, hằng, lớp //danh_sách_các_hàm
(63)(tiếp)
Khởi tạo đối tượng thuộc lớp với từ khóa
new
$tên_đối_tượng = new tên_lớp();
Để gọi hàm lớp ta sử dụng toán tử ->
$tên_đối_tượng->tên_hàm();
Hoặc dùng toán tử :: để gọi đến hàm hay
một biến (biến phải khai báo static)
(64)Hàm tự động gọi autoload
Trong trường hợp sử dụng lớp chưa
được định nghĩa hàm autoload tự động
được gọi
function autoload($class_name) {
require_once $class_name.‟.php‟; }
Điều chưa có phiên
(65)Hàm tạo construct
Cho phép bạn khai báo hàm tạo theo phương
thức
class A {
function construct(){ //dòng lệnh
} }
Nếu khơng tìm thấy hàm tạo theo phương thức
(66)Hàm hủy destruct
Ngược lại với hàm tạo, hàm hủy triệu gọi
khi đối tượng bị hủy
Được gọi hai tình
– Trong lúc thực thi mã lệnh, mà tất liên quan đến đối tượng bị khơng cịn
– Hoặc đến cuối mã lệnh PHP kết thúc truy vấn
function destruct() {
}
(67)Truy cập phương thức thuộc tính sử dụng trỏ $this
Public, protected, private với thuộc tính
– Public: truy xuất từ bên ngồi từ bên phương thức thông qua trỏ đặc biệt $this
class A {
public $a = “public_member”; function printHello()
{
(68)(tiếp) – Protected: truy xuất từ bên phương thức
của lớp từ lớp kế thừa từ lớp class A {
protected $a = “protected_member”; function printHello()
{
print $this->a; }
}
class B extends class A {
protected $a = “new protected_member”; function subprintHello()
{
print $this->a; }
(69)(tiếp) – Private: truy xuất từ bên lớp đó,
cũng sử dụng trỏ $this protected
class A {
private $a = “private_member”; function printHello()
{
print $this->a; }
(70)(tiếp)
Public, protected, private với phương thức
– Cũng tương tự với thuộc tính với định nghĩa ràng buộc cho kiểu public, protected private – Cách khai báo tương tự khai báo thuộc
tính class A {
public function printHello() {
(71)Static
Biến static coi biến toàn cục
đặt lớp truy xuất từ đâu qua lớp đó, sử dụng tốn tử ::
Khi gọi biến static hàm ta sử dụng toán tử
self thay cho trỏ this
class A {
static $a = 5;
function printHello(){ print self::$a;} }
(72)(tiếp)
Phương thức static: tương tự biến static
nhưng việc gọi tốn tử self truy xuất trỏ this hàm
class A {
static function printHello() { print “Xin chao”;
}
function show () {
self::printHello();//hoặc $this->printHello(); }
}
A::printHello();//A::show(); lỗi dùng $this $obj = new A();
(73)(tiếp)
Chú ý để tránh không rõ ràng toán tử
this self hay -> :: người ta thường quy ước sau:
– Khi gọi đến thuộc tính hay đối tượng kiểu static lớp hay từ lớp gọi đến hàm hay thuộc tính lớp nên dùng tốn tử self ::
(74)Hằng số lớp
Có thể định nghĩa lớp
Nó có giá trị khơng đổi khai báo khơng có $
Tên không trùng với tên biến, lớp,
hàm hay kết phép toán hay hàm
const myConst = “Const_Value”;
Để lấy giá trị ta dùng tốn
(75)Đa hình
Đa hình PHP sử dụng lớp thừa kế
giữa chúng, làm cho việc miêu tả tình sống thực dễ dàng
Nó làm cho dễ dàng với lập trình viên
khi phát triển dự án cách sử dụng lại mã lệnh thơng qua thừa kế
(76)(tiếp)
PHP không hỗ trợ đa thừa kế C++
PHP cung cấp giải pháp khác cho việc tạo
nhiều quan hệ lớp cách sử dụng
(77)parent:: self::
PHP hỗ trợ lớp dành riêng để dễ dàng
việc viết ứng dụng hướng đối tượng
– Self:: thường dùng để truy cập đến đối tượng, phương thức kiểu static hay số lớp
(78)Toán tử instanceof
Có giá trị trả kiểu logic (true hay false)
function checkifClass ($shape) {
if ($shape instanceof Rectangle) { print $shape->name;
print “ is a Class A <br />”; }
}
(79)(tiếp)
Dùng để kiểm tra xem đối tượng có phải
thuộc lớp hay khơng?
Tốn tử dùng để kiểm trả xem đối
(80)Interfaces
Là lớp cho phép định phương thức
của lớp thực thi mà khơng phải định nghĩa phương thức làm việc
Nếu lớp khai báo implements từ lớp
interfaces mà khơng có phương thức lớp interfaces khai báo chương trình báo lỗi
interface A {
//các_phương_thức (*) }
(81)(tiếp)
Một lớp thực thi nhiều interfaces
nhưng phải đảm bảo phương thức
(82)(tiếp)
Mọi phương thức mô tả Interfaces phải
được mô tả public
Interfaces thừa kế từ
interfaces khác (cho phép đa thừa kế)
(83)Final
Final Method: giống Java, Final
(84)(tiếp)
Final Class: tương tự Final Method,
(85)Overloading
Trong PHP định nghĩa lại hàm
trong lớp cha hàm tên lớp với chức hồn tồn khác
Có thể tham chiếu xác phương thức
hay phương thức bị overload cách dùng
(86)Exception Handling
Các mã lệnh bắt exception khối try
{ }
Khi exception ném vào catch bắt
lần lượt qua khối catch () { }
Khi catch bắt catch sau
(87)(tiếp)
Throw <object>: ném object
chứ loại liệu strings hay integers
Có lớp exception định nghĩa trước
tồn gọi Exception, tất lớp phải thừa kế từ
Việc ném đối tượng mà không thừa kế
(88)(89)Các đối tượng nhập liệu
Cho phép người sử dụng nhập liệu trang web Dữ
liệu gửi server để xử lý
Người sử dụng nhập liệu thơng qua điều khiển
(controls) Có nhiều loại control:
1 Form
2 Oneline Textbox Checkbox
4 Radio Button Button
6 Combo box (drop-down menu) Listbox
(90)Phương thức truyền liệu
PHP xử lý liệu qua khái niệm form HTML Form có hai thuộc tính quan trọng:
– action=“ ”: Địa trang web nhận liệu form submit (thường địa tương đối)
– method=“ ”; Có hai phương thức Get (mặc định) Post
<form name=“” action=“index.php” method = “post”> <input type=“text” name=“user”>
(91)(tiếp)
Truyền liệu (biến) qua URL:
– Các biến truyền thành cặp
biến=giá_trị phân cách dấu &
– Phân cách với địa trang ban đầu dấu hỏi chấm (?)
Ví dụ: Truyền biến a, b, c có giá trị 1, 2, -3 vào trang http://localhost/index.php qua URL:
(92)(tiếp)
Khi ta Submit form sử dụng phương thức GET,
dữ liệu truyền qua URL:
– Tên biến tên đối tượng form
– Giá trị biến giá trị NSD nhập vào đối tượng
– Để đọc giá trị biến PHP: Sử dụng mảng $_GET,
các số tên biến
Ví dụ: Trong trang index.php đọc biến a, b, c:
(93)(tiếp)
Truyền liệu qua phương thức Post
– Dữ liệu Form post truyền thân yêu cầu HTTP
– Để đọc liệu sử dụng mảng $_POST với
(94)(95)Cookie
Là đoạn liệu truyền đến browser từ
server
Được gửi ngược lại server browser tải
website từ server
Hàm tạo Cookie:
function create_cookie ($name,$value) { $expires = time() + 60*60*24*365;
(96)(tiếp)
Hàm lấy Cookie
function get_cookie ($name) {
if (isset($_COOKIE[$name])) {
return urldecode($_COOKIE[$name]); }
else {
return FALSE; }
(97)(tiếp)
Xóa cookie tương tự tạo
cookie thay giá trị khởi tạo
create_cookie(„tên_cookie‟,0);
Cookie từ động xóa sau khoảng thời gian
(98)Session
Là khoảng thời gian người dùng giao tiếp
với ứng dụng
Bắt đầu từ người sử dụng truy cập vào
ứng dụng lần thoát khỏi ứng dụng
(99)(tiếp)
Khởi tạo giá trị cho session
$_SESSION[“tên_session”] = “giá_trị”;
Mỗi session có định danh (ID)
tạo server khởi tạo Để lấy giá trị session_id
$id = session_id();
Khởi tạo giá trị cho session
(100)(tiếp)
Hủy session
session_unset(“tên_session”); Hủy session
(101)PHP The Third Day
Đào Quang Minh Trung tâm Tính tốn Hiệu cao – ĐHBK Hà Nội
minh0302@gmail.com
(102)Chương 3: PHP HTML, CSS, JavaScript
PHP HTML
(103)(104)HTML Form <form name="myform" method="post"
action="process.php">
<p>Name <input type="text" name="txtname“ /></p>
<p>Job <input type="text" name="txtjob“ /></p>
<p>Giới tính <input type="radio" name="rdbsex“ value="Nam”/>Nam
(105)(tiếp) <p>Quê quán</p>
<select name="selhomeland“> <option value="Hà Nội"
selected="selected">Hà Nội</option> <option value="Huế">Huế</option>
<option value="Hồ Chí Minh">Hồ Chí Minh</option>
(106)(tiếp)
<p>Học vị</p>
<input type="checkbox" name="ckb[]" value="Thạc sĩ” />Thạc sĩ
<input type="checkbox" name="ckb[]" value="Tiến sĩ” />Tiến sĩ
(107)(tiếp)
<p>Mô tả thêm thân</p>
<textarea name="txtdetail" cols="45" rows="5" tabindex="9"></textarea>
<p><input type="submit" value="Cập nhật" tabindex="10" /></p>
(108)PHP HTML Form $name = $_POST["txtname"];
$job = $_POST["txtjob"]; $sex = $_POST["rdbsex"];
$homeland = $_POST["selhomeland"]; $level = "";
foreach ($_POST["ckb"] as $value) {
$level = $value."<br />"; }
(109)HTML File Browse
<form action="upload.php" method="post" enctype="multipart/form-data“>
File <input name="myfile” type="file" size="30" />
(110)upload.php
<?php
$destination_path = getcwd().DIRECTORY_SEPARATOR; $target_path = $destination_path basename(
$_FILES['myfile']['name']);
if (($_FILES["myfile"]["type"] == "image/gif") || ($_FILES["myfile"]["type"] == "image/jpeg") && ($_FILES["myfile"]["size"] < 5120000) )
{
if(move_uploaded_file($_FILES['myfile']['tmp_name' ], $target_path))
$result = 1; }
(111)(tiếp)
Ngoài PHP cịn chèn vào
vị trí file HTML
<?php
if (điều kiện) {
?>
<form name=“” action=“” method=“”> </form>
<?php }
(112)(113)HTML
HTML – Hyper Text Markup Language sử dụng
thẻ (tag) < > để định dạng liệu
HTML không phân biệt chữ hoa hay chữ thường
khơng trình duyệt báo lỗi cú pháp
Cấu trúc file html thường có dạng:
<html>
(114)Thẻ (tag)
Có nhiều thẻ, thẻ có tên mang ý nghĩa
khác
Có loại thẻ: thẻ đóng thẻ mở Cách viết thẻ:
– Thẻ mở: <tên_thẻ>
Ví dụ: <u>, <p>, <img>…
– Thẻ đóng tương ứng: </tên_thẻ>
Ví dụ: </u>, </p>
(115)Thuộc tính thẻ
Một thẻ có thuộc tính nhằm bổ sung
tác dụng cho thẻ
Mỗi thuộc tính có tên thuộc tính (tên_TT) Viết thẻ có thuộc tính:
<tên_thẻ tên_TT1=“giá_trị1” tên_TT2=“giá_trị2”…>
Chú ý:
– Có thể thay đổi thứ tự, số lượng thuộc tính mà khơng gây lỗi cú pháp
– Sự hỗ trợ thẻ, thuộc tính trình duyệt khác Chỉ giống thẻ, thuộc tính
– Thẻ đóng thẻ có thuộc tính viết bình thường
(116)Soạn thảo văn bản
Văn soạn thảo bình thường
các file HTML
Lưu ý:
– Mọi khoảng trống, dấu xuống dòng HTML thể trang web khoảng trống
– Để gõ số ký tự đặc biệt ta phải sử dụng mã:
• Khoảng trống (trong trường hợp muốn có nhiều ký tự trống):
• Dấu nhỏ (<) lớn (>): < >
• Dấu ngoặc kép (“): "
• Ký hiệu : ©
• …
Ghi HTML:
(117)(tiếp) <head></head>: phần đầu 1 văn html, định nghĩa thông tin tài liệu, bao gồm thẻ như <title>,<meta>,<script>, v.v
(118)Các thẻ thông dụng
<table></table>: dùng để tạo bảng <form></form>: dùng để tạo form <img>: dùng để chèn ảnh
(119)CSS
CSS - Cascading Style Sheet: Mẫu quy
định cách thức thể thẻ HTML
Các đặc điểm kỹ thuật CSS duy
trì W3C
Giúp tiết kiệm nhiều thời gian và
công sức cho việc thiết kế web.
Có thể định nghĩa nhiều style vào thẻ
(120)Các loại style
Có loại style:
– Inline Style (Style qui định thẻ HTML cụ thể)
– Internal Style (Style qui định phần <HEAD> trang HTML )
– External Style (style qui định file CSS ngoài)
– Browser Default (thiết lập mặc định trình duyệt)
Thứ tự ưu tiên: Mức ưu tiên giảm dần từ
(121)Cách chèn CSS
Đặt <head>…</head> Với Internal style:
<style type=“text/css”>
<! Nội dung định nghĩa style
>
(122)Cách chèn CSS (tt)
Với External style:
– Định nghĩa style file riêng (thường có CSS)
– Nhúng file CSS định nghĩa vào trang web:
<link href=“địa file"
rel="stylesheet" type="text/css">
Với Inline style:
(123)Chú ý CSS phân biệt chữ hoa chữ thường
Để ghi style sử dụng
/*
(124)Khai báo CSS
selector {
(125)Áp dụng cho thẻ cụ thể
Trường hợp thẻ
p {
color: red; }
Trường hợp nhiều thẻ
h1,h2,h3,h4,h5,h6{
font-family:arial;
(126)Tạo lớp
Gắn với thẻ cụ thể: Đặt selector
tên_thẻ.tên_lớp p.loai1{ color:red; } p.loai2{ color:blue; }
Không gắn với thẻ cụ thể: bỏ phần tên_thẻ đi,
giữ lại dấu chấm:
.loai3{
color:green;
(127)Sử dụng lớp
Đặt thuộc tính class của thẻ = “tên_lớp”
<tên_thẻ class=“tên_lớp”>
Ví dụ:
<p class=“loai1”>Đoạn màu đỏ</p> <h1 class=“loai2”>Style hiệu lực</h1>
(128)Tạo định danh
Tương tự class Thay dấu chấm (.) thành dấu
thăng (#)
Cho thẻ cụ thể: tên_thẻ#định_danh{…}
Tổng quát: #định_danh{…}
p#doan1{
color:red;
}
#loai2{
color:blue;
(129)Sử dụng định danh
Mỗi định danh trang
Đặt thuộc tính id của thẻ = định_danh
<tên_thẻ id=“định_danh”>
(130)(131)JavaScript
JS ngơn ngữ kịch bản, nhúng
tích hợp vào tệp tin HTML
Nếu trình duyệt hỗ trợ, JS
thực thi
JS thông dịch trang HTML sau
khi toàn trang load trước khi trang hiển thị
JavaScript hãng Sun Microsystems
(132)Chèn Javascript vào HTML
Sử dụng thẻ SCRIPT:
<script language="JavaScript">
<! JavaScript statements; // >
</script>
Sử dụng file JavaScript
<script language="JavaScript" src="filename.js"> </script>
Sử dụng biểu thức JavaScript giá trị
(133)Các kiện JS hỗ trợ HTML
Đặt lắng nghe kiện
<tên_thẻ tên_sự_kiện=“tên_lệnh;”>
• onClick • onChange • onFocus • onBlur
• onMouseOver
• onMouseOut • onLoad
• onSubmit
(134)Các đối tượng trình duyệt
Trình duyệt đưa số đối tượng có
(135)HTML DOM
Là chuẩn đưa W3C, định
nghĩa truy xuất đến văn HTML
Tài liệu tra cứu HTML DOM xem
rất chi tiết địa sau:
(136)Website hỗ trợ CSS, HMTL PHP
http://www.w3schools.com/
http://vn.php.net
http://www.javascriptkit.com
http://www.dynamicdrive.com
http://www.javascriptbank.com
(137)(138)PHP The Fourth Day PHP The Fourth Day
Đào Quang Minh Đào Quang Minh Trung tâm Tính tốn Hiệu cao
Trung tâm Tính tốn Hiệu cao –– ĐHBK Hà NộiĐHBK Hà Nội minh0302@gmail.com minh0302@gmail.com
(139)Chương 3: PHP MySQL Chương 3: PHP MySQL
1. Các bước truy cập CSDL
(140)(141)Tạo kết nối đến Database Server Tạo kết nối đến Database Server $biến_kết_nối =
mysql_connect(“máy_chủ”,“tên”,“mật_khẩu”) or die(“Không kết nối được”);
Hàm die(“Chuỗi”): ðưa thông báo kết thúc
thúc
Với cách viết trên, die thực lệnh
trước khơng thành cơng
$cnn =
(142)Lựa chọn cơ sở dữ liệu Lựa chọn cơ sở dữ liệu
mysql_select_db(“Tên CSDL”) or die (“Chưa có CSDL”);
(143)Viết truy vấn Viết truy vấn
$biến = mysql_query(“Lệnh SQL”) or die(“Không thực SQL”);
$sql = mysql_query(“Select * From $sql = mysql_query(“Select * From
(144)Các hàm hỗ trợ
Các hàm hỗ trợ mysql_affected_rows(): Số ghi bị tác
động lệnh mysql_query liền trước
mysql_num_rows(): Kết số ghi của câu lệnh mysql_query
(145)Các hàm xử lý kết quả
Các hàm xử lý kết quả mysql_fetch_array($sql): trả dòng
bản ghi dạng mảng với mục dạng số tên trường.
mysql_fetch_row($sql): trả kết một mảng có thứ tự (bắt đầu từ 0)
mysql_fetch_assoc($sql): trả kết một mảng đánh số tên
(146)(147)Thế SQL Injection Thế SQL Injection
Là kỹ thuật cho phép kẻ công thi hành câu lệnh truy vấn SQL bất hợp pháp
Bằng cách lợi dụng lỗ hổng việc
(148)Ví dụ
Ví dụ
$sql=mysql_query(“Select * From
account Where username = ‘$user’ And password = ‘$pass’”)
Nếu User nhập biến User là: “OR OR user=“ câu lệnh SQL là:
SELECT * FROM users WHERE user = "" OR OR user="" AND password = "$password“
(149)(tiếp) (tiếp)
$sql=“Insert Into table_name
Values(‘$val1’,’$val2’,’$val3’)”;
Nếu biến val1 thành sau:
‘ + (Select Top Fieldname From ‘ + (Select Top Fieldname From TableName) +’
Insert Into TableName Values(‘’ + Select Top FieldName From
(150)Cách phòng tránh Cách phòng tránh
SQL Injection khai thác bất cẩn các lập trình viên phát triển ứng dụng web khi xử lý liệu nhập vào
(151)(tiếp) (tiếp)
Kiểm soát chặt chẽ liệu nhập vào
– Giới hạn chiều dài chuỗi nhập liệu
– Xây dựng hàm thay dấu nháy đơn dấu nháy đơn
– Xây dựng hàm loại bỏ số kí tự từ khóa – Xây dựng hàm loại bỏ số kí tự từ khóa
nguy hiểm
(152)Ví dụ
Ví dụ Hàm length để giới hạn độ dài
Hàm thay ‘ thành ‘‘
function replace($input) {
$output = str_replace("'","''",$input); return $output;
(153)(tiếp) (tiếp)
Hàm loại bỏ kí tự khơng mong muốn
function killchar($input) {
$len = strlen($input); $len = strlen($input);
$char = array("select","drop",";"," ","insert","delete","xp_");
$output = str_replace($char,"",$input); return $output;
(154)Lập trình AJAX
(155)Giới thiệu Giới thiệu
AJAX = Asynchronous JavaScript And XML AJAX ngôn ngữ mà
một cách sử dụng ngơn ngữ có.
AJAX giúp ta tạo trang web nhanh hơn, tiện lợi hơn, thân thiện sử AJAX giúp ta tạo trang web nhanh
hơn, tiện lợi hơn, thân thiện sử dụng.
(156)Đặc điểm AJAX
Đặc điểm AJAX
Là công nghệ web browser ðộc lập với web server.
Sử dụng JavaScript để gửi nhận liệu giữa client server.
AJAX dựa trên: AJAX dựa trên:
– JavaScript – XML
– HTML – CSS
(157)So sánh So sánh
Click –Wait-And-Refresh
(158)Truy xuất dữ liệu từ server JavaScript Truy xuất dữ liệu từ server JavaScript
Với IE6: sử dụng Msxml2.XMLHTTP:
XMLHttp =
new ActiveXObject("Msxml2.XMLHTTP")
Với IE5.6: sử dụng Microsoft.XMLHTTP
XMLHttp =
new ActiveXObject("Microsoft.XMLHTTP")
Với trình duyệt khác: XMLHttpRequest
(159)Mã lệnh tổng quát Mã lệnh tổng quát
(160)Đối tượng XMLHttpRequest
Đối tượng XMLHttpRequest
Các phương thức
– open(“method,”url”): Thiết lập yêu cầu đến
server (địa trang cần kết nối đến)
– send(content): Gửi yêu cầu đến server
– abort(): Hủy yêu cầu
– abort(): Hủy yêu cầu
Các thuộc tính
– readyState: Trạng thái đối tượng
– onreadystatechange: Bộ xử lý kiện cho
sự kiện phát sinh có thay đổi trạng thái
(161)(tiếp) (tiếp)
responseXML Response trả từ server
dưới dạng XML ðối tượng phân tách khảo sát đối tượng tài liệu DOM.
status Mã trạng thái HTTP từ server
(chẳng hạn 200 khơng có lỗi, 404 cho lỗi Not Found, …).
statusText Thông điệp mã trạng thái
(162)Thuộc tính readyState Thuộc tính readyState
readyState=0: Chưa khởi tạo: sau tạo đối
tượng XMLHttpRequest chưa gọi open()
readyState=1: Vừa khởi tạo: sau gọi open()
nhưng chưa gọi send()
readyState=2: Vừa gửi đi: sau gọi
readyState=2: Vừa gửi đi: sau gọi
send()
readyState=3: ðang xử lý: sau kết nối đến
server server chưa trả lời
readyState=4: Xong: sau server tính tốn
(163)Q trình tương tác Quá trình tương tác
1. Một event client-side gây kiện – Ajax event Bất kỳ tác động cũng gây Ajax event
<input type="text" id="email" name="email" onblur =
(164)(tiếp) (tiếp)
2. Một thể XMLHttpRequest tạo ra:
– dùng phương thức open() – tạo lời gọi hàm
– địa URL thiết lập với phương thức Http yêu cầu
(165)(tiếp) (tiếp)
var xmlHttp;
function validateEmail() {
var email = document.getElementById("email");
var url = "validate?email=" + escape(email.value); if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); }
xmlHttp.open("GET", url);
xmlHttp.onreadystatechange = callback; xmlHttp.send(null);
(166)(tiếp) (tiếp)
3. Một request tạo gửi đến server
4. Server xử lý yêu cầu (truy cập sở liệu, tác vụ hệ thống )
5. Response trả cho trình duyệt (xử
5. Response trả cho trình duyệt (xử lý dạng text/xml)
(167)(tiếp) (tiếp)
6. Cấu hình XMLHttpRequest để gọi hàm callback() kết xử lý trả về
function callback() {
if (xmlHttp.readyState == 4) { if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) { //do something interesting here
} }
ỗi định vị tài nguyên (URL – Unifor Truyền liệu (biến) qua URL: Là chuẩn đưa W3C, định http://www.w3schools.com/