[PHP for the Web] #3 HTML Forms và PHP

Bài sẽ trình bày các khái niệm cơ bản về việc tạo các Form HTML và giải thích cách dữ liệu được gửi với PHP. Sử dụng phương thức $_GET và $_POST.

Tạo một Form đơn giản

Dành cho mẫu form HTML trong bài này, bạn sẽ tạo một trang phản hồi lấy lời chào, tên, email, địa chỉ, phản hồi và nhận xét của người dùng (Như hình dưới đây).

Form Phản Hồi
Form Phản Hồi

Code tạo form cần viết giữa thẻ mở và đóng form này:

<form>
phần tử form
</form

Các thẻ tag form quyết định nơi form bắt đầu và kết thúc. Mỗi phần tử của biểu mẫu phải được nhập giữa hai thẻ này. Thẻ mở form cũng chứa thuộc tính action. Nó chỉ ra trang mà dữ liệu form sẽ được gửi. Giá trị này là một trong những cân nhắc quan trọng nhất khi bạn tạo form. Trong series này, các thuộc tính hành động sẽ luôn trỏ đến các file PHP:

<form action="somepage.php">

Code Form Phản Hồi

Chọn Phương thức Form

Bạn có hai lựa chọn phương thức là: GET và POST. Đối với các forms, sự khác biệt giữa việc sử dụng GET và POST là bình thường trong cách thông tin được truyền từ biểu mẫu tới mã lệnh xử lý. Phương thức GET gửi tất cả thông tin được thu thập như một phần của URL. Phương thức POST truyền thông tin vô hình đến người dùng. Ví dụ: khi gửi form, nếu bạn sử dụng phương thức GET, URL kết quả sẽ giống như

http://www.example.com/page.php?some_var=some_value&age=20%...

Theo tên của tập lệnh, sau page.php là dấu chấm hỏi, sau đó là một cặp name=value cho mỗi phần dữ liệu được gửi.

Khi sử dụng phương thức POST, người dùng cuối sẽ chỉ thấy

http://www.example.com/page.php

Khi quyết định sử dụng phương thức nào, hãy nhớ bốn yếu tố sau:

  • Với phương thức GET, chỉ một lượng thông tin giới hạn có thể được chuyển.
  • Phương thức GET gửi dữ liệu đến mã xử lý công khai (ví dụ: khi một mật khẩu được nhập trong một form sẽ có thể xem được bởi bất kỳ ai, khi nhìn trình duyệt web, tạo ra rủi ro bảo mật lớn hơn)
  • Một trang được tạo bởi một form sử dụng phương thức GET có thể được đánh dấu, nhưng một trang dựa trên POST không thể.
  • Người dùng sẽ được nhắc nếu họ cố gắng tải lại trang được truy cập qua POST nhưng sẽ không được nhắc cho các trang được truy cập qua GET.

Code Form Phản Hồi với Phương Thức

Nhận Dữ liệu Form trong PHP

Bây giờ bạn đã tạo một form HTML cơ bản có khả năng lấy thông tin từ người dùng, bạn cần phải viết mã PHP nhận và xử lý dữ liệu form đã gửi.

Để truy cập dữ liệu form được gửi, bạn cần tham chiếu đến một biển được xác định trước. Khi nói đến xử lý dữ liệu form, biến cụ thể mà tập lệnh PHP sẽ tham chiếu là $ _GET hoặc $ _POST. Nếu một form HTML sử dụng phương thức GET, dữ liệu biểu mẫu đã gửi sẽ được tìm thấy trong $ _GET. Khi một form HTML sử dụng phương thức POST, dữ liệu biểu mẫu đã gửi sẽ được tìm thấy trong $ _POST.

Bắt đầu với một phần thử input trong form có giá trị name là gì đó:

<input type="text" name="something">

Sau đó, giả định rằng form sử dụng phương thức POST, giá trị được nhập vào phần tử form đó sẽ có sẵn trong $ _POST [‘something’]:

print $_POST['something'];

Tuy nhiên, trong trường hợp bạn muốn nối chuỗi như sau, sẽ gây ra lỗi parse error:

print "Cảm ơn bạn đã: '$_POST['something']";

Parse error

Để giải quyết vấn đề này, có tương đối nhiều cách, ví dụ như:

$something = $_POST['something'];
print "Cảm ơn bạn đã: $something";

Code Xử lý Form Phản Hồi: handle_form.php

Điền dữ liệu vào form - Dữ liệu chuyển sang file handle_form.php
Điền dữ liệu vào form – Dữ liệu chuyển sang file handle_form.php
Phản hồi của bạn – Dữ liệu được chuyển từ form feedback.html
Phản hồi của bạn – Dữ liệu được chuyển từ form feedback.html

Gửi Dữ Liệu theo cách Thủ Công đến một Trang

Trong ví dụ cuối cùng này, chúng ta sẽ xử lý dữ liệu không thông qua From với PHP. Như đã thảo luận trong phần “Chọn Phương thức Fom”, nếu form sử dụng phương thức GET, URL kết quả giống như sau:

http://www.example.com/page.php?some_var=some_value&age=20&...

Trang nhận (ở đây là page.php) được gửi một loạt các cặp name=value, mỗi cặp được phân tách bằng dấu và (&). Toàn bộ chuỗi được bắt đầu bằng dấu chấm hỏi (ngay sau tên của tập lệnh xử lý).

Để lấy giá trị thông qua các này, bạn dùng $_GET. Ví dụ như: $_GET[‘some_var’].

Bạn có thể truyền dữ liệu thông qua Form PHP với phương thức GET. Hoặc bạn cũng có thể truyền data mà không cần Form như cách dưới đây:

<a href="page.php?id=22">Some Link</a>

Link này truyền giá trị 22 tới page.php, để lấy nó bạn dùng $_GET[‘id’]. Hãy làm ví dụ rõ ràng hơn nhé.

Tạo trang HTML: hello.html

Xin chào – Trang HTML

Tạo trang PHP: hello.php

Khi Click vào link đầu tiên, Vinh được truyền thông qua URL
Tương tự khi click vào link thứ hai, Huong được truyền sang
Tương tự khi click vào link thứ hai, Huong được truyền sang
Hoặc một giá trị bất kỳ được gắn cho name trên URL

Leave a Reply

avatar
  Subscribe  
Notify of
%d bloggers like this: