Tải bản đầy đủ (.doc) (28 trang)

Tài liệu học tập và câu hỏi trắc nghiệm Tích hợp THIẾT KẾ WEB VỚI PHP MY SQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (369.89 KB, 28 trang )

Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với
Tài liệu học tập Tích hợp

Bài 4:

Lập trình ứng dụng WEB với PHP
Thời gian: 34 giờ

*MỤC TIÊU BÀI HỌC:
Sau khi học xong bài này, người học có:
a. Kiến thức:
- Xác định được các thao tác cơ bản trong lập trình PHP và MySQL.
- Liệt kê được các hàm trong Cookie và LDAP.
- Xác định được các thao tác với Email.
- Xây dựng được các truy vấn cơ sở dữ liệu thong qua ADO.
- Liệt kê được các hàm xử lý XML.
b. Kỹ năng:
- Sử dụng được trình duyệt Web.
- Sử dụng được lập trình ứng dụng Web với PHP.
- Làm việc được với Cookie và LDAP.
- Thao tác được với cơ sở dữ liệu MySQL và với Email.
- Truy vấn được cơ sở dữ liệu khác thông qua ADO.
- Xử lý được XML.
c. Thái độ:
- Quan sát quá trình làm việc của giáo viên.
- Tiếp nhận cộng việc cần làm.
*Nội dung:
1. Trao đổi thông tin với trình duyệt bằng Session:


1.1. Khai báo session:
…………………………………………………………………………
1.2. Lưu giá trị của session:
…………………………………………………………………………
$_SESSION['views'] = 1; // lưu views
echo "Pageviews = ". $_SESSION['views']; //lấy views và hiện thị
?>
1.3. Sử dụng SESSION:
…………………………………………………………………………
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;
echo "views = ". $_SESSION['views'];
?>
1.4. Xóa và Hủy Session:
Nguyễn Văn Chí Linh

66


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

…………………………………………………………………………

if(isset($_SESSION['cart']))
unset($_SESSION['cart']);
?>
Có thể hủy hoàn toàn các session bằng cách gọi hàng session_destroy
…………………………………………………………………………
…………………………………………………………………………
?>
1.5.
Tạo các trang php:
1.5.1. Tạo trang session.php với nội dung:
…………………………………………………………………………
session_register("name");
$_SESSION["name"] = "Kenny Huy";
?>
<html>
<head>
<title>Test page 1</title></head>
<body>
<b><a href=session2.php>Click here</a></b>
</body>
</html>
1.5.2. Tạo trang session2.php với nội dung:
…………………………………………………………………………
?>
<html>
<head><title>Result Page</title></head>
<body>

echo "Ten cua ban la <b>".$_SESSION["name"]."</b>";
?>
</body>
</html>
1.5.3. Tạo trang session3.php với nội dung:
…………………………………………………………………………
…………………………………………………………………………
?>
Nguyễn Văn Chí Linh

67


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

<html>
<head>
<title>Test page 1</title></head>
<body>
<b><a href=session2.php>Click here</a></b>
</body>
</html>
2. Làm việc với Cookie
2.1. Tạo một biến Cookie
2.1.1. Khai báo với cú pháp:

…………………………………………………………………………
Trong đó:
* …………………………………………………………………………
* …………………………………………………………………………
* …………………………………………………………………………
* …………………………………………………………………………
* …………………………………………………………………………
Thông thường, chúng ta sẽ chỉ sử dụng 3 thông số đầu khi khai báo một
cookie là: name, value và expire.
2.1.2. Thực hiện theo các bước:
B1: …………………………………………………………………………
B2: Nhập đoạn code sau
<!DOCTYPE html>
<html>
<head>
<title>Bài 4 - Cookie</title>
</head>
<body>
…………………………………………………………………………
?>
</body>
</html>
Ở đây, chúng ta đã tạo ra một biến Cookie có tên ‘myCookie’, giá trị của nó
là ‘this is myCookie’s value’.
Hàm time() dùng để trả về thời điểm hiện tại, ngay khi nó được gọi. 60*60
là thời gian 1 giờ đồng hồ (60 giây * 60 phút). Vậy thời gian hiệu lực của
biến Cookie ‘myCookie’ này là 1 giờ đồng hồ tính từ thời điểm nó được tạo.
B3: Mở trình duyệt, nhập đường dẫn http://localhost/bai4.php


