Lập trình – Website để làm gì? Ai dùng? Trình độ người – Viết mã lệnh, xây dựng các module, các lớp dùng dùng? Bố cục? Nội dung? Hình ảnh? v.v… chung,… Phân tích Kiểm thử – Mối liên hệ giữa các nội dung? Thứ tự các nội – Kiểm tra các liên kết dung (kịch bản website) – Kiểm tra các lỗi bảo mật Thiết kế – Kiểm tra hiển thị trên các trình duyệt phổ biến – Sơ đồ cấu trúc website, giao diện, CSDL, nội – Kiểm tra tốc độ tải trang trên các loại mạng, các dung từng trang, liên kết các trang,v.v… loại dường truyền khác nhau,v.v…
Trang 1Lập trình ứng dụng web
Nguyễn Thanh Bình Khoa Công nghệ thông tin Đại học Quy Nhơn Email: thanhbinh@qnu.edu.vn Phone: 098.333.1601
Môi trường
– PHP 5.4 & MySQL – WampServer – Notepad++, Eclipse for PHP developers (Helios)
Mục tiêu
Nắm vững khái niệm cơ sở trong ngôn ngữ
lập trình PHP
Sử dụng những điều khiển cơ bản trong
thiết kế web với PHP
Xây dựng và xử lý thành phần giao diện
Trang 2Tài liệu tham khảo
Nội dung
Nhắc lại một số khái niệm
Phân loại website
Một số bước chính trong phát triển website
Giới thiệu và hướng dẫn cài đặt các phần mềm hỗ trợ xây dựng website
8
Trang 3Nội dung
Nhắc lại một số khái niệm
Phân loại website
Một số bước chính trong phát triển website
Giới thiệu và hướng dẫn cài đặt các phần
mềm hỗ trợ xây dựng website
9
Một số khái niệm
– Là tên máy chủ gắn với một địa chỉ IP – Máy chủ DNS sẽ thực hiện việc ánh xạ khi có yêu cầu truy cập
– Được chia thành nhiều cấp, mỗi cấp ngăn cách nhau bởi dấu chấm
– Ví dụ: qnu.edu.vn gắn với 203.162.31.116
• vn: Việt Nam (cấp 1)
• edu: tổ chức giáo dục (cấp 2)
• qnu: tên cơ quan (cấp 3)
– Chú ý: tên localhost được gắn với IP 127.0.0.1
10
Một số khái niệm (tiếp)
Server (máy chủ)
– Là máy tính có cấu hình cao, hoạt động ổn định,
chuyên cung cấp tài nguyên, dịch vụ cho các
máy tính khác
– Một máy chủ có thể dùng cho một hay nhiều
mục đích Tên máy chủ thường gắn với mục đích
nó
12
Trang 4Một số khái niệm (tiếp)
Protocol (giao thức)
– Là tập hợp các quy định phải tuân theo để
truyền tải thông tin trên mạng
– Mỗi dịch vụ thường có một giao thức riêng, ví
dụ:
• HTTP: giao thức truyền siêu văn bản
• FTP: giao thức truyền file
• SMTP: giao thức gửi email
• POP3: giao thức lấy bản sao email về client
• Giao thức, cổng: được trình duyệt mặc định
• Tên file: được server mặc định
Website:
– là tập hợp các web page (trang web) có nội dung thống nhất phục vụ cho mục đích nào đó
Web browser:
– Là phần mềm chạy ở client để khai thác dịch vụ web
– Ví dụ: Chrome, Firefox, Internet Explorer, Opera,
16
Trang 5Nội dung
Nhắc lại một số khái niệm
Phân loại website
Một số bước chính trong phát triển website
Giới thiệu và hướng dẫn cài đặt các phần
mềm hỗ trợ xây dựng website
17
Phân loại website
Dựa vào công nghệ phát triển, có 2 loại
– Web tĩnh (static web)
• Viết bằng HTML (kết hợp cùng CSS, JS)
• Dễ phát triển, chi phí xây dựng thấp, chạy nhanh
• Tương tác yếu – Web động (dynamic web)
• Viết bằng nhiều ngôn ngữ (PHP, ASP, JSP,…)
Khả năng tương tác yếu
Webserver hoạt động giống 1 file server
Web Server
URL yêu cầu
URL yêu cầu
Trang web viết bằng HTML + Ngôn ngữ lập trình phía server Có thể được thay đổi bởi người sử dụng
Khả năng tương tác mạnh
Web Server
URL yêu cầu
URL yêu cầu
Trang 6• Common Gateway Interface (CGI)
• Java Server Pages (JSP)
• Access Server Pages (ASP, ASP.Net)
Nhắc lại một số khái niệm
Phân loại website
Một số bước chính trong phát triển website
Giới thiệu và hướng dẫn cài đặt các phần mềm hỗ trợ xây dựng website
– Sơ đồ cấu trúc website, giao diện, CSDL, nội
dung từng trang, liên kết các trang,v.v…
24
Trang 7Nội dung
Nhắc lại một số khái niệm
Phân loại website
Một số bước chính trong phát triển website
Giới thiệu và hướng dẫn cài đặt các phần
mềm hỗ trợ xây dựng website
25
Các phần mềm hỗ trợ
Ngôn ngữ sử dụng: PHP 5.3
Web server & DBMS: Apache & MySQL
– WAMP (for Windows), LAMP (for Linux) – MAMP (for Mac), SAMP (for Solaris) – XAMPP (cross-platform)
Trang 82 Ngôn ngữ PHP
Nguyễn Thanh Bình Khoa Công nghệ thông tin Đại học Quy Nhơn Email: thanhbinh@qnu.edu.vn
Nội dung
Giới thiệu PHP
PHP cơ bản
– Cách chèn mã PHP vào mã HTML – Trang PHP đầu tiên
– Quy tắc viết mã lệnh PHP – Biến, hằng, kiểu dữ liệu, toán tử, chú thích – Các cấu trúc điều khiển
– Mảng – Chuỗi
Trang 9Giới thiệu
PHP (PHP: Hypertext Preprocessor)
– Là ngôn ngữ script trên server
– Là ngôn ngữ để viết các trang web động
• Ảnh hưởng từ: C, C++, Java, Perl, Tcl
– Ra đời năm 1994
• Rasmus Lerdorf (1968, GreenLand)
• Tên gốc là Personal Home Page Tools
– Các phiên bản:
• 1.0, 2.0, 3.0, 4.0, 4.1,… (nhiều người phát triển)
• Dùng phổ biến hiện nay: PHP 5.0 (7/2004)
• Phiên bản mới nhất: PHP 5.4.4 (6/2012)
Ưu điểm của PHP
Ngôn ngữ dễ học, dễ viết
Mã nguồn mở (open source code)
– Miễn phí, download dễ dàng từ Internet
– Có thể làm việc trên mã nguồn, thêm, sửa, sử dụng và phân phối
Mã nguồn không cần sửa lại nhiều khi triển khai trên các hệ điều hành khác nhau (Windows, Linux, Unix,…)
Ưu điểm của PHP
Có thể chạy trên nhiều web server khác
nhau (Apache, IIS,…)
Có thể kết nối được với nhiều loại DBMS
khác nhau:
– SQL Server, Oracle, DB2, PostgreSQL, Adabas,
dBase, Empress, FilePro, mSQL, Solid,…
– Phổ biến nhất: MySQL
Đặc điểm PHP
Có khả năng hướng đối tượng
Thông dịch
Trang 10tách làm nhiều phần, mỗi phần đặt giữa <?php … ?>
mà đoạn lệnh PHP đang chiếm chỗ
Trang PHP đầu tiên
print “<br/>Day la noi dung PHP<br/>”;
echo “Chao mung ban den voi <u>PHP</u>”;
?>
</body>
</html>
Trang 11Trang PHP đầu tiên (tiếp)
Quy tắc viết mã PHP
Quy tắc viết mã lệnh trong PHP
Phân biệt chữ hoa/chữ thường
Mỗi lệnh kết thúc bởi chấm phẩy (;)
– Trừ lệnh cuối trước khóa ?> có thể bỏ qua ;
Khối (nhiều) lệnh được đặt trong cặp { }
Xem thêm tại:
Trang 12 Biến trong PHP có tính định kiểu thấp
– Không chỉ định kiểu dữ liệu khi khai báo biến
Biến (tiếp)
Một số quy định khi khai báo biến:
– Bắt đầu bằng dấu đô la ($), tiếp ngay sau $ là
tên biến
– Tên biến bao gồm chữ cái, chữ số, dấu gạch nối
(_) và phải bắt đầu bằng chữ cái hoặc dấu gạch
• Được tự động khai báo vào lần gán giá trị đầu tiên
• Tuy nhiên nếu sử dụng biến chưa khởi tạo có thể gây lỗi (có khai báo nhưng không khởi tạo) – Kiểu dữ liệu lưu trong biến có thể thay đổi trong quá trình lập trình
Trang 13Ví dụ sử dụng biến
Ví dụ 1
<?php
$a = 10; //bien a co gia tri kieu so la 10
$a = “Hello”; //bien a co gia tri kieu chuoi la Hello
$a_1 = true; //bien a_1 co gia tri kieu bool
a12 = 20; // loi , vi ten bien khong bat dau bang $
$12a = 20; // loi , vi sau $ bat dau bang so
$thanhTien = $soLuong * $donGia;
echo "Tong tien: " $thanhTien;
?>
Biến động (biến biến)
Cho phép sử dụng giá trị của biến làm tên biến khác
VD:
$a = “hello”;
Tham trị và tham chiếu
Khi thực hiện phép gán biến cho biến thì
mặc định giá trị được sao chép từ biến
nguồn sang biến đích
– Ví dụ: $a = $b (giá trị của $b được sao chép
sang $a)
Dùng tham chiếu khi muốn đặt thêm một
tên cho một biến có sẵn
– Ví dụ: $x = &$y (lúc này $x và $y là hai tên của
cùng một biến)
Tuổi thọ của biến
Biến được tạo ra khi được gán giá trị lần đầu và tồn tại trong suốt quá trình thực thi script
– Bao gồm cả các khai báo trong các file được chèn bởi include(), require()
Mỗi lần script được thực thi là biến được tạo ra độc lập với các lần thực thi khác của cùng script đó
Trang 14Phạm vi của biến
Phạm vi của biến là phạm vi ở đó biến xác
định
Trong PHP, biến có ba mức phạm vi:
– Local variables – biến cục bộ
• Khai báo, khởi tạo trong hàm
• Có tác dụng từ khi khởi tạo đến hết hàm
Phạm vi của biến (tiếp)
Ba mức phạm vi:
– Global variables – biến toàn cục
• Khai báo, khởi tạo ngoài hàm
• Có tác dụng từ khi khởi tạo đến hết file – Thường sử dụng bên trong các script,
– Mặc định là không thể sử dụng bên trong các hàm
– Nếu sử dụng trong hàm thì khi đó xem như biến được khai báo lại và trở thành biến cục bộ
Phạm vi của biến (tiếp)
Ba mức phạm vi:
– SuperGlobal Variables - biến siêu toàn cục:
• Là các biến được PHP định nghĩa sẵn
$b = $b + 1;
echo “(trong)a=$a b=$b”;
} tang();
echo “(ngoai)a=$a b=$b”;
?>
Trang 15Sử dụng biến toàn cục trong hàm
Để sử dụng biến toàn cục trong hàm:
– Sử dụng từ khóa global để khai báo (lại) biến
toàn cục bên trong hàm theo cú pháp:
global $biến1, $biến2;
• Nếu trước đó biến chưa khai báo thì sẽ khai báo
mới, và biến mới đó là biến toàn cục (mặc dù được
khai báo bên trong hàm)
Sử dụng biến toàn cục trong hàm (tiếp)
Để sử dụng biến toàn cục trong hàm:
– Sử dụng mảng siêu toàn cục $GLOBALS
$GLOBALS[‘tên_biến_toàn_cục’] = & $biến_toàn_cục
Sử dụng biến toàn cục trong hàm (tiếp)
Thảo luận: cho biết kết quả của đoạn
Sử dụng biến toàn cục trong hàm (tiếp)
Thảo luận: cho biết kết quả của đoạn chương trình sau
echo “(ngoai)a=$a b=$b”;
?>
Trang 16Sử dụng biến toàn cục trong hàm (tiếp)
Thảo luận: cho biết kết quả của đoạn
Biến tĩnh (tiếp)
Khai báo biến tĩnh theo cú pháp:
static $biến_tĩnh = giá_trị;
Chú ý:
– giá_trị khởi tạo của biến static chỉ có thể là
một hằng (literal or constant) mà không được là
$dem = 10;
echo "Bien thuong: $dem <br/>";
$dem++;
} bienTinh(); bienThuong();
bienTinh(); bienThuong();
bienTinh(); bienThuong();
?>
Trang 17Kiểu dữ liệu &
Chuyển đổi kiểu dữ liệu
Kiểu dữ liệu
PHP hỗ trợ 4 loại kiểu dữ liệu
– Logic (boolean) – Số (integer, double) – Chuỗi (string) – Mảng & đối tượng (array, object)
– Biểu diễn: $a = 0.017 – Dạng khoa học: $a = 17.0E-03
Trang 18Kiểu chuỗi
Giới hạn bởi nháy đơn (‘) hoặc kép (“)
– Chuỗi đặt trong nháy kép bị thay thế (bởi giá trị
các biến xuất hiện trong chuỗi–nếu có) và xử lý
ký tự thoát (nếu có)
– Chuỗi đặt trong nháy đơn (‘) thì không
PHP không giới hạn kích thước kiểu chuỗi,
nó chỉ phụ thuộc vào bộ nhớ mà PHP đang
Kiểu chuỗi (tiếp)
Để làm rõ các biến trong chuỗi, cần bao
biến vào giữa cặp ngoặc nhọn { }
$a = “He”;
$b = “$allo”; //lỗi vì PHP hiểu là $allo
$c = “{$a}llo”; //đúng ($c = “Hello”)
$d = “{$c} World” //$d = “Hello World”
Biến mảng, biến biến, biến trong tên có
dấu gạch nối hoặc dấu chấm khi viết trong
chuỗi bắt buộc phải bao lại
Kiểu chuỗi (tiếp)
Ký tự thoát: \
– Sử dụng để viết các ký tự đặc biệt trong chuỗi – Ví dụ: cần có chuỗi: Hãy nói “KONICA”
$a = “Hãy nói “KONICA””; //Sai
$a = “Hãy nói \“KONICA \””; //Đúng – Một số ký tự phải sử dụng ký tự thoát: $, \, “ – Ngoài ra:
• \n: Xuống dòng
• \r: trở về đầu dòng
• \t: dấu tab,…
Trang 19Kiểu chuỗi (tiếp)
Kiểu tài liệu: (heredoc, nowdoc)
– Cho phép viết 1 chuỗi trên nhiều dòng
– heredoc: tạo 1 chuỗi tương tự như chuỗi đặt
trong cặp dấu nháy kép (“)
• Xử lý các biến và các ký tự đặc biệt có trong chuỗi
– nowdoc: tạo 1 chuỗi tương tự như chuỗi đặt
trong cặp dấu nháy đơn (‘)
• Không xử lý các biến và các ký tự đặc biệt có trong
chuỗi
• Từ PHP 5.3.0
Kiểu chuỗi (tiếp)
Cách viết kiểu tài liệu
$biến = <<<Ký_hiệu
Chú ý:
Ký_hiệu phải được viết ở ký tự đầu tiên của dòng
Trong nowdoc, Ký_hiệu bắt đầu phải được đặt trong cặp dấu nháy đơn (‘)
Kiểu chuỗi (tiếp)
Ví dụ heredoc:
$a = <<<EOD
Đây là chuỗi nằm trên nhiều dòng sử
dụng cú pháp kiểu tài liệu ‘heredoc’
EOD;
Ví dụ nowdoc:
$a = <<<‘EOT’
Đây là chuỗi nằm trên nhiều dòng sử
dụng cú pháp kiểu tài liệu ‘nowdoc’
Trang 20Ký hiệu Ý nghĩa kiểu
(int), (integer) Số nguyên (real), (double),
(float) Số thập phân (string) Chuỗi
(object) Đối tượng (bool), (boolean) Logic (unset) NULL, tương tự
như gọi unset()
Một số hàm kiểm tra kiểu
bool is_tênkiểu ($tên_biến hay biểu thức)
– Kiểm tra dữ liệu của một biến, kết quả trả về true hoặc false – is_tênkiểu có thể là:
• is_integer, is_numeric, is_int, is_double, is_real, is_float
• is_string, is_bool, is_array, is_object
string gettype($tên_biến hay biểu thức)
– Trả về loại kiểu dữ liệu như: integer, double, long …
int settype($tên_biến, “kiểu_dữ_liệu”)
– Gán kiểu dữ liệu cho tên biến
Một số hàm kiểm tra kiểu (tiếp)
Trang 22Thứ tự ưu tiên phép toán
Hằng
Hằng
Hằng
– Là một vùng nhớ chứa dữ liệu
– Hằng chỉ được phép gán giá trị duy nhất 1 lần
– Giá trị của hằng chỉ thuộc các kiểu cơ bản
– Hằng có thể được truy cập tại bất cứ vị trí nào
trong mã lệnh của chương trình
Trang 23Hằng (tiếp)
Kiểm tra sự tồn tại của hằng bằng lệnh:
Một số quy định của hằng:
– Đặt tên hằng giống cách đặt tên biến
– Hằng không có dấu "$" ở trước tên
– Hằng thường được viết toàn bộ bằng chữ in để
phân biệt với biến
– Bắt buộc phải định nghĩa hằng trước khi sử
dụng
Các cấu trúc điều khiển
Các câu lệnh điều khiển
if (BTLG) nhóm_lệnh1;
else
nhóm_lệnh2;
if (BTLG1) nhóm_lệnh1;
elseif (BTLG2) nhóm_lệnh2;
elseif (BTLG3) nhóm_lệnh3;
else
nhóm_lệnh_cuối;
$biến = BTLG ? Giá_trị1 : Giá_trị2
Trang 24}
Trang 25case 1: echo ‘1 la gia tri cua $a’; break;
case 2: echo ‘2 la gia tri cua $a’; break;
case 3: echo ‘3 la gia tri cua $a’; break;
case 4: echo ‘4 la gia tri cua $a’; break;
default: echo ‘khong co gia tri phu hop’; break;
Trang 26for ($count = “”; $count != “done”; ) {
for ($count = 1, $total = 300;
$count <= 10 && $total > 200;
break: kết thúc khối lệnh for, while,
do-while hoặc switch
continue: bỏ qua không thực hiện các
lệnh nằm sau continue trong vòng lặp, chuyển sang vòng lặp tiếp
Trang 27Bài tập cấu trúc điều khiển
Bài tập 1: Cho một mảng 10 phần tử chứa các giá trị từ
1->20 Hãy xuất ra trình duyệt những số chẵn, số lẻ có trong
mảng đã cho đó (kết hợp với phần mảng phía sau)
Bài tập 2: Xuất ra trình duyệt bảng cửu chương từ 2->10
Bài tập 3: Viết chương trình nhận vào 1 số tự nhiên N, tìm tất
cả các số nguyên tố & số chính phương <= N và in ra kết quả
liệu có dạng $key=>$value , trong đó giá
trị $key của tất cả các phần tử trong danh
sách là khác nhau
– $key dùng để tham chiếu đến một phần tử của
mảng
– $key có thể có kiểu số hoặc kiểu chuỗi
• $key trong PHP có ý nghĩa rộng hơn index (chỉ
mục) trong các ngôn ngữ khác (Pascal, C, C++,
C#, Java,…)
Mảng (tiếp)
Trang 28Khai báo mảng
Khai báo và gán giá trị
$tên_biến = array ([khóa=>] giá_trị ,
[khóa=>] giá_trị ,…)
– Trường hợp không định nghĩa các khóa ($key)
thì khóa của mảng sẽ được gán mặc định theo
kiểu số nguyên liên tiếp tăng dần từ 0
– Trường hợp một khóa trong mảng có kiểu chuỗi
hoặc số không liên tục thì mảng được gọi là
Khai báo mảng (tiếp)
Khai báo mảng (không khởi tạo giá trị)
của mảng khi khai báo
• Kích thước có thể thay đổi linh hoạt khi sử dụng
Khai báo mảng (tiếp)
Trang 29Thao tác mảng
Truy cập 1 phần tử của mảng
tên_biến_mảng [$key]
– Chú ý về cách sử dụng $key ở dạng chuỗi
• Các cách viết $key=>$value trong khai báo mảng
$a3 sau đều được chấp nhận
$a3 = array(“san pham”=>“laptop”,
‘brand’=>Dell, CPU=>“core i7”,
ram=>“8Gb”, “xuất xứ”=>“USA”,
– Nếu $key không được chỉ định thì phần tử mới luôn được
thêm vào cuối mảng
• $key mới có giá trị bằng $key có giá trị số nguyên lớn nhất hiện có trong mảng cộng thêm 1
– Nếu $key được chỉ định
• Nếu $key chưa tồn tại thì 1 phần tử mới sẽ thêm vào
• Nếu $key đã tồn tại thì sẽ không có phần tử nào được thêm (lúc này giá trị cũ sẽ bị ghi đè)
$a=array('ten'=>“Bình”, 'khoa'=>“CNTT”);
/*Tương đương với 2 câu lệnh sau
$a['ten'] = “Bình”;
$a['khoa'] = “CNTT”;*/
Trang 30• for (khởi_tạo; kiểm_tra; hành_động) { }
• foreach ($biến_mảng as [$key=>]$value)
– Rất hữu dụng khi duyệt các mảng kết hợp (vì với mảng kết hợp, cách
truyền thống không áp dụng được)
– Kết hợp sử dụng các hàm:
• each($biến_mảng), list($key, $value)
– Dùng con trỏ mảng
Thao tác mảng (tiếp)
Ví dụ foreach: in mảng a2 đã khai báo ở trên
foreach($a2 as $khoa=>$giaTri){
echo “$khoa là $giaTri <br/>”;
} kết quả:
product là laptop brand là Dell CPU là corei7 ram là 8Gb
5 là USA
Thao tác mảng (tiếp)
Dùng hàm each($biến_mảng)
– Hàm each trả về phần tử kế tiếp của mảng
– Cặp $key=>$value của phần tử trả về được lưu
trong mảng 4 phần tử có khóa là 0,1, key,value
• 0, key: chứa $key
• 1, value: chứa $value
– Ví dụ: in mảng a2 đã khai báo ở trên
while ($item = each ($a2)){
echo “{$item[‘key’]} là { $item[‘value’]} ”;
in mảng a2 đã khai báo ở trên
echo “$k là $v <br/>”;
}
Trang 31‘thứ tư’=>'Đi chơi',
‘thứ bảy'=>'Đìu hiu một mình',
'chủ nhật'=>'Còn tôi với nồng nàn');
while (list($index,$value) = each($arr))
echo “$index - $value <br>”;
• current($mảng) trả về phần tử hiện tại
• prev($mảng): trả về phần tử liền trước
• next($mảng): trả về phần tử liền sau
• end($mảng): trả về phần tử cuối cùng của mảng
• reset($mảng) đưa con trỏ về đầu mảng
– Sau mỗi lần duyệt mảng bằng each(), list() thì phải dùng reset() để đưa con trỏ trở lại đầu mảng trước khi duyệt tiếp
Trang 32mục” $key khỏi mảng
– unset($tên_mảng): xóa toàn bộ mảng
– Chú ý: hàm unset() không đánh lại “chỉ mục”
Trang 33<?php
$arr = array('Lê'=>'Phan Đã','Thị'=>'Đỗ Văn Vẻ', 'Bồ'=>'Hồ Như Ao','Câu'=>'Tạ Thị Tấn');
ksort($arr);
echo "Student - His friend<br>";
while (list($person,$friend) = each($arr)) echo "$person - $friend <br>";
foreach ($a as $key => $value) {
echo "$key: $value\n";
}
?>
Các hàm xử lý mảng (tiếp)
Nối ghép hai mảng – array_merge($mảng1, $mảng2) – array_combine($mảng1, $mảng2) – array_intersect($mảng1, $mảng2)
Tách mảng – array_slice($mảng, vị trí tách, số lượng tách)
Tìm kiếm – array_search($giá_trị, $mảng) – in_array(giá trị tìm, $mảng)
Trang 34Ví dụ về mảng động
Cho mảng gồm 10 số tự nhiên, tạo và in ra mảng
con chứa những số lẻ của mảng này
$child[] = $v; //thêm ptử vào mảng con
echo "So phan tu cua mang con: " count($child) ;
for($i = 0; $i < count($child); $i++)
echo "<br/> $child[$i]"
?>
Chuỗi trong PHP
Một số hàm xử lý chuỗi
strlen($str): trả về độ dài của chuỗi $str
substr($str, $pos, $len): trả về chuỗi con tách từ chuỗi $str từ
vị trí $pos và lấy $len ký tự
strpos($str, $sub): trả về vị trí xuất hiện lần đầu tiên của
chuỗi $sub trong chuỗi $str
str_replace($rep, $with, $str): thay thế chuỗi $rep bằng chuỗi
$with trong chuỗi $str
strtoupper ($chuỗi): chuyển chuỗi thành các ký tự in hoa
strtolower ($chuỗi): chuyển $chuỗi thành các ký tự thường
$danhSach = “Hằng Hạnh Mai Thủy Ly";
$mang = explode (" ", $danhSach);
echo "Danh sách ngũ cô nương K22: <br/>";
foreach($mang as $key=>$value) echo ($key+1) " - " $value "<br/>";
?>
Trang 35Một số hàm xử lý chuỗi (tiếp)
implode($sep, $arr): nối các chuỗi con trong mảng
$arr thành 1 chuỗi phân cách nhau bởi $sep
Ví dụ:
<?php
$array = array ('lastname', 'email', 'phone');
$comma_separated = implode (",", $array);
echo $comma_separated; // lastname,email,phone
Một số hàm xử lý chuỗi (tiếp)
Ví dụ: Chuẩn hóa chuỗi văn bản (không có ký tự
trống ở hai đầu, giữa 2 từ chỉ có một ký tự trống)
Trang 36 Multiline List Box:
<select multiple name=”tên_biến_mảng[]”>
Truyền dữ liệu của Form HTML
Thẻ <form> trong HTML có 2 thuộc tính:
– action=“chuỗi”: url của trang web nhận dữ liệu (thường là url của trang PHP xử lý dữ liệu)
• Nếu trang xử lý chính là trang của thẻ Form thì khai báo:
action=“<?php echo $_SERVER['PHP_SELF'] ?>”
– method=“chuỗi”: phương thức gửi dữ liệu đến trang xử lý Có 2 cách:
• GET (mặc định)
• POST
Trang 37Phương thức GET
liệu được truyền qua URL theo từng cặp
tham_số=giá_trị:
– Tên các tham số là thuộc tính “name” của các đối tượng trên
form
– Giá trị tham số là giá trị được nhập vào đối tượng (hoặc giá
trị của thuộc tính “value” của đối tượng)
– Các cặp phân cách bởi dấu & và phân cách với url nguyên
thủy của trang bởi dấu ?
– Người dùng không thấy được các giá trị này
Đọc dữ liệu gửi từ Form
PHP cung cấp 2 mảng $_GET và $_POST để
lấy các giá trị được gửi từ form
– Mảng $_GET dùng để đọc giá trị gửi đi bằng
• Nên dùng trong trường hợp dữ
liệu chỉ dùng để truy vấn, không đòi hỏi bảo mật
• Không hỗ trợ uploading file
• An toàn hơn so với khi dùng
GET nên được dùng phổ biến
hơn
• Hỗ trợ uploading file
• Hỗ trợ nhiều bảng mã
Trang 38Đọc dữ liệu gửi từ Form
Ví dụ: đọc các biến a, b, c trong trang
<form action=“ nhan.php ” method= POST >
<input type=text name=“hoten”>
<input type=submit name=“Sumit”>
Đọc dữ liệu gửi từ Form (tiếp)
Ví dụ: nhận dữ liệu gửi từ các checkbox cùng tên
– Trang “gui.php”
<form action=“ nhan.php ” method= POST >
<input type="checkbox" name=" box[] " value=1>Một
<input type="checkbox" name=" box[] " value=2>Hai
<input type="checkbox" name=" box[] " value=3>Ba
<input type=submit name=“Sumit”>
Trang 39Ví dụ mẫu
Xây dựng 1 trang HTML với nội dung gồm
form cho phép nhập họ tên Sau đó dùng 1
file PHP để xuất ra thông tin họ tên mà
<input type=“text” name=“ hoten ” /> <br/>
<input type=“submit” value=“Gui” />
</form>
</body>
</html>
Ví dụ mẫu (tiếp)
Tạo file xuly.php để xuất ra dữ liệu với nội
dung như sau:
<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 <input type="radio" name="rdbsex"
</p>
Trang 40
Ví dụ tổng hợp (tiếp)
<p>Quê quán</p>
<select name="selhomeland">
<option value="Hà Nội"> Hà Nội </option>
<option value="Huế"> Huế </option>
<option value="Đà Nẵng"> Đà Nẵng </option>
<option value="Quy Nhơn" selected="selected">
Quy Nhơn </option>
<option value="Hồ Chí Minh">Hồ Chí Minh </option>
</select>
Ví dụ tổng hợp (tiếp)
<p>Ngoại ngữ</p>
<input type="checkbox" name=" ckb[] "
value="Anh"/> Tiếng Anh <input type="checkbox" name=" ckb[] "
value="Pháp"/> Tiếng Pháp
<input type="checkbox" name=" ckb[] "
value="Nhật"/> Tiếng Nhật <p>Thông tin thêm</p>
<textarea name="txtmore" cols="45" rows="5">
– Ngược lại nếu nhập sai thì xuất thông báo
"Username hoặc password không chính xác Vui lòng đăng nhập lại"