Thứ Hai, 30 tháng 12, 2013

Học PHP | Xử lý FORM trong PHP

Khi học PHP thì điều không thể thiếu là xử lý dữ liệu trong form: gửi giá trị xử lý, lấy giá trị được gửi và xử lý chúng. Và hôm nay chúng ta sẽ học lập trình về form.
Một trong những ứng dụng quan trọng của PHP đó là giúp tương tác xử lý dữ liệu trên form của người sử dụng. Nhằm mục đích giúp cập nhật thông tin một cách linh động và dễ dàng quản lý chung hơn bởi sự kết hợp tuyệt vời của cơ sở dữ liệu.
Tuy nhiên để làm được điều ấy PHP yêu cầu form phải đáp ứng 1 số quy định chung đặt ra.
Chúng ta cùng phân tích thẻ form trong HTML sau:
Chúng ta thấy rằng 1 form phải bao gồm:
Tên form để dễ dàng tách biệt với giá trị của chúng.
Action: hành động chuyển tiếp đến link xử lý.
Method: Là phương thức truyền bao gồm POST và GET.
Ví dụ:
Như vậy ta thấy rằng. Đoạn code trên làm những việc sau.
Đầu tiên khi khách nhập liệu username vào thì chúng sẽ chuyển tới trang check.php để tiến hành xử lý thông tin. Trên phương thức POST, với tên form là reg. Giá trị mà chúng ta gởi là username vừa nhập liệu.
Vậy làm cách nào để chúng ta lấy được giá trị vừa nhập liệu nào ?.
PHP cho phép ta lấy giá trị dựa vào 2 phương thức POST và GET.
Đới với POST ta có : $_POST[‘Giá trị’]
Đối với GET ta có : $_GET[‘Giá trị’]
Vậy với đoạn code trên có thể lấy được biến xử lý là : $_POST[‘username’];
Username là tên của field mà người sử dụng nhập liệu vào.
1 PHƯƠNG THỨC GET:
Phương thức này cũng được dùng để lấy dữ liệu từ form nhập liệu. Tuy nhiên nhiệm vụ chính của nó vẫn là lấy nội dung trang dữ liệu từ web server.
Ví dụ:
Với url sau: shownews.php?id=50
Vậy với trang shownews ta dùng hàm $_GET[‘id’] sẽ được giá trị là 50.
2- PHƯƠNG THỨC POST:
Phương thức này được sử dụng để lấy dữ liệu từ form nhập liệu. Và chuyển chúng lên trình chủ webserver.
Ví dụ:
Xây dựng 1 trang HTML với nội dung gồm form nhập liệu họ và tên. Sau đó dùng 1 file php để xuất ra thông tin họ và tên mà người sử dụng vừa nhập liệu.
Đáp Án:
Tạo file userform.htm với nội dung sau:
Tạo file processform.php để xuất ra dữ liệu
Tổng Kết:
Kết thúc bài này các bạn đã nắm được kỹ thuật kiểm tra thông tin dựa trên PHP. Một trong những vấn đề không thể thiếu đối với bất kỳ một website động nào. Chúng cho ta kiểm tra tính hợp lệ của người sử dụng 1 cách dễ dàng bởi sự tùy biến trong các biểu thức của PHP.
BÀI TẬP ÁP DỤNG :
Tạo 1 trang web với hộp thoại nhập liệu username và password. Nếu người sử dụng nhập thông tin username/password là admin/12345 thì xuất ra thông báo “welcome, admin” với kiểu chữ Tahoma, màu đỏ. Ngược lại nếu nhập sai thì xuất thông báo “Username hoặc password sai. Vui lòng nhập lại”.
Đáp án:
Tạo trang login.html với nội dung sau:

Tiếp tục tạo trang checklogin.php với nội dung 

Chủ Nhật, 29 tháng 12, 2013

Học lập trình php: Học PHP | Mẹo cải thiện tốc độ cho PHP

Học lập trình php: Học PHP | Mẹo cải thiện tốc độ cho PHP: Để học php thì co thể là rất dễ, nhưng để phát triển website thì nó lại trái ngược lại hoàn toàn. Một trong những cách làm cho website của...

