Các bản tin khác
- Bài 10: Kết hợp PHP và MYSQL trong ứng dụng website
- Bài 9: Cơ bản về ngôn ngữ SQL và Mysql
- Bài 8: Khái niệm về hàm và gọi lại hàm trong PHP
- Bài 7: Khái niệm cơ bản về Cookie và session trong PHP
- Bài 6: Tổng quan về mảng và các hàm hỗ trợ trong PHP
- Bài 5: Tìm hiểu quy trình làm việc trên file trong PHP
- Bài 4: Xử lý giá trị form trong PHP
- Bài 3: Toán tử và biểu thức trong PHP
- Bài 2: Kiến thức tổng quan về lập trình PHP
- Bài 1: Giới thiệu, Cấu hình và cài đặt PHP
Lập Trình PHP Căn Bản
Bài 11: Viết ứng dụng đăng nhập bằng PHP và MYSQL
Ở những bài trước chúng ta đã học qua các kiến thức trọng yếu về PHP. Tuy nhiên, để có thể xây dựng một website hoàn chỉnh bằng những kiến thức đó thì quả thật không đơn giản. Bởi vì các kiến thức qua sách vở và tài liệu dù sao cũng chỉ là những kiến thức tổng quát và thiếu tính khách quan thực tiến. Nên khi người học lập trình bước vào giai đoạn viết ứng dụng thì thường rất lúng túng. Đó cũng là lý do tôi viết bài này để hưỡng dẫn các bạn dần làm quen với cách tiếp cận một ứng dụng PHP&MYSQL như thế nào.
Trước hết chúng ta phải thiết kế và xây dựng mô hình cơ sở dữ liệu ứng với từng lệnh bên dưới (xem lại bài ngôn ngữ SQL và MYSQL Căn Bản) sau đó mới tiến hành triển khai lập trình.

Tiếp đến chúng ta tiến hành kiểm tra dữ liệu từ form
Đoạn code ở trên sẽ kiểm tra xem người dùng có tiến hành nhấn nút đăng nhập hay không. Và nếu có thì chúng ta sẽ xét tiếp tình trạng người dùng có để trống các ô username và password hay không. Nếu có chúng ta sẽ thông báo lỗi ở bên trên form, để người sử dụng tiến hành nhập liệu.
Kế đến chúng ta kiểm tra xem có tồn tại hai biến $u và $p (chỉ khi người dùng đăng nhập thành công thì mới có thể tạo ra 2 biến đó). Tiếp đến chúng ta tiến hành kết nối cơ sở dữ liệu (xem lại bài kết hợp PHP & MYSQL trong ứng dụng web).
Và tiến hành kiểm tra xem username và password người sử dụng vừa nhập có trùng khớp với thông tin có trong cơ sở dữ liệu hay không ?. Nếu không thì chúng ta sẽ báo lỗi ngay. Ngược lại sẽ tiến hành lấy dữ liệu từ bảng và gán vào session. Để có thể quản lý phiên làm việc một cách hiệu quả trên mọi trang của khu vực admin (xem lại bài khái niệm cơ bản về cookie và session).
Như vậy code hoàn chỉnh cho ứng dụng này là như sau:
Ở bài sau, chúng ta sẽ tiếp tục tìm hiểu ứng dụng kết hợp PHP & MYSQL cho việc thêm một thành viên như thế nào. Mọi sự góp ý, cũng như thắc mắc của các bạn dành cho bài viết vui lòng sử dụng tính năng thảo luận tại diễn đàn. Hoặc thông qua việc liên hệ của hệ thống website. Mong sẽ nhận được nhiều ý kiến đóng góp từ các bạn.
Cập nhật và chỉnh sửa lần cuối bởi TuanVA's Blog
Trân Trọng
(Bùi Quốc Huy)
31003
PHP Framework những điều nên và không nên
Khái quát về PHP Framework
Học PHP như thế nào khi bạn chưa biết lập trình?
Tự học lập trình PHP dễ hay khó ?
Web 2.0 - Khái niệm và bản chất của chúng như thế nào ?



