Hướng dẫn dùng input name trong PHP

Các biến siêu toàn cục $_GET$_POST trong PHP được sử dụng để thu thập dữ liệu biểu mẫu [form].

Ví dụ dưới đây hiển thị một biểu mẫu HTML đơn giản với hai trường đầu vào [Name và E-mail] và nút gửi [Submit]:





    
        Name:
        
        
E-mail:

Đây là kết quả:

Khi người dùng điền vào biểu mẫu ở trên và nhấp vào nút gửi, dữ liệu biểu mẫu được gửi đến file PHP có tên là "welcome.php" để xử lý. Dữ liệu biểu mẫu được gửi bằng phương thức HTTP POST.

Để hiển thị dữ liệu đã gửi, bạn chỉ cần duyệt qua tất cả các trường đầu vào [thuộc tính name của thẻ input] bằng cách sử dụng biến siêu toàn cục $_POST. File "welcome.php" trông sẽ như thế này:





    Welcome 
    
Your email address is:

Đầu ra có thể là một cái gì đó như thế này:

Welcome Trung Nguyen
Your email address is trung.nguyen@example.com

Kết quả tương tự cũng có thể đạt được bằng phương pháp HTTP GET:





    
        Name:
        
        
E-mail:

File "welcome_get.php" trông sẽ như thế này:





    Welcome 
    
Your email address is:

Mã ở trên khá đơn giản. Tuy nhiên, một điều quan trọng còn thiếu là xác thực dữ liệu đầu vào do người dùng nhập. Bạn cần xác thực dữ liệu biểu mẫu để bảo vệ tập lệnh của bạn khỏi mã độc.

Hãy đảm bảo tính BẢO MẬT khi xử lý các biểu mẫu PHP!

Trang này không chứa bất kỳ xác thực biểu mẫu nào, nó chỉ hiển thị cách bạn có thể gửi và truy xuất dữ liệu biểu mẫu.

Tuy nhiên, các trang tiếp theo sẽ chỉ ra cách xử lý các biểu mẫu PHP với tính bảo mật! Xác thực hợp lệ dữ liệu biểu mẫu là rất quan trọng để bảo vệ biểu mẫu của bạn khỏi tin tặc và kẻ gửi thư rác!

GET với POST

Cả GET và POST đều tạo một mảng [ví dụ: mảng [key1 => value1, key2 => value2, key3 => value3, ...]]. Mảng này chứa các cặp khóa / giá trị, trong đó các khóa là tên của các trường đầu vào của biểu mẫu [thuộc tính name của các thẻ input như ở ví dụ trên] và giá trị là dữ liệu đầu vào từ người dùng.

Cả GET và POST đều được coi là các $_GET$_POST. Đây là các biến siêu toàn cục, có nghĩa là chúng luôn có thể truy cập được, bất kể phạm vi - và bạn có thể truy cập chúng từ bất kỳ hàm, lớp hoặc file nào mà không phải làm gì đặc biệt.

$_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.

Khi nào nên sử dụng GET?

Thông tin được gửi từ một biểu mẫu với phương thức GET được hiển thị cho mọi người [tất cả tên và giá trị biến được hiển thị trong URL].

GET cũng có giới hạn về số lượng thông tin cần gửi. Giới hạn là khoảng 2000 ký tự. Tuy nhiên, vì các biến được hiển thị trong URL, nên nó có thể được sử dụng để đánh dấu trang. Điều này có thể hữu ích trong một số trường hợp.

GET có thể được sử dụng để gửi các dữ liệu không nhạy cảm.

Lưu ý: KHÔNG BAO GIỜ sử dụng GET để gửi mật khẩu hoặc các thông tin nhạy cảm khác!

Khi nào nên sử dụng POST?

Thông tin được gửi từ một biểu mẫu bằng phương thức POST là vô hình đối với người khác [tất cả tên / giá trị được nhúng trong phần thân của yêu cầu HTTP] và không có giới hạn về số lượng thông tin cần gửi.

Ngoài ra, POST hỗ trợ chức năng nâng cao như hỗ trợ đầu vào nhị phân nhiều phần [multi-part binary input] trong khi tải file lên máy chủ.

Với Form ở trên và kích vào nút submit, dữ liệu trong form sẽ được gửi tới trang PHP có tên là “welcome.php”:

Trang “welcome.php” có code như sau:




Chào mừng bạn !
Bạn có tuổi là .

Kết quả đầu ra khi người dùng nhập vào Tên là Toàn, Tuổi là 21:


Chào mừng bạn Toàn!
Bạn có tuổi là 21.

Bạn có thể xem trang 77  của slide bài giảng này để hiểu rõ hơn các hàm $_GET và $_POST.

Kiểm tra dữ liệu hợp lệ trong Form [Form Validation]

Dữ liệu người dùng nhập cần được kiểm tra xem có hợp lệ không trước khi gửi, ví dụ như địa chỉ email không được kiểm tra tính hợp lệ hay không mà được thêm ngay vào cơ sở dữ liệu có thể các chức năng sử dụng đến email sẽ không hoạt động.

Có hai cách kiểm tra dữ liệu hợp lệ:

  • Kiểm tra tại phía client [dùng các ngôn ngữ script tại phía client như javascript, vbscript]
  • Kiểm tra tại phía server [dùng các ngôn ngữ tạị phía Server như PHP, C#, Java …]: dữ liệu từ client sẽ được gửi lên  server và sau khi server kiểm tra xong sẽ gửi kết quả lại cho client]. Thông thường nên sử dụng kiểm tra tại phía client nếu có thể vì quá trình xử lý sẽ nhanh hơn và giảm tải cho server.

Bạn cũng nên xem xét việc kiểm tra tại phía server nếu dữ liệu cần kiểm tra nằm trong cơ sở dữ liệu tại phía server, ví dụ khi người sử dụng tạo một tài khoản mới, cần kiểm tra xem tài khoản đó đã tồn tại chưa, chắc chắn chỉ có thể kiểm tra tại phía server vì tên người sử dụng chọn cần được gửi lên server để kiểm tra xem tên đó đã có ai sử dụng chưa và sẽ gửi kết quả kiểm tra về cho client.

Một cách tốt để kiểm tra tính hợp lệ ở phía server là gửi tới chính form đó thay vì gửi tời một trang khác. Người sử dụng sẽ nhận các thông báo lỗi trên cùng trang của form này. Điều này làm cho dễ dàng quản lý lỗi.

Chi tiết cách kiểm tra tính hợp lệ dữ liệu nhập ở cả hai phía client và server sẽ được giới thiệu ở các bài sau.

Chủ Đề