Nguyễn Văn Chí Linh

68


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

Không có gì hiện ra, nhưng chúng ta có thể kiểm tra xem biến ‘myCookie’ đã
được tạo chưa bằng cách như sau
Click vào chữ firefox ở góc trên cùng bên trái, chọn thẻ tùy chọn

Một bảng tùy chọn hiện ra, chọn thẻ riêng tư

Nguyễn Văn Chí Linh

69


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

Chọn dòng xóa các cookie riêng lẻ

Một bảng cookie hiện ra, kéo xuống sẽ nhìn thấy dòng chữ localhost


Nguyễn Văn Chí Linh

70


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

Click đúp vào dòng chữ localhost, chúng ta sẽ thấy biến ‘myCookie’ với
đầy đủ thông số mà chúng ta vừa tạo

Click đóng để thoát
2.2.

Đọc các Cookie
2.2.1. Khai báo cú pháp:
Nguyễn Văn Chí Linh

71


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

…………………………………………………………………………
2.2.2. Thực hiện theo các bước:

B1: Cập nhật đoạn code sau vào file bai4.php
<!DOCTYPE html>
<html>
<head>
<title>Bài 4 - Cookie</title>
</head>
<body>
…………………………………………………………………………
echo …………………………………………………………………………;
?>
</body>
</html>
B2: Refresh lại trình duyệt

2.3.

Xóa một Cookie
2.3.1. Khai báo cú pháp:

…………………………………………………………………………
Để xóa một cookie, chúng ta dùng cú pháp tương tự như khi khai báo, song
thông số expire sẽ là quá khứ(thời điểm hiện tại trừ đi một khoảng thời gian).

Nguyễn Văn Chí Linh

72


Trắc nghiệm trực quan

PHP

Bài 4: Lập trình ứng dụng WEB với

2.3.2. Thực hiện theo các bước:
B1: Nhập đoạn code sau vào file bai4.php
<!DOCTYPE html>
<html>
<head>
<title>Bài 4 - Cookie</title>
</head>
<body>
…………………………………………………………………………
//hủy biến myCookie
…………………………………………………………………………
echo …………………………………………………………………………
?>
</body>
</html>
B2: Refresh lại trình duyệt 2 lần

Biển ‘myCookie’ đã không còn, do đó khi chúng ta muốn in nó ra tại dòng
echo
…………………………………………………………………………
, trình duyệt sẽ báo lỗi.
3. Thao tác với cơ sở dữ liệu MySQL
Nguyễn Văn Chí Linh

73



Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

3.1. Thiết lập kết nối tới CSDL.
3.1.1. Khai báo cú pháp:
…………………………………………………………………………
trong đó:
…………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………
Ví dụ:
…………………………………………………………………………
?>
Khi kết nối tới MySQL thành công, hàm sẽ trả về giá trị là một số nguyên
định danh của liên kết, ngược lại, hàm trả về giá trị false.
Ta có thể dùng hàm if để kiểm tra xem có kết nối được tới MySQL hay
không.
3.1.2. Nhập đoạn code như sau:
…………………………………………………………………………
if (!$link)
{
echo "Không thể kết nối được tới CSDL MySQL";
}
?>

3.2. Lựa chọn CSDL.
3.2.1. Khai báo:
Để lựa chọn một CSDL nào đó mà người sử dụng có tên là tên_truy_cập"
có quyền sử dụng, ta dùng hàm mysql_select_db:
…………………………………………………………………………
Hàm này thường được dùng sau khi thiết lập kết nối bằng hàm
………………………………………………………………………….
Hàm này trả về true nếu thành công, false nếu thất bại.
3.2.2. Soạn vào bài ở trên như sau:
…………………………………………………………………………
if (!$link)
{
echo "Không thể kết nối được tới MySQL";
}
if (………………………)
{
echo "Không thể lựa chọn được CSDL Forums";

Nguyễn Văn Chí Linh

74


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

}