Học lập trình php: Học PHP | Mẹo cải thiện tốc độ cho PHP

Học lập trình php: Học PHP | Mẹo cải thiện tốc độ cho PHP: Để học php thì co thể là rất dễ, nhưng để phát triển website thì nó lại trái ngược lại hoàn toàn. Một trong những cách làm cho website của...

Thứ Năm, 26 tháng 12, 2013

Thứ Ba, 20 tháng 8, 2013

#1: Viết ứng dụng đăng nhập bằng PHP và MYSQL

Viết ứng dụng đăng nhập bằng PHP và MYSQL

Để 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 và 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.
1mysql -hlocalhost -uroot -proot
2mysql>create database project;
3mysql>use project;
4mysql>create table user( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, level CHAR(1) NOT NULL, PRIMARY KEY(id));
5mysql>insert into user(username,password,level) values ("admin","12345","2") ("abc","12345","1");
Vậy là chúng ta đã có cơ sở dữ liệu như mô hình trên. Tiếp đến chúng ta tạo file login.php và thiết kế Form HTML để có màn hình đăng nhập khi người dùng truy cập.
 













1<form action='login.php' method='post'>
2Username: <input type='text' name='username' size='25' /><br />
3Password: <input type='password' name='password' size='25' /><br />
4<input type='submit' name='ok' value='Dang Nhap' />
5</form>
Tiếp đến chúng ta tiến hành kiểm tra dữ liệu từ form
01<?php
02if(isset($_POST['ok']))
03{
04$u=$p="";
05 if($_POST['username'] == NULL)
06 {
07  echo "Please enter your username<br />";
08 }
09 else
10 {
11  $u=$_POST['username'];
12 }
13 if($_POST['password'] == NULL)
14 {
15  echo "Please enter your password<br />";
16 }
17 else
18 {
19 $p=$_POST['password'];
20 }
21}
22?>
Đ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. Vì phiên bản PHP 5.3 trở lên sẽ yêu cầu ta khai báo biến trước khi sử dụng. Vì thế mặc định ban đầu ta khởi tạo 2 biến $u và $p mang giá trị là rỗng.

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).
1<?php
2$conn=mysql_connect("localhost","root","root") or die("can't connect this database");
3mysql_select_db("project",$conn);
4?>
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).
01<?php
02if($u && $p)
03{
04 $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
05 mysql_select_db("project",$conn);
06 $sql="select * from user where username='".$u."' and password='".$p."'";
07 $query=mysql_query($sql);
08 if(mysql_num_rows($query) == 0)
09 {
10  echo "Username or password is not correct, please try again";
11 }
12 else
13 {
14  $row=mysql_fetch_array($query);
15  session_start();
16  $_SESSION['userid'] = $row['id'];
17  $_SESSION['level'] = $row['level'];
18 }
19}
20?>
Như vậy code hoàn chỉnh cho ứng dụng (file login.php) này là như sau:
01<?php
02if(isset($_POST['ok']))
03{
04$u=$p="";
05 if($_POST['username'] == NULL)
06 {
07  echo "Please enter your username<br />";
08 }
09 else
10 {
11  $u=$_POST['username'];
12 }
13 if($_POST['password'] == NULL)
14 {
15  echo "Please enter your password<br />";
16 }
17 else
18 {
19  $p=$_POST['password'];
20 }
21 if($u && $p)
22 {
23  $conn=mysql_connect("localhost","root","root") or die("can't connect this database");
24  mysql_select_db("project",$conn);
25  $sql="select * from user where username='".$u."' and password='".$p."'";
26  $query=mysql_query($sql);
27  if(mysql_num_rows($query) == 0)
28  {
29   echo "Username or password is not correct, please try again";
30  }
31  else
32  {
33   $row=mysql_fetch_array($query);
34   session_start();
35   $_SESSION['userid'] = $row[id];
36   $_SESSION['level'] = $row[level];
37  
38  }
39 }
40}
41?>
42<form action='login.php' method='post'>
43Username: <input type='text' name='username' size='25' /><br />
44Password: <input type='password' name='password' size='25' /><br />
45<input type='submit' name='ok' value='Dang Nhap' />
46</form>