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

Bài giảng 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 (352.06 KB, 21 trang )

Bài Giảng - Tích hợp

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

Bài giảng 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:
session_start();
1.2. Lưu giá trị của session:


session_start();
$_SESSION['views'] = 1; // lưu views
echo "Pageviews = ". $_SESSION['views']; //lấy views và hiện thị
?>
1.3. Sử dụng SESSION:
session_start();
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;

1.4.

echo "views = ". $_SESSION['views'];
?>
Xóa và Hủy Session:

8


Bài Giảng - Tích hợp

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

session_start();
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
session_start();
session_destroy();
?>
1.5.
Tạo các trang php:
1.5.1. Tạo trang session.php với nội dung:
session_start();
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:
session_start();
?>
<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:
session_start();
session_destroy();
?>
<html>
9


Bài Giảng - Tích hợp

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

<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:
setcookie(name, value, expire, path, domain);
Trong đó:
* name: là tên của cookie.
* value: là giá trị mà chúng ta gán cho cookie.
* expire: thời gian mà cookie có hiệu lực.
* domain: tên miền kết mà cookie được sử dụng.

* path: đường dẫn mà cookie được sử dụng.
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: Tạo file bai4.php trong \wamp\www
B2: Nhập đoạn code sau
<!DOCTYPE html>
<html>
<head>
<title>Bài 4 - Cookie</title>
</head>
<body>
setcookie('myCookie','this is myCookie\'s value',time()+60*60);
?>
</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

10


Bài Giảng - Tích hợp

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


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ư

11


Bài Giảng - Tích hợp

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

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

12


Bài Giảng - Tích hợp

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

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:

13


Bài Giảng - Tích hợp

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

$_COOKIE["tên cookie"];
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>
setcookie('myCookie','this is myCookie\'s value',time()+60*60);
echo $_COOKIE['myCookie'];
?>
</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:

setcookie(name, value, expire, path, domain);
Để 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).
2.3.2. Thực hiện theo các bước xóa một cookie:
14


Bài Giảng - Tích hợp

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

B1: Nhập đoạn code sau vào file bai4.php
<!DOCTYPE html>
<html>
<head>
<title>Bài 4 - Cookie</title>
</head>
<body>
setcookie('myCookie','this is myCookie\'s value',time()+60*60);
//hủy biến myCookie
setcookie('myCookie','this is myCookie\'s value',time()-60*60);
echo $_COOKIE['myCookie'];
?>
</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 $_COOKIE['myCookie'];
, trình duyệt sẽ báo lỗi.
3. Thao tác với cơ sở dữ liệu MySQL
3.1. Thiết lập kết nối tới CSDL.
3.1.1. Khai báo cú pháp:
15


Bài Giảng - Tích hợp

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

mysql_connect(host,tên_truy_cập,mật_khẩu);
trong đó:
host là chuỗi chứa tên (hoặc địa chỉ IP) của máy chủ cài đặt MySQL.
tên_truy_cập là chuỗi chứa tên truy cập hợp lệ của CSDL cần kết nối
mật_khẩu là chuỗi chứa mật khẩu tương ứng với tên truy cập
Ví dụ:
mysql_connect ("localhost", "thu_mot_ti","thu_hai_ti");
?>
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.1.1. Nhập đoạn code như sau:
$link = mysql_connect("localhost", "mysql_user", "mysql_password");

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:
mysql_select_db (tên_CSDL);
Hàm này thường được dùng sau khi thiết lập kết nối bằng hàm
mysql_connect. 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:
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$link)
{
echo "Không thể kết nối được tới MySQL";
}
if (!mysql_select_db ("Forums"))
{
echo "Không thể lựa chọn được CSDL Forums";
}
?>
3.3. Tiến hành các truy vấn SQL, xử lý các kết quả trả về
$biến= mysql_query(“Lệnh SQL”)or die(“Không thựchiện duợc SQL”);
Các hàm cần thiết:
16



Bài Giảng - Tích hợp

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

– mysql_affected_rows(): Số bản ghi bị tác động bởi lệnh mysql_query liền
truớc.
– mysql_error(): Thông báo lỗi(nếu có)
– mysql_errno(): Mã lỗi
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:
mysql_close(mã_định_danh_kết_nối).
3.4.2. Gõ tiếp theo vào đoạn code:
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$link)
{
echo "Không thể kết nối được tới MySQL";
}
mysql_close($link);
?>
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:
using System.Data;
using System.Data.OleDb;
// Khai báo cho Access
using System.Data.SqlClient; // 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
string connectionString = "localhost; database=db_test; uid=sa; pwd=;";
SqlConnection conn = new SqlConnection(connectionString);
//của MS Access
string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data
source = c:\\db_test.mdb";
4.1.3. Tạo Data Adapter cho SQL Server & MS Access:
//Data Adapter của SQL Server
string commandString = "SELECT * from Table1";
SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, conn);
//Data Adapter của MS Access
17