?>
3.3. Tiến hành các truy vấn SQL, xử lý các kết quả trả về nếu có
3.3.1. Khai báo cú pháp:
…………………………………………………………………………
Các hàm cầnthiết:
– …………………………………………………………………………
– …………………………………………………………………………
– …………………………………………………………………………
Trong TH buớc3 là SELECT:
$rs = mysql_query(“SELECT…”)
or die(“Không thựchiện duợc SQL”);
Các hàm cần thiết:
– mysql_num_rows($rs): Số luợng bản ghi
trong $rs
– $r=mysql_fetch_array($rs): Trả 1 dòng
của $rs vào $r.
3.4. Đóng kết nối tới CSDL.
3.4.1. Khai báo cú pháp:
Để đóng kết nối tới CSDL, ta dùng hàm mysql_close.
Hàm này có nhiệm vụ đóng kết nối tới CSDL có mã định danh được tạo ra
bởi hàm mysql_connect() như sau:
…………………………………………………………………………
3.4.2. Gõ tiếp theo vào đoạn code:
…………………………………………………………………………
if (!$link)
{
echo "Không thể kết nối được tới MySQL";
}
…………………………………………………………………………

?>
4.

Truy vấn cơ sở dữ liệu khác thông qua ADO
4.1. Tạo kết nối với Cơ sở dữ liệu:
4.1.1. Khai báo namespace cho SQL Server và MS Access:
………………………………………;
………………………………………; // Khai báo cho Access
………………………………………; // Khai báo cho SQL Server
4.1.2. Tạo kết nối với SQL Server & MS Access:
//của SQL Server
…………………………………………………………………………;
Nguyễn Văn Chí Linh

75


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

…………………………………………………………………………;
//của MS Access
…………………………………………………………………………
…………………………………………………………………………;
4.1.3. Tạo Data Adapter cho SQL Server & MS Access:
//Data Adapter của SQL Server
…………………………………………………………………………;
…………………………………………………………………………;

//Data Adapter của MS Access
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
4.1.4. Tạo DataSet:
//Tạo DataSet
…………………………………………………………………………;
//Đẩy dữ liệu trong dataAdapter vào DataSet (ds) bằng hàm Fill()
…………………………………………………………………………;
//Đối tượng DataSet chứa 1 tập các DataTable, nhưng ta chỉ lấy Table đầu tiên:
…………………………………………………………………………;
//Dùng vòng lặp foreach để lấy ra từng DataRow
foreach (DataRow dr in dt.Rows)
{
…………………………………………………………………………;
}
4.2. Tạo đối tượng DataAdapter kết nối trực tiếp vào Database không
cần Connection:
4.2.1. Khai báo đối tượng:
Của SQL Server:
//Khai báo chuỗi kết nối dữ liệu for SQL Server
…………………………………………………………………………;
//Lấy các dòng dữ liệu từ bảng Table1
…………………………………………………………………………;
//Tạo đối tượng DataAdapter và DataSet
…………………………………………………………………………;
//Tạo đối tượng DataSet
…………………………………………………………………………;
//Đẩy dữ liệu trong dataAdapter vào DataSet (ds) bằng hàm Fill()
…………………………………………………………………………;

//Đối tượng DataSet chứa 1 tập các DataTable, nhưng ta chỉ lấy Table đầu tiên:
…………………………………………………………………………;
//Dùng vòng lặp foreach để lấy ra từng DataRow
foreach (DataRow dr in dt.Rows)
Nguyễn Văn Chí Linh

76


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

{
…………………………………………………………………………;
}
Của MS Assces
//Khai báo chuỗi kết nối dữ liệu for MS Access
…………………………………………………………………………;
//Lấy các dòng dữ liệu từ bảng Table1
…………………………………………………………………………;
//Tạo đối tượng DataAdapter và DataSet
…………………………………………………………………………;
//Tạo đối tượng DataSet
…………………………………………………………………………;
//Đẩy dữ liệu trong dataAdapter vào DataSet (ds) bằng hàm Fill()
…………………………………………………………………………;
//Đối tượng DataSet chứa 1 tập các DataTable, nhưng ta chỉ lấy Table đầu tiên:
…………………………………………………………………………;

