Giáo trình PHP - MySQL

Ngôn ngữ PHP ra đời năm 1994 Rasmus Lerdorf sau đó được phát triển

bởi nhiều người trải qua nhiều phiên bản. Phiên bản hiện tại là PHP 5 đã

được công bố 7/2004.

Có nhiều lý do khiến cho việc sử dụng ngôn ngữ này chiếm ưu thế xin

nêu ra đây một số lý do cơ bản :

-Mã nguồn mở (open source code)

-Miễn phí, download dễ dàng từ Internet.

-Ngôn ngữ rất dễ học, dễ viết.

-Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành

từ Windows, Linux, Unix

-Rất đơn giản trong việc kết nối với nhiều nguồn DBMS, ví dụ như :

MySQL, Microsoft SQL Server 2000, Oracle, PostgreSQL, Adabas,

dBase, Empress, FilePro, Informix, InterBase, mSQL, Solid, Sybase,

Velocis và nhiều hệ thống CSDL thuộc Hệ Điều Hành Unix (Unix dbm)

cùng bất cứ DBMS nào có sự hổ trợ cơ chế ODBC (Open Database

Connectivity) ví dụ như DB2 của IBM.

pdf74 trang | Chuyên mục: PHP | Chia sẻ: dkS00TYs | Lượt xem: 1978 | Lượt tải: 3download
Tóm tắt nội dung Giáo trình PHP - MySQL, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
; 
?>>Administrator 
Username: <input type=text name=user size=20 
value="" /> 
Password: 
Re-password: 
B- Xây dựng trang xóa thành viên: 
Đối với trang xóa dữ liệu, chúng ta cũng không cần phải xử lý quá nhiều. 
Bởi nhiệm vụ của chúng chỉ đơn giản là xóa đi những dòng trong bảng. 
Như vậy cũng như trang edit chúng ta nhận giá trị từ nội dung liên kết ở 
trang quản lý đã gửi là del_user.php?userid=$row[id]. 
Và thực thi lệnh kết nối csdl để xử lý nội dung này. 
<?php 
$conn=mysql_connect("localhost","root","root") or die("can't connect 
this database"); 
mysql_select_db("project",$conn); 
$sql="delete from user where id='".$id."'"; 
mysql_query($sql); 
header("location:mana_user.php"); 
exit(); 
?> 
Sau khi xóa xong thành viên thì hệ thống sẽ đưa chúng ta trở về trang 
quản lý user lại. 
C- Tổng kết: 
 Như vậy chúng ta đã kết thúc các thao tác thêm, sửa, xóa, quản lý thành 
viên. Qua những chuỗi bài học này, chắc hẳn các bạn đã có những khái 
niệm hình thành từ việc ứng dụng lập trình PHP để xây dựng các hệ 
thống cơ bản rồi. Việc lập trình 1 ứng dụng đòi hỏi bạn ngoài việc vận 
dụng nội dung đã học ra, bạn còn phải biết linh động xử lý các tình huống 
một cách hiệu quả. Tránh việc rập khuôn một cách máy móc và học thuộc 
các nội dung code. Vì ở những mô hình khác, bài toán khác bạn sẽ có 
những cách thức xử lý và giải quyết khác nhau. 
PHP – MYSQL ( phần 10) 
Viết ứng dụng tạo mã xác nhận bằng PHP 
Trước tiên, chúng ta tiến hành tạo form HTML đơn giản để thực thi thao 
tác nhập liệu như sau: 
 Captcha 
   
Chúng ta chú ý phần hình ảnh, tại đây tôi truyền đường dẫn chính là liên 
kết tới trang random_image.php. Trang này sẽ thực thi công việc tạo ra 
những bức hình có dãy số ngẫu nhiên để phần nhập liệu của người sử 
dụng tham chiếu tới. 
Tiếp theo, chúng ta khởi tạo file random_image.php để lấy ra dãy số ngẫu 
nhiên và phát sinh chúng ngay trên tấm hình cho người truy cập nhập 
liệu. 
Để làm được điều đó. Chúng ta sẽ khởi tạo session và lưu dãy số nhập 
liệu đó vào session của mình, sau đó so khớp với trang form bên kia.(xem 
lại Bài 7: Khái niệm cơ bản về cookie và session trong PHP) 
 Đầu tiên chúng ta sử dụng hàm md5 và ran để mã hóa các ký tự bao gồm 
số và chữ cái. Khi sử dụng hàm md5() ký tự phát sinh sẽ lên tới 32 ký tự. 
Và chúng ta chỉ lấy duy nhất 5 ký tự từ chuỗi mã hóa đó bằng hàm substr. 
Tiếp tục ta lưu đoạn mã hóa này trong session cụ thể 
$_SESSION['security_code'], để tại trang form ta sẽ sử dụng so sánh với 
phần nhập liệu của người sử dụng. 
Vậy nên đoạn code dưới sẽ giải quyết các tình huống này. 
<?php 
$md5_hash = md5(rand(0,999)); 
$security_code = substr($md5_hash, 15, 5); 
$_SESSION["security_code"] = $security_code; 
?> 
Kế đến ta khởi tạo tấm hình với chiều rộng và chiều cao mà ta thiết lập 
thông qua hàm ImageCreate() . Và tiếp tục khai báo 2 màu chính là trắng 
và đen bằng hàm ImageColorAllocate($image, red, green, blue ). Hàm 
này sẽ tạo ra một màu sắc từ hệ màu RGB trên tấm hình mà chúng ta vừa 
khởi tạo. 
Tiếp tục ta đổ background của tấm hình sẽ là màu đen và chữ xuất hiện 
trên tấm hình sẽ là màu trắng bằng hàm ImageFill() và hàm 
ImageString(). Hàm ImageString có một số đối số cơ bản như sau: 
ImageString($image, 5, 30, 6, $security_code, $white); Trong đó: 
+ $image là hình mà chúng ta khởi tạo. 
+ 5: là font-size mà chúng ta quy ước cho ký tự xuất hiện trên hình. 
+ 30: là khoảng cách bên trái của tấm hình. 
+ 6 : là khoảng cách từ trên của tấm hình. 
+ $security_code: là đoạn code sau khi chúng ta cắt ra ở trên. 
+ $white: là màu sắc mà chúng ta đã sử dụng hàm ImageColorAllocate() 
ở trên để khởi tạo ra màu trắng. 
<?php 
$width = 100; 
$height = 30; 
$image = ImageCreate($width, $height); 
$white = ImageColorAllocate($image, 255, 255, 255); 
$black = ImageColorAllocate($image, 0, 0, 0); 
ImageFill($image, 0, 0, $black); 
ImageString($image, 5, 30, 6, $security_code, $white); 
?> 
Kế tới chúng ta sẽ sử dụng lệnh header để trả nội dung này trở về dữ liệu 
dạng hình. Và tiến hành khởi tạo định dạng cho file hình mà chúng ta vừa 
tạo là JPG đồng thời giải phóng hình tạm được sử dụng để khợi tạo ra tấm 
hình này bằng đoạn code sau: 
<?php 
header("Content-Type: image/jpeg"); 
ImageJpeg($image); 
ImageDestroy($image); 
?> 
Để dễ quản lý chúng ta sẽ đặt tất cả đoạn code trên vào trong 1 hàm để dễ 
sử dụng và quản lý chúng tốt hơn. Vậy toàn bộ đoạn code trong trang 
random_image.php này như sau. 
<?php 
session_start(); 
function create_image() 
{ 
 $md5_hash = md5(rand(0,999)); 
 $security_code = substr($md5_hash, 15, 5); 
 $_SESSION["security_code"] = $security_code; 
 $width = 100; 
 $height = 30; 
 $image = ImageCreate($width, $height); 
 $white = ImageColorAllocate($image, 255, 255, 255); 
 $black = ImageColorAllocate($image, 0, 0, 0); 
 ImageFill($image, 0, 0, $black); 
 ImageString($image, 5, 30, 6, $security_code, $white); 
 header("Content-Type: image/jpeg"); 
 ImageJpeg($image); 
 ImageDestroy($image); 
} 
create_image() ; 
exit(); 
?> 
Tiếp tục, trong trang form chúng ta phải khởi tạo session để chúng nhận 
được các giá trị mà ta đã khởi tạo và sử dụng ở trang random_image, kế 
tới ta kiểm tra xem người dùng có nhấn submit chưa. Nếu có ta sẽ tiếp tục 
kiểm tra xem người dùng nhập vào textbox có đúng là dãy số hiển thị trên 
hình ảnh hay không. Và xuất ra thông báo tương ứng với nội dung của 
người nhập liệu. (xem lại Bài 4: Xử lý giá trị form trong PHP) 
Sau đây là toàn bộ code của trang form.php. 
<?php 
session_start(); 
if(isset($_POST['ok'])) 
{ 
 if($_POST['txtCaptcha'] == NULL) 
 { 
 echo "Please enter your code"; 
 } 
 else 
 { 
 if($_POST['txtCaptcha'] == $_SESSION['security_code']) 
 { 
 echo "ma lenh hop le"; 
 } 
 else 
 { 
 echo "Ma lenh khong hop le"; 
 } 
 } 
} 
?> 
 Captcha 
   
Download toàn bộ source code này tại đây. 
Tổng kết: 
 Qua bài học này, chúng ta đã hiệu được nguyên tắc xử lý và những hàm 
cơ bản mà 1 hệ thống khi sử dụng captcha cần phải vận dụng như thế nào. 
Và tất nhiên hàm xử lý captcha này cũng chỉ mang kiến trúc tương đối. 
Để tăng cường tính bảo mật hơn, các bạn nên sử dụng 1 số hàm chuyên 
dụng nhằm mã hóa hoặc gây nội dung khó nhìn hơn để chặn các tools 
hoặc các hệ thống bot có thể qua mặt thông số này. 
Viết ứng dụng đếm số người online bằng php 
9: ngôn ngữ SQL và MYSQL cơ bản) 
mysql> create table useronline(tgtmp INT(15) DEFAULT "0" NOT 
NULL , 
ip VARCHAR(50) NOT NULL , 
local VARCHAR(100) NOT NULL, 
PRIMARY KEY(tgtmp), 
KEY ip(ip), 
KEY local(local)); 
tgtmp là thời gian mà họ truy cập được tính khi họ truy vào trang web đó. 
IP là dãy số lưu thông tin IP của họ khi viếng thăm website của chúng ta. 
local là nơi lưu đường dẫn mà họ đang truy cập. 
Khi người dùng truy cập vào trang web, chúng ta sẽ tiến hành insert 
thông tin của họ vào cơ sở dữ liệu với các tham số cơ bản nhưng trong 
database. 
tgtmp được tính ra bằng hàm time(). Hàm này sẽ lấy ra thời gian hiện tại 
của người truy cập. Tiếp tục ta lại tính thời gian mới của họ, được tính 
bằng việc quy ước thời gian quy định. Cụ thể ở đây tôi cho là 900 giây 
tương đương với 15 phút truy cập của họ. 
<?php 
$tg=time(); 
$tgout=900; 
$tgnew=$tg - $tgout; 
?> 
như vậy nếu thời gian lưu trong database mà nhỏ hơn thời gian new này 
thì chúng ta có thể hiểu rằng vị khách ấy đã rời khỏi website của chúng 
ta. Cụ thể hơn. 
Ví dụ: tôi viếng thăm website đó là 7h. 
như vậy hệ thống sẽ ghi thông tin lúc đó là 7h. 
Nếu sau 1 thời gian tôi không làm gì, hoặc tôi không truy cập website đó 
nữa thì hệ thống sẽ không ghi nhận thông tin mới. Như thế nếu bây giờ 8h 
và trừ đi 15 phút tôi quy ước, rõ ràng là thời gian mới hiện tại là 7h45, 
Thời gian này vẫn lớn hơn thời điểm lưu thông tin 7h (7h45 > 7h). Do 
vậy, nếu chúng thỏa điều kiện đó thì chúng ta chỉ việc xóa đi các record 
trong cơ sở dữ liệu là xong. 
Vậy ta có code kết nối CSDL như sau:(xem lại Bài 10: kết hợp PHP và 
MYSQL trong ứng dụng) 
<?php 
$conn=mysql_connect("localhost","root","root") or die("can't connect"); 
mysql_select_db("online",$conn); 
?> 
Sau đó ta tiến hành ghi nhận thông tin người dùng vào CSDL. 
<?php 
$sql="insert into useronline(tgtmp,ip,local) 
values('$tg','$REMOTE_ADDR','$PHP_SELF')"; 
$query=mysql_query($sql); 
?> 
$REMOTE_ADDR là biến môi trường dùng để lấy ra IP của người truy 
cập. 
$PHP_SELF là biến môi trường dùng để lấy ra đường dẫn mà người dùng 
đang truy cập. 
Tiếp đến ta tiến hành xóa record khi thời gian thực lớn hơn thời gian 
trong cơ sở dữ liệu. 
<?php 
$sql="delete from useronline where tgtmp < $tgnew"; 
$query=mysql_query($sql); 
?> 
Tiếp tục là công việc hiển thị thông tin ra bên ngoài bằng cách liệt kệ các 
record có trong database. 
<?php 
$sql="SELECT DISTINCT ip FROM useronline WHERE 
file='$PHP_SELF'"; 
$query=mysql_query($sql); 
$user = mysql_num_rows($query); 
?> 
DISTINCT là cú pháp cho phép liệt kệ các dòng record mà không cho 
phép chúng có dữ liệu trùng lặp như cú pháp select bình thường. 
Vậy chúng ta sẽ liệt kê tất cả những ip của những ai đang truy cập trên 
trang useronline.php. 
Phần việc cuối cùng còn lại là chúng ta sẽ xuất thông tin ấy ra trình duyệt. 
Và sau đây là toàn bộ nội dung code của trang useronline.php 
<?php 
$tg=time(); 
$tgout=900; 
$tgnew=$tg - $tgout; 
$conn=mysql_connect("localhost","root","root") or die("can't connect"); 
mysql_select_db("online",$conn); 
$sql="insert into useronline(tgtmp,ip,local) 
values('$tg','$REMOTE_ADDR','$PHP_SELF')"; 
$query=mysql_query($sql); 
$sql="delete from useronline where tgtmp < $tgnew"; 
$query=mysql_query($sql); 
$sql="SELECT DISTINCT ip FROM useronline WHERE 
file='$PHP_SELF'"; 
$query=mysql_query($sql); 
$user = mysql_num_rows($query); 
echo "user online :$user"; 
?> 

File đính kèm:

  • pdfGiáo trình PHP - MySQL.pdf
Tài liệu liên quan