Bài Giảng - Tích hợp

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

string commandString = "SELECT * from Table1";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(commandString,
conn);
OleDbConnection conn = new OleDbConnection(connectionString);

4.1.4. Tạo DataSet:
//Tạo DataSet
DataSet ds = new DataSet();
//Đẩy dữ liệu trong dataAdapter vào DataSet (ds) bằng hàm Fill()
dataAdapter.Fill(ds);
//Đối tượng DataSet chứa 1 tập các DataTable, nhưng ta chỉ lấy Table đầu tiên:
DataTable dt = ds.Tables[0];
//Dùng vòng lặp foreach để lấy ra từng DataRow
foreach (DataRow dr in dt.Rows)
{
listBox1.Items.Add(dr["CompanyName"].ToString() + dr["ContactName"]);
}
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
string connectionString = "localhost; database=db_test; uid=sa; pwd=;";
//Lấy các dòng dữ liệu từ bảng Table1
string commandString = "SELECT CompanyName, ContactName from
Table1";
//Tạo đối tượng DataAdapter và DataSet
SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString,
connectionString);
//Tạo đối tượng DataSet
DataSet ds = new DataSet();
//Đẩy dữ liệu trong dataAdapter vào DataSet (ds) bằng hàm Fill()
dataAdapter.Fill(ds, "Table1");
//Đối tượng DataSet chứa 1 tập các DataTable, nhưng ta chỉ lấy Table đầu tiên:
DataTable dt = ds.Tables[0];

//Dùng vòng lặp foreach để lấy ra từng DataRow
foreach (DataRow dr in dt.Rows)
{
18


Bài Giảng - Tích hợp

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

listBox1.Items.Add(dr["CompanyName"].ToString() + dr["ContactName"]);
}
Của MS Assces
//Khai báo chuỗi kết nối dữ liệu for MS Access
string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data
source = c:\\db_test.mdb";
//Lấy các dòng dữ liệu từ bảng Table1
string commandString = "SELECT CompanyName, ContactName from
Table1";
//Tạo đối tượng DataAdapter và DataSet
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(commandString,
connectionString);
//Tạo đối tượng DataSet
DataSet ds = new DataSet();
//Đẩy dữ liệu trong dataAdapter vào DataSet (ds) bằng hàm Fill()
dataAdapter.Fill(ds, "Table1");
//Đối tượng DataSet chứa 1 tập các DataTable, nhưng ta chỉ lấy Table đầu tiên:
DataTable dt = ds.Tables[0];
//Dùng vòng lặp foreach để lấy ra từng DataRow
foreach (DataRow dr in dt.Rows)

{
listBox1.Items.Add(dr["CompanyName"].ToString() + dr["ContactName"]);
}
4.2.2. Nhập code đầy đủ:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//using System.Data.OleDb;
//for Access database
using System.Data.SqlClient; //for SQL Server
namespace DB_Test
{
public partial class Form1 : Form
{
//1. Khai báo biến thành viên:
19


Bài Giảng - Tích hợp

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

private System.Data.SqlClient.SqlConnection conn;
private System.Data.DataSet ds;
private System.Data.SqlClient.SqlCommand myCommand;
private System.Data.SqlClient.SqlDataAdapter dataAdapter;

public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//2. Tạo kết nối với DB SQL Server
string connectionString = "localhost; database=db_test; uid=sa; pwd=;";
conn = new SqlConnection(connectionString);
//3. Mở kết nối - Open
conn.Open();
//4. Tạo DataSet
ds = new 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.
myCommand = new SqlCommand();
myCommand.Connection = conn;
myCommand.CommandText = "SELECT * from Table1";
//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.
dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = myCommand;
dataAdapter.TableMappings.Add("Table", "Table1");
dataAdapter.Fill(ds);
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
//listBox1.Items.Add(dr["CompanyName"].ToString() +
dr["Description"]);

}
}
20


Bài Giảng - Tích hợp

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

}
}
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:
Ldap_connect(): 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) và port (cổng kết nối, mặc định là cổng 389)
Ldap_connect(string hostname, int port);
5.1.2.
Nhập code:
// LDAP variables
$ldaphost = "ldap.example.com";
$ldapport = 389;
$ldapconn = ldap_connect($ldaphost, $ldapport)
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:
Ldap_bind(): 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';
$ldapconn = ldap_connect("ldap.example.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
?>
Nếu kết nối bằng quyền anonymously
$ldapconn = ldap_connect("ldap.example.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
$ldapbind = ldap_bind($ldapconn);
if ($ldapbind) {
echo "LDAP bind anonymous successful...";
21



Bài Giảng - Tích hợp

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

} else {
echo "LDAP bind anonymous failed...";
}
}
?>
5.3.
Tìm kiếm
5.3.1. Khai báo:
ldap_search ( resource link_identifier, string base_dn, string filter [, array attrib
utes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]] )
5.3.2. Soạn thảo tiêp vào code ở trên:
$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
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
bool ldap_add ( resource link_identifier, string dn, array entry )
$ds = ldap_connect(“localhost”);