//Dùng vòng lặp foreach để lấy ra từng DataRow
foreach (DataRow dr in dt.Rows)
{
…………………………………………………………………………;
}
4.2.2. Nhập code thực hiện:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using ………………………………………………;
//using ……………………………………………;
//for Access database
using ………………………………………………; //for SQL Server
namespace DB_Test
{
public partial class Form1 : Form
{
//1. Khai báo biến thành viên:
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;

Nguyễn Văn Chí Linh

77



Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//2. Tạo kết nối với DB SQL Server
…………………………………………………………………………;
//3. Mở kết nối - Open
…………………………………………………………………………;
//4. Tạo DataSet
…………………………………………………………………………;
//5. Tạo đối tượng command và gắn nó cho đối tượng connection đã mở
// vào chuỗi truy vấn dữ liệu.
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
//6. Tạo đối tượng DataAdapter và gắn đối tượng command cho nó.
// Dùng hàm Fill() để đẩy dữ liệu trong Adapter vào ds như bình
thường.
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;

…………………………………………………………………………;
foreach (DataRow dr in dt.Rows)
{
…………………………………………………………………………;
}
}
}
}
5. Làm việc với LDAP
5.1. Kết nối với LDAP
5.1.1. Khai báo cú pháp:
…………………………………………………………………………. hàm kết
nối tới máy chủ LDAP, hàm này có 2 tham số: hostname (tên máy chủ LDAP)
Nguyễn Văn Chí Linh

78


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

và port (cổng kết nối, mặc định là cổng 389)
…………………………………………………………………………;
5.1.2. Nhập code:
// LDAP variables
$ldaphost = "ldap.example.com";
$ldapport = 389;

…………………………………………………………………………
or die("Không thể kết nối được đến $ldaphost");
?>
5.2. Đăng nhập hoặc nặc danh xác thực
5.2.1. Khai báo:
…………………………………………………………………………: hàm nối
kết với server LDAP để có thể thao tác với LDAP
Vd kết nối với LDAP server bằng user và password hợp lệ
5.2.2. Nhập tiếp vào code:
$ldaprdn = 'uname';
$ldappass = 'password';
…………………………………………………………………………
or die("Could not connect to LDAP server.");
if ($ldapconn) {
…………………………………………………………………………;
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
?>
Nếu kết nối bằng quyền anonymously
…………………………………………………………………………
or die("Could not connect to LDAP server.");
if ($ldapconn) {
…………………………………………………………………………;
if ($ldapbind) {

echo "LDAP bind anonymous successful...";
} else {
echo "LDAP bind anonymous failed...";
}

Nguyễn Văn Chí Linh

79


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

}
?>
5.3.

Tìm kiếm
5.3.1. Khai báo:
…………………………………………………………………………
5.3.2. Soạn thảo tiêp vào code ở trên:
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
echo $info["count"]." entries returned\n";

?>
5.4.
Xử lý tìm kiếm
5.4.1. Thêm các entry vào thư mục LDAP
…………………………………………………………………………
…………………………………………………………………………;
if ($ds) {
…………………………………………………………………………;
”);
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
} else {
echo “Unable to connect to LDAP server”;
}
?>
5.4.2. Xóa một entry khỏi thư mục LDAP
…………………………………………………………………………
Hàm trả về giá trị TRUE nếu xóa thành công và FALSE nếu thất bại
5.4.3.
So sánh giá trị của một thuộc tính
…………………………………………………………………………

Nguyễn Văn Chí Linh

80



Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

VD:
Code:
…………………………………………………………………………;
if ($ds) {
if (ldap_bind($ds)) {
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
if (
$r === -1) {
echo “Error: ” . ldap_error($ds);
} elseif ($r === true) {
echo “Password correct.”;
} elseif ($r === false) {
echo “Wrong guess! Password incorrect.”;
}
} else {
echo
“Unable to bind to LDAP server.”;
}
…………………………………………………………………………;

} else {
echo
“Unable to connect to LDAP server.”;
}
?>
5.4.4.
Trả lại thuộc tính đầu tiên của entry
…………………………………………………………………………;
5.4.5.
Trả lại kết quả id đầu tiên của entry
…………………………………………………………………………;
5.4.6.
Trả lại tham chiếu đầu tiên
…………………………………………………………………………;
5.5.

Hiện thị kết quả
5.5.1. Giải phóng kết quả bộ nhớ:
…………………………………………………………………………

Nguyễn Văn Chí Linh

81


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với


5.5.2. Đếm số lượng các entry được tìm thấy từ kết quả của
lệnh tìm kiếm.
…………………………………………………………………………
5.5.3. Trả lại thông báo lỗi LDAP của lệnh LDAP cuối cùng.
…………………………………………………………………………
5.6.