Nguyễn Văn Kiên (14:29 03/02/2010)
Ở phần này mình nghĩ nên phân tích Sau khi đăng nhập thành công thì tự chuyển trang như thế nào, khi chưa đăng nhập thì như thế nào.Kenny (19:51 03/02/2010)
Đúng rồi bạn ạ. Bài ở trên là một mô hình ví dụ cơ bản để những người mới học lập trình có thể tiếp cận một cách dễ dàng.Sau khi đăng nhập thành công thì thường chúng ta sẽ đưa người dùng tới một trang nào đó. Có thể là admin hay usercp,...Cái này, tuỳ theo ý đồ của người lập trình thực sự muốn như thế nào trong ứng dụng của mình.
nghia (18:27 08/03/2010)
em tao trang login.php tai dong session_start bi loi xin chi giup!Nguyễn Thành Ngọc (21:22 31/03/2010)
Ai có trang web nào viết php cho mình xin 1 trang có database luôn.Nếu có xin gữi qua mail:jack.ji@yahoo.com.Đang cần gấp lắm ai có thi cho xin cái đơn giãn cũng được ko cần phức tạp.Cám ơn trướcPhan Thanh Nhuần (00:29 06/04/2010)
1). Theo như bài số 7, có nói rằng: "đăng ký session hay cookie, lệnh đăng ký phải nằm trên tất cả mọi lệnh khác".2). Theo bài số 11 này, lệnh đăng ký lại nằm bên trong lệnh khác.
"1)."
Phan Thanh Nhuần (00:41 06/04/2010)
Góp ý:......
www.qhonline.info là nơi tất cả các bạn yêu thích PHP gặp gỡ nhau, trao đổi kinh nghiệm cho nhau.Tuy nhiên, nó vẫn còn một vài hạn chế mình xin góp ý như sau:
1. Mục "Phản hồi của bạn" không được tiện cho lắm, bởi vì nó không cho phép đăng câu hỏi hay "góp ý" một cách trực tiếp mà phải "CHỜ" đợi sự kiểm duyệt. Rõ ràng rất mất thời gian, trong khi đó nội dung của câu hỏi có thể là một bạn nào đó có thể trả lời ngay lập tức. Tất nhiên là vấn đề của mình hỏi, mình cũng phải giải quyết, nếu như tình trạng này, mình cũng chẳng biết đến bao giờ mới có thể nhận được answer, và liệu rằng sau khi có answer thì mình có còn quay lại trang này nữa không?
2. Hiện nay, có rất nhiều website cho phép "người dùng" thảo luận trực tiếp. Chẳng cần phải kiểm duyệt. Rõ ràng, đây là một website "khoa học" cũng chẳng có những "thành viên không mời mà đến". Vì vậy webmaster không phải bận tâm chiện này. ví dụ: website học photoshop, mình nhớ học nó 1 năm trước. Rất tuyệt vời.
Cám ơn webmaster.
Phan Thanh Nhuần (10:59 06/04/2010)
Mình tìm hiểu từ tối đến giờ vẫn không thể giải quyết được vấn đề: "Không thể đăng ký sesson được". Sau mỗi lần refresh, lại phải nhập lại.....
Hy vọng, vấn đề của mình sẽ được Kenny quan tâm.
...
Nick Y!M: codeintell
Kenny (20:55 06/04/2010)
@Phan Thanh Nhuần: Chào bạn.Trong bài 11 này lệnh đăng ký không nằm ở trên cùng, nhưng trên nó thì không hề có khoảng trắng, HTML hay lệnh echo nào cả. Session chỉ thực bị lỗi khi và chỉ khi trên session_start() vi phạm những ràng buộc ở trên. Bạn bị lỗi, theo tôi thấy. Có thể là trên lệnh session_start() của bạn có những lỗi như trên.
Nếu bạn vẫn gặp khó khăn khi sài làm ví dụ này. Vui lòng truy cập vào diễn đàn: http://www.qhonline.info/forum
Để nhận được sự hỗ trợ tốt hơn.
Về ý kiến của bạn: Trước hết rất cám ơn về góp ý của bạn. Nhưng đây chỉ là 1 website cá nhân và hơn nữa đây là những bài tutorial nên tôi phải kiểm duyệt thông tin trước khi cho chúng xuất hiện trên website. Điều này mặc dù là bất tiện nhưng như thế sẽ tốt hơn trong việc sàng lọc những phản hồi thực sự muốn giao lưu và học hỏi.
Và bạn cũng yên tâm là tôi luôn check những ý kiến của mọi người hằng ngày và public chúng trong 24h kể từ khi các bạn gửi ý kiến.
Cám ơn vì đã chia sẻ ý kiến của bạn trên QHOnline.
Trân trọng.
Phan Thanh Nhuần (21:08 07/04/2010)
[Re]Mình đã nhận được phản hồi.
Và xin cám ơn bạn !
nguyen son (19:49 28/04/2010)
Cảm ơn rất nhiều mình đang học môn lập trình ứng dụng mạng rất cần những bài viết bằng PHP như thế này.Vu Thi Lan (09:48 29/04/2010)
minh thay bai viet nay cua ban rat hay va rat thiet thuc doi voi nhung nguoi moi hoc nhung ban co the cho minh hoi mot chut ve van de ngai le : bay gio minh muon tao mot trang user voi 2 quyen la admin va normal (admin duoc phep them sua xoa ... con normal thi ko) thi minh phai viet nhu the nao ha ban ban co the chi cho minh duoc ko???? ma minh dang dung cakephp de viet ban a va ko duoc dung ACL dau ban a! Mong som nhan duoc cau tra loi cua banNDT (09:54 29/04/2010)
phần session của em bị lỗi...mong được sự giúp đỡ!lei nguyen (00:05 03/05/2010)
cho e hỏi :$_SESSION['userid'] = $row[id];
userid là mình lấy từ cột nào ra vậy
Minh NT (10:40 03/05/2010)
@lei nguyen : 'userid' la tên của SESSION.Quang (13:54 06/05/2010)
Mình làm đủ các bước ! Nhưng có 1 vấn đề , đó chính là code không hoạt động !Mình test dựa trên Null username và password---nhưng nó vấn action tới link đối tượng mà không báo lổi " Please enter your username"
Từ dòng đầu tiên nó đả không thực hiện lệnh của chuổi code!
Vấn đề là do đâu ( PHP mình dùng PHP/5.3.0 )
Xin cám ơn về bài viết , và hi vọng bạn hồi đáp cho mình
Kenny (19:31 06/05/2010)
@Quang: Rất vui vì bạn đã quan tâm các bài viết trên website.Xin được trả lời cùng bạn như sau:
Khi bạn nhấn action mà nó chỉ đẩy sang 1 trang khác có nghĩa là bạn đã làm 2 trang riêng biệt.
Yêu cầu của bài này là các bạn cần làm trên 1 trang. Và đặt tên của chúng là login.php.
Bởi đoạn code if(isset($_POST['ok'])) được dùng để kiểm tra ngay trên trang login.php. (Vì khi mới mở ra và bạn chưa nhấn nút submit thì rõ ràng sẽ không tồn tại biến $_POST['ok']. Và chúng ta sẽ chỉ xử lý đúng sai khi và chỉ khi người dùng tiến hành nhập liệu.
Tôi cũng có gửi file login.php copy nguyên trên website cho bạn qua email luôn đó. Tuy nhiên để tương tác với CSDL thì bạn cần phải tạo CSDL và kết nối với chúng thành công nữa nhé.
Nếu có vấn đề gì, bạn có thể gửi mail hoặc comment ngay bên dưới bài viết của tôi trên QHOnline.Info.
Trân trọng.
Nhị Loan (08:53 07/05/2010)
Cảm ơn bạn vì những bài viết này.Thật sự học php mà thầy giáo dạy ít quá.
Vậy là phải tự tìm hiểu ah. Chẳng biết làm gì cả. Chỉ biết tham khỏa ở ngoài thôi. Cảm ơn bạn nhé!
ngô thị mai (07:42 10/05/2010)
anh chị giúp về php với phần xử lý chuỗi. em viết bài chuyển giá trị tháng năm yyyy/mm/dd sang dd/mm/yyyy mà không chạy nổi. thaks anh chị trướcvu thi lan (06:57 18/05/2010)
chao cac ban ! minh cung da lam bai dang ky nay roi nhung dung that la no ko kiem tra phan minh nhap username va password chua va no cung ko kiem tra xem trong csdl da co username nay chua ma no submit luon toi mot trang khac luon ban co the giai thich giup minh dc ko Minh xin post bai ma minh copy cua ban ve va minh da sua cho hop voi co so du lieu cua minh ma van kho chay duoc ???Code :
<html>
<body>
<?php
if(isset($_POST(OK)){
if(empty($_POST['username'])){
$message['username'] = ' Vui long dien ten dang nhap </br>';
}else {
$u = $_POST['username'];
}
if(empty($_POST['password'])){
$message['password'] = 'Vui long dien password </br>';
}else{
$p = $_POST['password'];
}
}
$con = mysql_connect("localhost","root","");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sinhvien");
$sql = "SELECT * FROM member WHERE username = '".$u."' AND password = '".$p."' ";
$result = mysql_query($sql);
mysql_close($con);
if(!empty($result)){
echo '<b>user name va password khong dung</b>';
} else {
echo 'OK';
}
echo '<br/>';
?>
<div align="center">
<form action="danhsach.php" method="post">
<tr>
<td>Username:</td>
<input type="text" name="username" size=25 /><br />
</tr>
<tr><td></td><td><?php echo $message['username']; ?></td></tr>
<tr>
<td>Password:</td>
<input type="password" name="masv" size=25 /><br />
</tr>
<tr><td></td><td><?php echo $message['password']; ?></td></tr>
<input type="submit" name="ok" value="Dang Nhap" />
</table>
</form>
</div>
</body>
</html>
thep nguyen (10:49 19/05/2010)
ban co tinh den van de kiem tra du lieu khi nguoi dung nhap vao form chua, nhung ky hieu dac biet nhu *zEn (23:29 19/05/2010)
hay lam ! cam on nhieu nhieu luon. mjnh dang can doan code naylechinh8x (16:28 20/05/2010)
Thầy Huy cho em hỏi là, khi mình muốn tạo db mysql thì thường người ta dùng chương trình hỗ trợ nào để tạo. Em thấy trong Apache có tạo db mysql bằng dos nhưng thấy ko tiện lợi cho lắmtrần bảo trung (09:04 21/05/2010)
cho mình hỏi sao khi đăng nhập minh muốn hiên tten ủa ngươi đăng nhập trên trang web nhưng làm hoai vẫn không được<?php
if (isset($_COOKIE['ten'])){
echo " Chào $_COOKIE['ten']! .";}
else{
echo "<a href=index.php?nav=dangnhap>Đăng Nhập</a> ";}
?>
mong ban giup cho minh
zoothank (14:58 01/06/2010)
tôi có làm theo các bước hướng dẫn trên và tôi không rõ sai ở đâu khi nhấn "đăng nhập" thì lại báo "liên kết bị đứt gãy"tức là không kết nối được
dư thanh (00:05 02/06/2010)
tôi thấy bạn cho code hoàn chỉnh trên nếu:-tạo 1 file php mà ko có đoạn code máy tính tự sinh cho ta(chỉ trống trơn)--> thì copy -> chạy lỗi
-tạo file mới (php) có đoạn code máy tính tự sinh:
......
<html>
<body>
</body>
</html>
thì chương trình chạy tốt
nhưng 1 số chỗ khi đánh user name mật khẩu,máy vẫn báo lỗi chỗ :
"Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:wampwwwlogin_qhonline_infologin.php on line 30
can't connect this database"
newbie (08:58 15/06/2010)
Làm xong báo lỗi này :Fatal error: Call to undefined function session_register() in C:AppServwwwvdvdlogin.php on line 34
kien (10:27 23/06/2010)
anh cho em hoi khi cai dat dream 2004 co can cau' hinh ji hok hay cai dat xong la viet code ha anhkien (16:02 23/06/2010)
thay cho em hoi sao khi cai dat xong va cau hinh rui,sao khi em chay doan code cua thay` thi lai bi loi~ nay` hoai the' thay`:----Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwww hietkexulydangnhap.php on line 26hiep (17:07 02/07/2010)
Mình mình chép nguyên đoạn code đó về rồi nhưng vẫn ko như ý của bài nó. Nó ko phát hiện được người dùng có gõ vào trước khi nhấn nút đăng nhập ko.NamND (14:07 05/07/2010)
Mình thấy có 1 điều đáng để nói là code đăng nhập này chưa có phòng lỗ hổng sql injection. Không biết các bạn có ý kiến sao... Điều này khá là nguy hiểm mà :(Khanh (21:10 05/07/2010)
Làm thế nào để sau khi login xong thì cái form biến mất ạ (nhưng vẫn link tới trang đó mà ko phải 1 trang khác).Ai biết chỉ dụm
Thanks