if ($ds) {
$r = ldap_bind($ds, “cn=root, o=My Company, c=US”, “secret”);
$info["cn"] = “John Jones”;
$info["sn"] = “Jones”;
$info["mail"] = “”;
$info["objectclass"] = “person”;
$r = ldap_add($ds, “cn=John Jones, o=My Company, c=US”, $info);
ldap_close($ds);
} else {
echo “Unable to connect to LDAP server”;
}
?>
5.4.2. Xóa một entry khỏi thư mục LDAP
bool ldap_delete ( resource link_identifier, string dn )
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
22


Bài Giảng - Tích hợp

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

mixed ldap_compare ( resource link_identifier, string dn, string attribute,
string value )
VD:
Code:
$ds=ldap_connect(“localhost”);
if ($ds) {

if (ldap_bind($ds)) {
$dn = “cn=Matti Meikku, ou=My Unit, o=My Company, c=FI”;
$value = “secretpassword”;
$attr = “password”;
$r=ldap_compare($ds, $dn, $attr, $value);
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.”;
}
ldap_close($ds);
} else {
echo
“Unable to connect to LDAP server.”;
}
?>
5.4.4.
Trả lại thuộc tính đầu tiên của entry
string ldap_first_attribute ( resource link_identifier,resource
result_entry_identifier,int &ber_identifier )
5.4.5.
Trả lại kết quả id đầu tiên của entry
ldap_first_entry ( resource link_identifier, resource result_identifier )

5.4.6.
Trả lại tham chiếu đầu tiên
ldap_first_reference ( resource link, resource result )
5.5.

Hiện thị kết quả
23


Bài Giảng - Tích hợp

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

5.5.1.
Giải phóng kết quả bộ nhớ:
bool ldap_free_result ( resource result_identifier )
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.
int ldap_count_entries ( resource link_identifier, resource result_identifier )
5.5.3.
Trả lại thông báo lỗi LDAP của lệnh LDAP
cuối cùng.
string ldap_error ( resource link_identifier )
5.6.

Đóng kết nối
5.6.1.
Khai báo:
Ldap_close(): hàm đóng kết nối với LDAP, hàm này tương đương với

ldap_unbind();
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:
bool ldap_unbind ( resource link_identifier );
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:
mail (dia_chi_nhan,tieu_de,noi_dung,cac_tham_so_mo_rong_tuy_chon).
6.1.2. Nhập code:
<html>
<body>
if (isset($_REQUEST['email']))
{
$email = $_REQUEST['email'] ;
$to = $_REQUEST['to'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( $to, "Subject: $subject",$message" );
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:

24


Bài Giảng - Tích hợp

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

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

<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:
$ThongTinMoRong="From: webmaster@$SERVER_NAME\r\n"
."Reply-To: webmaster@$SERVER_NAME\r\n"

."X-Mailer: PHP/" . phpversion();
mail($EmailGui, $EmailNhan, $NoiDung,$ThongTinMoRong);
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:
$to = "Mary < >" . ", " ; //note the comma
$to .= "Kelly < >";
$subject = "Birthday Reminders for August";
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>

Here are the birthdays upcoming in August!


<table>
25


Bài Giảng - Tích hợp

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


<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</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>
';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: Birthday Reminder < >\r\n";
$headers .= "Cc: \r\n";
$headers .= "Bcc: \r\n";
mail($to, $subject, $message, $headers);
?>
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>
26


Bài Giảng - Tích hợp

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

7.1.

Tạo ra một đối tượng SimpleXmlElement:
7.2.1. Khai báo:
$books = SimpleXMLElement($XmlData);
$books = SimpleXMLElement('books.xml', null, true);
7.2.2. Nhập code:
$books = new SimpleXMLElement('books.xml', null, true);

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 đó:
isbn là một attribute, các giá trị của một attribute phải để trong dấu (")
<title>, <author>,... là các child element.
27


Bài Giảng - Tích hợp

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

7.2.4. Lấy ra tất cả các title của book và tất cả các số ISBN:
$titles = $books->xpath('book/title');
foreach($titles as $title)
{
echo $title.PHP_EOL;
}
$isbn = $books->xpath('book/@isbn');
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à
$tempBook = $books->book[$i] rồi dùng $tempBook để xử lý.
7.2.5. Parse thử RSS một trang:
$rss = new SimpleXMLElement(' />spx?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
$value
= trim((string) $element); // Bản thên element nó là XML, bạn lấy gi
á trị của element thì ép kiểu về string
$attributes = $element->attributes(); // lấy tất cả các attribute
$children = $element->children(); // lấy các child element

28



×