Đóng kết nối
5.6.1. Khai báo:
…………………………………………………………………………: hàm
đóng kết nối với LDAP, hàm này tương đương với
…………………………………………………………………………
Nếu kết nối đóng thành công sẽ trả về giá trị TRUE, ngược lại là FALSE.
5.6.2. Nhập thêm vào:
…………………………………………………………………………;
6. Thao tác với Email
6.1. Gửi email thông qua hàm mail()
6.1.1. Khai báo cú pháp:
Để gửi email trực tiếp từ máy chủ, ta có thể sử dụng hàm mail () với cú
pháp như sau:
………………………………………………………………………….
6.1.2. Nhập code:
<html>
<body>
if (isset($_REQUEST['email']))
{
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;

…………………………………………………………………………;
…………………………………………………………………………;
echo "Thank you for using our mail form";
}
else
{
echo "<form method='post' action='phpmail.php'>
Người gửi: <input name='email' type='text' />

Gửi tới: <input name='to' type='text' />

Tiêu đề: <input name='subject' type='text' />

Nội dung:

<textarea name='message' rows='15' cols='40'>
</textarea>

Nguyễn Văn Chí Linh

82


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

<input type='submit' />
</form>";

}
?>
</body>
</html>
6.2. Gửi email với phần Header mở rộng
6.2.1. Khái quát:
Kỹ thuật này sẽ cho phép bạn đưa thêm một số thông tin vào phần Header của
thông điệp email (Nếu bạn kiểm tra email sẽ có phần Header, trong đó ghi rất
nhiều thông tin , chẳng hạn như địa chỉ IP xuất phát, qua những máy email
nào, thời điểm...).
Ở đây chúng ta sẽ sử dụng phần tham số mở rộng.
6.2.2. Nhập code:
…………………………………………………………………………;
…………………………………………………………………………;
6.3. Gửi email theo định dạng HTML.
6.3.1. Tìm hiểu về kỹ thuật:
Chú ý rằng ở chế độ mặc định, nội dung thông điệp được truyền tải đi dưới dạng
văn bản thuần túy (plain text), và không thể hiện được các cấu trúc HTML
thông thường. Để có thể đưa định dạng HTML vào mail, qua đó cho phép
hiển thị hình ảnh, định dạng font chữ..., ta phải đưa thêm dòng sau đây vào
phần header:
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
6.3.2. Soạn thảo code:
…………………………………………………………………………; //note
the comma
…………………………………………………………………………;
…………………………………………………………………………;
$message = '

<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>

Here are the birthdays upcoming in August!


<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
Nguyễn Văn Chí Linh

83


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';

…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
…………………………………………………………………………;
?>
7. Xử lý XML
7.1. Lấy một đoạn XML mẫu để phân tích:
<?xml version="1.0"?>
<books>
<book isbn="978-1594489501">
<title>A Thousand Splendid Suns</title>
<author>Khaled Hosseini</author>
Riverhead Hardcover</publisher>
<amazon_price>14.27</amazon_price>
</book>
<book isbn="978-1594489587">
<title>The Brief Wondrous Life of Oscar Wao</title>
<author>Junot Diaz</author>
Riverhead Hardcover</publisher>
<amazon_price>14.97</amazon_price>
</book>
<book isbn="978-0545010221">
<title>Harry Potter and the Deathly Hallows</title>
<author>J. K. Rowling</author>
Arthur A. Levine Books</publisher>
<amazon_price>19.24</amazon_price>
</book>
</books>

7.1. Tạo ra một đối tượng SimpleXmlElement:
Nguyễn Văn Chí Linh

84


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

7.2.1. Khai báo:
…………………………………………………………………………;
…………………………………………………………………………;
7.2.2. Nhập code:
…………………………………………………………………………;
echo <<<table>
<tr>
<th>Title</th>
<th>Author</th>
<th>Publisher</th>
<th>Price at Amazon.com</th>
<th>ISBN</th>
</tr>
EOF;
foreach($books as $book) // loop through our books
{
echo <<

<tr>
<td>{$book->title}</td>
<td>{$book->author}</td>
<td>{$book->publisher}</td>
<td>${$book->amazon_price}</td>
<td>{$book['isbn']}</td>
</tr>
EOF;
}
echo '</table>';
?>
7.2.3. Cú pháp truy cập child element và attribute:
<book isbn="978-1594489501">
<title>A Thousand Splendid Suns</title>
<author>Khaled Hosseini</author>
Riverhead Hardcover</publisher>
<amazon_price>14.27</amazon_price>
</book>
Trong đó:
…………………………………………………………………………
………………………………………………………………………….
Nguyễn Văn Chí Linh

