Lập trình PHP - Chương 3_PHP và MySQL

$biến_kết_nối =

mysql_connect(“máy_chủ”,“tên”,“mật_khẩu”)

or die(“Không kết nối ñược”);

 Hàm die(“Chuỗi”): ðưa ra thông báo và kết

thúc.

 Với cách viết trên, die chỉ thực hiện khi lệnh

trước nó không thành công

$cnn =

mysql_connect(“localhost”,”coursek50”,”123

456”);

pdf30 trang | Chuyên mục: PHP | Chia sẻ: dkS00TYs | Lượt xem: 2052 | Lượt tải: 2download
Tóm tắt nội dung Lập trình PHP - Chương 3_PHP và MySQL, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
PHP The Fourth Day
ðào Quang Minh
Trung tâm Tính toán Hiệu năng cao – ðHBK Hà Nội
minh0302@gmail.com 
Chương 3: PHP và MySQL
1. Các bước truy cập CSDL
2. SQL Injection
Các bước truy cập cơ sở dữ liệu
Tạo kết nối ñến Database Server
$biến_kết_nối = 
mysql_connect(“máy_chủ”,“tên”,“mật_khẩu”) 
or die(“Không kết nối ñược”);
 Hàm die(“Chuỗi”): ðưa ra thông báo và kết 
thúc. 
 Với cách viết trên, die chỉ thực hiện khi lệnh 
trước nó không thành công
$cnn = 
mysql_connect(“localhost”,”coursek50”,”123
456”);
Lựa chọn cơ sở dữ liệu
mysql_select_db(“Tên CSDL”) 
or die (“Chưa có CSDL”);
mysql_select_db(“coursek50”);
Viết truy vấn
$biến = mysql_query(“Lệnh SQL”)
or die(“Không thực hiện ñược SQL”);
$sql = mysql_query(“Select * From 
account Where username = ‘coursek50’ 
”);
Các hàm hỗ trợ
mysql_affected_rows(): Số bản ghi bị tác 
ñộng bởi lệnh mysql_query liền trước
mysql_num_rows(): Kết quả số bản ghi 
của câu lệnh mysql_query
mysql_error(): Thông báo lỗi (nếu có)
mysql_errno(): Mã lỗi
Các hàm xử lý kết quả
mysql_fetch_array($sql): trả về một dòng 
bản ghi dưới dạng một mảng với chỉ mục 
dạng số hoặc tên của trường.
mysql_fetch_row($sql): trả về kết quả là 
một mảng có thứ tự (bắt ñầu từ 0)
mysql_fetch_assoc($sql): trả về kết quả là 
một mảng ñược ñánh chỉ số bằng tên
Tham khảo tại: 
SQL Injuction
Thế nào là SQL Injection
 Là một kỹ thuật cho phép những kẻ tấn 
công thi hành các câu lệnh truy vấn SQL 
bất hợp pháp
Bằng cách lợi dụng lỗ hổng trong việc 
kiểm tra dữ liệu nhập trong các ứng dụng 
web
Ví dụ
$sql=mysql_query(“Select * From 
account Where username = ‘$user’ And 
password = ‘$pass’”)
Nếu như User nhập biến User là: “OR 1 OR 
user=“ thì câu lệnh SQL sẽ là:
SELECT * FROM users WHERE user = "" OR 1 
OR user="" AND password = "$password“
 Và kết quả trả về sẽ là toàn bộ user trong cơ sở 
