1. Tại sao lại phải xử lý biểu mẫu

Trong một trang web bất kỳ hay là những ứng dụng gì đó thì ta đều có những biểu mẫu để thu thập thông tin từ người dùng. VD: biểu mẫu đăng nhập, đăng ký,… Những biểu mẫu này rất quan trọng để ta có thể biết ai đang quan tâm hay đang chú ý đến trang web hay ứng dụng của chúng ta. Vậy việc xử lý được những biểu mẫu này và đưa nó lên máy chủ thì chúng ta cần phải nắm bắt và học được.

Việc tạo biểu mẫu cho người dùng nhận vào thực hiện bằng cách sử dụng HTML. Trong khi PHP sẽ có vai trò là vận chuyển giá trị đó từ trang web lên máy chủ và xử lý thêm các giá trị đó. Và PHP đã cung cấp cho chúng ta 2 Superglobals là $_GET và $_POST để thu nhận và xử lý các biểu mẫu để xử lý.

2. Xây dựng một form HTML cơ bản

Việc xây dựng một form HTML khá là đơn giản. Nếu các quên có thể xem bài học HTML của chúng tôi.

<html>
<body>
<form action="post.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>

Trong đoạn code trên ta sử dụng thẻ form để tạo một biểu mẫu để nhập tên và email và một nút gửi để ta gửi dữ liệu. Trong thẻ form ta có hai thuộc tính:

  • Action: chỉ định tên của tệp sẽ nhận dữ liệu và xử liệu dữ liệu mà ta nhập vào.
  • Method: phương thức gửi dữ liệu biểu mẫu là POST hoặc GET.

Ta sẽ tìm hiểu cách xử lý biểu mẫu bằng 2 phương thức POST và GET.

3. Phương thức POST trong PHP

Với biểu mẫu đã tạo ở ví dụ trên ta chỉ cần tạo một file post.php và liên kết nó với biểu mẫu qua thuộc tính action. File post.php trông như sau

<?php
$name = $_POST["name"];
$email = $_POST["email"];
echo "Hi, ". $name . "<br>";
echo "Your email address: ". $email ."<br>";
?>

Các bạn hãy tự điền vào biểu mẫu và xem kết quả được in ra nhé!

4. Phương thức GET

Ta chỉ cần thay thuộc tính ở method từ POST thành GET và cũng tương tự như POST ta có một file get.php và liên kết qua action.

<?php
$name = $_GET["name"];
$email = $_GET["email"];
echo "Hi, ". $name . "<br>";
echo "Your email address: ". $email ."<br>";
?>

Những đoạn mã trên là đoạn khá đơn giản và mở đầu cho ta để biết được việc xử lý biểu mẫu. Tuy nhiên, việc quan trọng nhất ở đây vẫn còn thiếu là việc mà ta xác thực dữ liệu mà ta nhận biểu mẫu có an toàn hay không để bảo vệ trang của ta không dính những mã độc. Ta sẽ được học riêng ở bài sau.

5. So sánh giữa POST và GET

Cả get và post đều tạo ra một mảng. Mảng này chứa các cặp từ khóa hay giá trị trong đó các từ khóa là tên của các điều khiểu biểu mẫu và giá trị là dữ liệu đầu vào mà người dùng nhập vào. Cả get và post đều là những superglobals và chúng luông có thể truy cập được và có thể truy cập từ bất kỳ hàm, lớp hoặc tệp nào mà không cần phải làm gì quá nhiều.

$_GET là một mảng các biến được truyền cho tập lệnh hiện tại thông qua các tham số URL.

$_POST là một mảng các biến được truyền cho tập lệnh hiện tại thông qua phương thức HTTP POST.

5.1. Khi nào sử dụng GET

Thông tin mà ta gửi bằng GET sẽ được hiển thị cho người dùng thông qua thanh URL(mọi tên biến và giá trị nó đều được in trên URL). Đây là điều khá là không an toàn với thông tin của chúng ta. Người dùng sẽ không quan tâm nhiều đến vấn đền này nhưng những những hacker thì có :3. Vì vậy mà GET không bao giờ được sử dụng để nhập mật khẩu hay những dữ liệu nhạy cảm khác. Giới hạn các ký tự trong get cũng khoảng là 2000 ký tự.

Tuy nhiên vì các biến được hiển thị trong URL nên ta có thể dùng get để đánh dấu trang sẽ hữu ích trong một số trường hợp cụ thể ta sẽ thấy có ích. Và get cũng có thể dùng cho những thông tin không quan trọng.

5.2. Khi nào sử dụng POST

Ngược lại với get thì post lại ẩn toàn bộ dữ liệu và không giới hạn thông tin mà ta gửi. Hơn thế post còn hỗ trợ chức năng nâng cao như hỗ trợ đầu vào nhị phân nhiều phần trong khi tải tệp lên máy chủ. Vì vậy post có thể sử dụng trong mọi trường hợp đặc biệt là những dữ liệu quan trọng và cần bảo mật như mật khẩu, …