85


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với


7.2.4. Lấy ra tất cả các title của book và tất cả các số ISBN:
…………………………………………………………………………
foreach($titles as $title)
{
echo $title.PHP_EOL;
}
…………………………………………………………………………;
foreach($isbn as $isbn)
{
echo $isbn.PHP_EOL;
}
Nếu bạn không thích dụng foreach thì có thể dùng biến counter $i, viết lại là
………………………………………………………………………… rồi dùng
$tempBook để xử lý.
7.2.5. Parse thử RSS một trang:
…………………………………………………………………………
?ChannelID=16', null, true);
echo "

<a href='{$rss->channel->link}'>{$rss->channel>title}</a>

".PHP_EOL.'<hr />'.PHP_EOL;
foreach($rss->xpath('channel/item') as $item)
{
echo <<

<a href='{$item->link}'>{$item->title}</a>


<div>Posted at: {$item->pubDate}</div>
{$item->description}
<hr />
EOF;
}
?>

7.2.6. Tìm hiểu them một vài thuộc tính của đối tượng
SimpleXmlElement
…………………………………………………………………………; // Bản th
ên element nó là XML, bạn lấy giá trị của element thì ép kiểu về string
…………………………………………………………………………; // lấy tất
cả các attribute
…………………………………………………………………………; // lấy cá
c child element

Nguyễn Văn Chí Linh

86


Trắc nghiệm trực quan
PHP

Bài 4: Lập trình ứng dụng WEB với

Bộ câu hỏi và bài tập Tích hợp
TRẮC NGHIỆM TRỰC QUAN
I. Trắc nghiệm lựa chọn đa phương án:
a) Câu hỏi cấp độ nhớ lại:
1. Chọn phát biểu sai: Để hủy một session đã khai báo ta thực hiện?
A. $_SESSION['<tên session>']=null;
B. isset($_SESSION['<tên session>']);
C. unset($_SESSION['<tên session>']);
D. session_destroy();
2. Hàm time() dùng để làm gì, ngay khi cookie được gọi.?
A. trả về thời gian hiện tại của Cookie.

B. trả về thời điểm hiện tại.
C. trả về giờ hiện tại.
D. trả về thời gian làm việc của Cookie.
b) Câu hỏi cấp độ xử lý:
Khi khai báo một cookie như sau:
setcookie('myCookie','this is myCookie\'s value',time()+60*60);
3. Biến cookie vừa mới tạo là?
A. myCookie.
B. $myCookie.
C. 'this is myCookie\'s value'.
D. $'this is myCookie\'s value'.
4. Để xóa cookie vừa tạo ở trên ta khia báo như thế nào?
A. setcookie('myCookie','this is myCookie\'s value',time()-60*60)
B. delcookie('myCookie','this is myCookie\'s value',time()+60*60)
C. deletecookie('myCookie','this is myCookie\'s value',time()+60*60)
D. deletecookie('myCookie','this is myCookie\'s value',time()-60*60)
c) Câu hỏi cấp độ ứng dụng:
5. Ta có một trang php đã tạo một biến cookie. Khi đã xóa biến cookie ta thực hiện
câu lệnh echo $_COOKIE[‘myCookie’]; thì trình duyệt sẽ báo lồi gì?
A. Note Undefined index myCookie in C:\wwwroot\bai4.php on line
B. Non Undefined index myCookie in C:\wwwroot\bai4.php on line
C. No find my cookie index myCookie in C:\wwwroot\bai4.php on line
D. Không báo lổi gì
6. Giả sử có $host:localhost , $user:sa, $password: 123456 .
Tạo một kết nối như sau:
$link = mysql_connect("localhost", "sa", "123456");
if (!$link)
{
echo "Không thể kết nối được tới MySQL";

Nguyễn Văn Chí Linh

87


Trắc nghiệm trực quan
PHP

A.
B.
C.
D.
II.
1.
2.
III.
1.
2.

Bài 4: Lập trình ứng dụng WEB với

Exit;
}
if (!mysql_select_db ("Forums"))
{
echo "Không thể lựa chọn được CSDL Forums";
Exit;
}
Câu nào sau đây là đúng?
Sau khi chạy thì trên màn hình trình duyệt xuất hiện