dữ liệu
(tiếp)
$sql=“Insert Into table_name 
Values(‘$val1’,’$val2’,’$val3’)”;
Nếu như các biến val1 thành như sau:
‘ + (Select Top 1 Fieldname From 
TableName) +’
 Insert Into TableName Values(‘’ + 
Select Top 1 FieldName From 
TableName)+ ‘’,’$val2,’$val3’)
Cách phòng tránh
SQL Injection khai thác những bất cẩn của 
các lập trình viên phát triển ứng dụng web 
khi xử lý dữ liệu nhập vào
Tùy vào môi trường và cách cấu hình hệ 
thống mà tác hại là nặng hay nhẹ
(tiếp)
Kiểm soát chặt chẽ dữ liệu nhập vào
– Giới hạn chiều dài của chuỗi nhập liệu
– Xây dựng hàm thay thế dấu 1 nháy ñơn bằng 
2 dấu nháy ñơn
– Xây dựng hàm loại bỏ một số kí tự và từ khóa 
nguy hiểm
– Dùng hàm addslashes ñể thêm “\” vào trước 
chuỗi nhập vào
Ví dụ
Hàm length ñể giới hạn ñộ dài
Hàm thay thế ‘ thành ‘‘
function replace($input)
{ 
$output = str_replace("'","''",$input); 
return $output;
}
(tiếp)
Hàm loại bỏ các kí tự không mong muốn
function killchar($input)
{
$len = strlen($input);
$char = array("select","drop",";","--
","insert","delete","xp_"); 
$output = str_replace($char,"",$input);
return $output;
}
Lập trình AJAX
Giới thiệu
AJAX = Asynchronous JavaScript And XML
AJAX không phải là ngôn ngữ mới mà là 
một cách mới sử dụng các ngôn ngữ ñã 
có.
AJAX giúp ta tạo các trang web nhanh 
hơn, tiện lợi hơn, thân thiện hơn khi sử 
dụng.
AJAX là tập hợp của nhiều công nghệ với 
thế mạnh của riêng mình ñể tạo thành 
một sức mạnh mới
ðặc ñiểm AJAX
 Là công nghệ của web browser. ðộc lập 
với web server.
Sử dụng JavaScript ñể gửi và nhận dữ liệu 
giữa client và server.
AJAX dựa trên:
– JavaScript
– XML
– HTML
– CSS
AJAX sử dụng XML và HTTP Request
So sánh
Click –Wait-And-Refresh
Ajax based
Truy xuất dữ liệu từ server trong JavaScript
Với IE6: sử dụng Msxml2.XMLHTTP:
XMLHttp = 
new ActiveXObject("Msxml2.XMLHTTP")
Với IE5.6: sử dụng Microsoft.XMLHTTP
XMLHttp =
new ActiveXObject("Microsoft.XMLHTTP")
Với trình duyệt khác: XMLHttpRequest
XMLHttp=new XMLHttpRequest()
Mã lệnh tổng quát
function GetXMLHttpObject(){
var oXMLHttp=null
try{
oXMLHttp=new ActiveXObject("Msxml2.XMLHttp")
}
catch(e){
try{
oXMLHttp=new ActiveXObject("Microsoft.XMLHttp")
}
catch (e){}
}
if (oXMLHttp==null)
oXMLHttp=new XMLHttpRequest()
return oXMLHttp;
}
ðối tượng XMLHttpRequest
Các phương thức
– open(“method,”url”): Thiết lập yêu cầu ñến 
server (ñịa chỉ trang cần kết nối ñến)
– send(content): Gửi yêu cầu ñến server.
– abort(): Hủy yêu cầu hiện tại
Các thuộc tính
– readyState: Trạng thái hiện tại của ñối tượng.
– onreadystatechange: Bộ xử lý sự kiện cho một 
sự kiện phát sinh khi có thay ñổi trạng thái
– responseText: Chuỗi dữ liệu trả về.
(tiếp)
 responseXML Response trả về từ server 
dưới dạng XML. ðối tượng này có thể ñược 
phân tách và khảo sát như một ñối tượng 
tài liệu DOM.
 status Mã trạng thái HTTP từ server 
(chẳng hạn 200 nếu không có lỗi, 404 cho 
lỗi Not Found, …).
 statusText Thông ñiệp của mã trạng thái 
HTTP (chẳng hạn OK hay Not Found, …)
Thuộc tính readyState
 readyState=0: Chưa khởi tạo: sau khi tạo ñối 
tượng XMLHttpRequest nhưng chưa gọi open().
 readyState=1: Vừa khởi tạo: sau khi gọi open() 
nhưng chưa gọi send().
 readyState=2: Vừa gửi ñi: ngay sau khi gọi 
send().
 readyState=3: ðang xử lý: sau khi kết nối ñến 
server nhưng server chưa trả lời.
 readyState=4: Xong: sau khi server tính toán 
xong, dữ liệu ñã gửi về xong.
Quá trình tương tác
1. Một event client-side gây ra 1 sự kiện –
Ajax event. Bất kỳ một tác ñộng nào 
cũng có thể gây ra Ajax event
<input type="text" id="email" 
name="email" onblur =
"validateEmail()";>
(tiếp)
2. Một thể hiện của XMLHttpRequest ñược 
tạo ra: 
– dùng phương thức open()
– tạo lời gọi hàm
– ñịa chỉ URL ñược thiết lập cùng với phương 
thức Http ñược yêu cầu
– request ñược tạo ra qua việc gọi send()
(tiếp)
var xmlHttp;
function validateEmail() {
var email = document.getElementById("email");
var url = "validate?email=" + escape(email.value);
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
xmlHttp.open("GET", url);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}
(tiếp)
3. Một request ñược tạo và gửi ñến server
4. Server xử lý yêu cầu (truy cập cơ sở dữ 
liệu, tác vụ hệ thống...)
5. Response ñược trả về cho trình duyệt (xử 
lý ở dạng text/xml)
header('Content-Type: text/xml');
(tiếp)
6. Cấu hình XMLHttpRequest ñể gọi hàm 
callback() khi kết quả xử lý ñược trả về
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
//do something interesting here
}
}
}

File đính kèm:

  • pdfLập trình PHP - Chương 3_PHP và MySQL.pdf
Tài liệu liên quan