1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng Tích hợp THIẾT KẾ WEB VỚI PHP MY SQL

21 462 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 723,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

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

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:

<?php

session_start();

$_SESSION['views'] = 1; // lưu views

echo "Pageviews = " $_SESSION['views']; //lấy views và hiện thị

Trang 3

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

Ở đâ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

Trang 4

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ư

Trang 5

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

Trang 6

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:

Trang 7

$_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

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:

Trang 8

B1: Nhập đoạn code sau vào file bai4.php

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:

Trang 9

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

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:

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:

Trang 10

– 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:

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

Trang 11

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)

{

Trang 12

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"]);}

//using System.Data.OleDb; //for Access database

using System.Data.SqlClient; //for SQL Server

Trang 13

private System.Data.SqlClient.SqlConnection conn;

private System.Data.DataSet ds;

private System.Data.SqlClient.SqlCommand myCommand;

private System.Data.SqlClient.SqlDataAdapter dataAdapter;

//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);

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

Trang 14

}

}

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);

$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:

Trang 15

$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 )

<?php

$ds = ldap_connect(“localhost”);

if ($ds) {

$r = ldap_bind($ds, “cn=root, o=My Company, c=US”, “secret”);

$info["cn"] = “John Jones”;

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

Trang 16

mixed ldap_compare ( resource link_identifier, string dn, string attribute, string value )

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ả

Trang 17

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 )

bool ldap_unbind ( resource link_identifier );

6 Thao tác với Email

6.1 Gửi email thông qua hàm mail()

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' /><br />

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

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

Nội dung:<br />

Trang 18

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

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ạngvă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 < mary@example.com>" ", " ; //note the comma

$to = "Kelly < kelly@example.com>";

$subject = "Birthday Reminders for August";

Trang 19

$headers = "Content-type: text/html; charset=iso-8859-1\r\n";

$headers = "From: Birthday Reminder < birthday@example.com>\r\n";

Trang 20

7.1 Tạo ra một đối tượng SimpleXmlElement:

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

Trang 21

7.2.4 Lấy ra tất cả các title của book và tất cả các số ISBN:

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:

<?php

$rss = new SimpleXMLElement('http://www.tuoitre.com.vn/tianyon/RssView.aspx?ChannelID=16', null, true);

echo "<h1><a

$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

Ngày đăng: 10/06/2016, 22:58

TỪ KHÓA LIÊN QUAN

w