“Không thể kết nối được tới MySQL”.
Sau khi chạy thì trên màn hình trình duyệt xuất hiện
“Không thể lựa chọn được CSDL Forums”.
Sau khi chạy thì trên màn hình trình duyệt xuất hiện
“Không thể lựa chọn được CSDL Forums” rồi thoát khỏi trình duyệt.
Không xuất hiện gì trên trình duyệt.
Trắc nghiệm đúng-sai:
Để biết số bản ghi bị tác động bởi lệnh mysql_query liền truớc ta dung hàm
mysql_affected_rows(). Đúng hay sai?
Hàm ldap_connect() là hàm kết nối tới máy chủ LDAP. Đúng hay Sai?
Trắc nghiệm đúng-sai trả lời ngắn:
Hàm ldap_connect() có 2 tham số: hostname (tên máy chủ LDAP) và port (cổng
kết nối, mặc định là cổng 389)
Để xóa một entry khỏi thư mục LDAP ta dùng hàm bool_delete ( resource
link_identifier, string dn )

Nguyễn Văn Chí Linh

88


Trắc nghiệm trực quan
IV.
1.
2.
3.
V.
1.
2.
VI.

1.

Bài 4: Lập trình ứng dụng WEB với PHP

Trắc nghiệm điền khuyết:
Hàm đóng kết nối với LDAP: ldap_close() tương đương với ……………….
(ldap_unbind())
Để xóa một cookie, chúng ta dùng cú pháp tương tự như khi khai báo là
setcookie(name, value, expire, path, domain) , song thông số ……….sẽ là quá
khứ(thời điểm hiện tại trừ đi một khoảng thời gian)( expire)
Để
đóng
kết
nối
tới
CSDL,
ta
dùng
hàm
mysql_close.
Hàm này có nhiệm vụ đóng kết nối tới CSDL có mã định danh được tạo ra bởi hàm
…………………..( mysql_connect())
Trắc nghiệm trả lời ngắn:
Để tìm kiếm với LDAP ta sử dụng hàm?( ldap_search ())
Muốn sử dụng một session trước tiên ta cần khai báo?( session_start() )
Trắc nghiệm ghép hợp:
Dạng 1:
Nối cột A tuong ướng với cột B:
Cột A
Cột B

1. Thiết lập kết nối tới CSDL
A. mysql_errno()
2. Lựa chọn CSDL
B. mysql_close()
3. truy vấn SQL
C. mysql_num_rows()
4. Số bản ghi bị tác động bởi lệnh
D. mysql_error()
mysql_query liền truớc.
E. mysql_affected_rows()
5. Thông báo lỗi
F. mysql_query
6. Mã lỗi
G. mysql_select_db ();
H. mysql_connect()
7. Số luợng bản ghi:
8. Đóng kết nối tới CSDL
1-H; 2- G; 3-F;4- E;5- D;6- A;7- C;8- B

Nguyễn Văn Chí Linh

89


Trắc nghiệm trực quan

Bài 4: Lập trình ứng dụng WEB với PHP

Dạng 2:
2. Nối Cách khai báo ở cột A cho phù hợp vói ý nghia ở cột B:

Cột A
Cột B
A. Khai báo namespace cho SQL Server
1. using
B. Khai báo namespace cho MS Access
System.ComponentModel;
2. using System.Data;
3. using System.Drawing;

C. Khai báo sử dụng date model cho
SQL Server;
D. Khai báo sử dụng CSDL cho Access
E. Khai Báo sử dụng công cụ drawing

4. using System.Data.OleDb;
5. using System.Data.SqlClient;
1- C;2- ;3- E;4- B;5- A
Dạng 3:
3. Nối lời giải thích ở cột A phù hợp với lệnh ở cột B:
Cột A
Cột B
1. Bắt đầu một
A. session $_SESSION['views'] =
2. Gán giá trị cho một
views;
3. Sử dụng session
B. session_start();
4. Thay đổi giá trị cho session
C. unset($_SESSION['cart']);
5. Kiểm tra session có tồn tại hay

D. .isset($_SESSION['cart']));
không
E. views = $_SESSION['views'];
6. Hủy một session
F. session session_destroy();
1- B; 2- A,E; 3- ;4- ;5- D; 6-C,F;

Dạng 4:
4. Nối các hàm ở cột B sao cho phù hợp với công dụng ở cột A:
Cột A
1. Kết nối với LDAP
Nguyễn Văn Chí Linh

90


×