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.
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 *MỤC TIÊU BÀI HỌC: Sau học xong này, người học có: a Kiến thức: Xác định thao tác lập trình PHP MySQL Liệt kê hàm Cookie LDAP Xác định thao tác với Email Xây dựng truy vấn sở liệu thong qua ADO Liệt kê hàm xử lý XML b Kỹ năng: Sử dụng trình duyệt Web Sử dụng lập trình ứng dụng Web với PHP Làm việc với Cookie LDAP Thao tác với sở liệu MySQL với Email Truy vấn sở liệu khác thông qua ADO Xử lý XML c Thái độ: Quan sát trình làm việc giáo viên Tiếp nhận cộng việc cần làm *Nội dung: Trao đổi thông tin với trình duyệt Session: 1.1 Khai báo session: session_start(); 1.2 Lưu giá trị session: 1.3 Sử dụng SESSION: Xóa Hủy Session: Bài Giảng - Tích hợp Bài 4: Lập trình ứng dụng WEB với PHP Có thể hủy hoàn toàn session cách gọi hàng session_destroy 1.5 Tạo trang php: 1.5.1 Tạo trang session.php với nội dung: Test page 1 Click here 1.5.2 Tạo trang session2.php với nội dung: Result Page 1.5.3 Tạo trang session3.php với nội dung: Bài Giảng - Tích hợp Bài 4: Lập trình ứng dụng WEB với PHP Test page 1 Click here Làm việc với Cookie 2.1 Tạo biến Cookie 2.1.1 Khai báo với cú pháp: setcookie(name, value, expire, path, domain); Trong đó: * name: tên cookie * value: giá trị mà gán cho cookie * expire: thời gian mà cookie có hiệu lực * domain: tên miền kết mà cookie sử dụng * path: đường dẫn mà cookie sử dụng Thông thường, sử dụng thông số đầu khai báo cookie là: name, value expire 2.1.2 Thực theo bước: B1: Tạo file bai4.php \wamp\www B2: Nhập đoạn code sau Bài - Cookie Ở đây, tạo biến Cookie có tên ‘myCookie’, giá trị ‘this is myCookie’s value’ Hàm time() dùng để trả thời điểm tại, gọi 60*60 thời gian đồng hồ (60 giây * 60 phút) Vậy thời gian hiệu lực biến Cookie ‘myCookie’ đồng hồ tính từ thời điểm 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ó ra, kiểm tra xem biến ‘myCookie’ tạo chưa cách sau Click vào chữ firefox góc bên trái, chọn thẻ tùy chọn Một bảng tùy chọ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 cookie riêng lẻ Một bảng cookie ra, kéo xuống 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, thấy biến ‘myCookie’ với đầy đủ thông số mà vừa tạo Click đóng để thoát 2.2 Đọ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 theo bước: B1: Cập nhật đoạn code sau vào file bai4.php Bài - Cookie B2: Refresh lại trình duyệt 2.3 Xóa Cookie 2.3.1 Khai báo cú pháp: setcookie(name, value, expire, path, domain); Để xóa cookie, dùng cú pháp tương tự khai báo, song thông số expire khứ(thời điểm trừ khoảng thời gian) 2.3.2 Thực theo bước xóa 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 Bài - Cookie B2: Refresh lại trình duyệt lần Biển ‘myCookie’ không còn, muốn in dòng echo $_COOKIE['myCookie']; , trình duyệt báo lỗi Thao tác với sở 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); đó: host chuỗi chứa tên (hoặc địa IP) máy chủ cài đặt MySQL tên_truy_cập chuỗi chứa tên truy cập hợp lệ CSDL cần kết nối mật_khẩu chuỗi chứa mật tương ứng với tên truy cập Ví dụ: Khi kết nối tới MySQL thành công, hàm trả giá trị số nguyên định danh liên kết, ngược lại, hàm trả giá trị false Ta dùng hàm if để kiểm tra xem có kết nối tới MySQL hay không 3.1.1.1 Nhập đoạn code sau: 3.2 Lựa chọn CSDL 3.2.1 Khai báo: Để lựa chọn CSDL mà người sử dụng có tên 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 thường dùng sau thiết lập kết nối hàm mysql_connect Hàm trả true thành công, false thất bại 3.2.2 Soạn vào sau: 3.3 Tiến hành truy vấn SQL, xử lý kết trả $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ố ghi bị tác động 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 ghi $rs: $r=mysql_fetch_array($rs): Trả dòng $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 có nhiệm vụ đóng kết nối tới CSDL có mã định danh tạo hàm mysql_connect() sau: mysql_close(mã_định_danh_kết_nối) 3.4.2 Gõ vào đoạn code: Truy vấn sở liệu khác thông qua ADO 4.1 Tạo kết nối với Cơ sở liệu: 4.1.1 Khai báo namespace cho SQL Server 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 SQL Server string commandString = "SELECT * from Table1"; SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, conn); //Data Adapter 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 liệu dataAdapter vào DataSet (ds) hàm Fill() dataAdapter.Fill(ds); //Đối tượng DataSet chứa tập DataTable, ta lấy Table đầu tiên: DataTable dt = ds.Tables[0]; //Dùng vòng lặp foreach để lấy 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 liệu for SQL Server string connectionString = "localhost; database=db_test; uid=sa; pwd=;"; //Lấy dòng liệu từ bảng Table1 string commandString = "SELECT CompanyName, ContactName from Table1"; //Tạo đối tượng DataAdapter DataSet SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, connectionString); //Tạo đối tượng DataSet DataSet ds = new DataSet(); //Đẩy liệu dataAdapter vào DataSet (ds) hàm Fill() dataAdapter.Fill(ds, "Table1"); //Đối tượng DataSet chứa tập DataTable, ta lấy Table đầu tiên: DataTable dt = ds.Tables[0]; //Dùng vòng lặp foreach để lấy 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 liệu for MS Access string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = c:\\db_test.mdb"; //Lấy dòng liệu từ bảng Table1 string commandString = "SELECT CompanyName, ContactName from Table1"; //Tạo đối tượng DataAdapter DataSet OleDbDataAdapter dataAdapter = new OleDbDataAdapter(commandString, connectionString); //Tạo đối tượng DataSet DataSet ds = new DataSet(); //Đẩy liệu dataAdapter vào DataSet (ds) hàm Fill() dataAdapter.Fill(ds, "Table1"); //Đối tượng DataSet chứa tập DataTable, ta lấy Table đầu tiên: DataTable dt = ds.Tables[0]; //Dùng vòng lặp foreach để lấy 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 gắn cho đối tượng connection mở // vào chuỗi truy vấn liệu myCommand = new SqlCommand(); myCommand.Connection = conn; myCommand.CommandText = "SELECT * from Table1"; //6 Tạo đối tượng DataAdapter gắn đối tượng command cho // Dùng hàm Fill() để đẩy liệu Adapter vào ds 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 } } 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 có tham số: hostname (tên máy chủ LDAP) port (cổng kết nối, mặc định cổng 389) Ldap_connect(string hostname, int port); 5.1.2 Nhập code: 5.2 Đăng nhập 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 để thao tác với LDAP Vd kết nối với LDAP server user password hợp lệ 5.2.2 Nhập tiếp vào code: Nếu kết nối quyền anonymously 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: 5.4 Xử lý tìm kiếm 5.4.1 Thêm entry vào thư mục LDAP bool ldap_add ( resource link_identifier, string dn, array entry ) 5.4.2 Xóa entry khỏi thư mục LDAP bool ldap_delete ( resource link_identifier, string dn ) Hàm trả giá trị TRUE xóa thành công FALSE thất bại 5.4.3 So sánh giá trị 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: 5.4.4 Trả lại thuộc tính entry string ldap_first_attribute ( resource link_identifier,resource result_entry_identifier,int &ber_identifier ) 5.4.5 Trả lại kết id entry ldap_first_entry ( resource link_identifier, resource result_identifier ) 5.4.6 Trả lại tham chiếu ldap_first_reference ( resource link, resource result ) 5.5 Hiện thị kết 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 nhớ: bool ldap_free_result ( resource result_identifier ) 5.5.2 Đếm số lượng entry tìm thấy từ kết 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 lệnh LDAP cuối 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 tương đương với ldap_unbind(); Nếu kết nối đóng thành công trả giá trị TRUE, ngược lại FALSE 5.6.2 Nhập thêm vào: bool ldap_unbind ( resource link_identifier ); 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 sử dụng hàm mail () với cú pháp sau: mail (dia_chi_nhan,tieu_de,noi_dung,cac_tham_so_mo_rong_tuy_chon) 6.1.2 Nhập code: 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 dùng biến counter $i, viết lại $tempBook = $books->book[$i] dùng $tempBook để xử lý 7.2.5 Parse thử RSS trang: xpath('channel/item') as $item) { echo pubDate} {$item->description} EOF; } ?> 7.2.6 Tìm hiểu them vài thuộc tính đối tượng SimpleXmlElement $value = trim((string) $element); // Bản thên element XML, bạn lấy gi trị element ép kiểu string $attributes = $element->attributes(); // lấy tất attribute $children = $element->children(); // lấy child element 28 [...]... 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... 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... 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: < ?php $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,... 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... method='post' action='phpmail .php' > Người gửi: Gửi tới: Tiêu đề: 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 "; } ?> 6.2 Gửi email với phần Header... successful "; } else { echo "LDAP bind failed "; } } ?> Nếu kết nối bằng quyền anonymously < ?php $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 "; } } ?>... trong dấu (") , , 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... 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";... Arthur A Levine Books 19.24 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: < ?php $books = new SimpleXMLElement('books.xml', null, true); echo