Những lỗi phổ biến $_post trong PHP khi code web bạn nên biết

Bộ mã nguồn web viết bằng ngôn ngữ PHP được đưa lên host đó chính là Server. Khi bạn truy cập và sử dụng website thì bạn chính là một Client. Khi bạn đăng nhập, đăng ký tài khoản, đăng comment ….thì dữ liệu sẽ được gửi từ client lên Server.  Server sẽ nhận được những thông tin đó thông qua hai phương thức, đó là POST và GET.

Trong bài viết này chúng tôi sẽ chỉ đề cập đến POST, hàm $_post và lỗi thường gặp trong quá trình code web với hàm $_post trong ngôn ngữ PHP.

$_post trong PHP là gì?

$_post hay còn gọi là Hàm $_POST được dùng để lấy giá trị được gửi từ một form theo phương thức method=”post”. Thông tin được gửi đi từ form không được nhìn thấy và không bị giới hạn số lượng thông tin gửi.

Ví dụ, ta có một đoạn thông tin được viết như sau:

<form action=”welcome.php” method=”post”>

Name: <input type=”text” name=”fname” />

Age: <input type=”text” name=”age” />

<input type=”submit” />

</form>

Khi chúng ta submit form, thì sẽ có một url gửi đi gồm: tên web/ welcome.php

Sau đó ở file welcome.php ta sử dụng hàm $_POST để lấy giá trị của biến được gửi đi từ form.

Về mặt lý thuyết, phương thức POST khác với phương thức GET, POST không gửi dữ liệu qua parameter trên URL, vì vậy chúng ta không thể nhìn thấy dữ liệu đang được gửi là gì.

Khi Server nhận dữ liệu, Để thông báo cho server thì người dùng chỉ cần sử dụng $_POST như một biến toàn cục lưu trữ thông tin dưới dạng mảng không tuần tự.

Để lấy giá trị POST chúng ta sử dụng cú pháp: $_POST[‘name’]. Trong đó: name là tên của post data mà chúng ta muốn nhận.

$_post hay còn gọi là Hàm $_POST
$_post hay còn gọi là Hàm $_POST

Mời bạn tham khảo thêm bài viết về $this trong PHP để hiểu rõ hơn độ quan trọng của biến $this trong ngôn ngữ lập trình PHP nhé.

Các lỗi phổ biến $_post trong PHP

Trong quá trình code web, đặc biệt là với những người mới học code, chưa hiểu rõ ràng thấu đáo về những tùy biến của phương thức POST trong PHP sẽ dễ dàng mắc phải những sai lầm cơ bản.

PHP không tự động load gói post

PHP chỉ tự động load phân tích cú pháp POST khi nó có một application/x-www-form-urlencoded hoặc multipart / form-data. Lý do giải thích cho điều này là vì nội dung về hai loại mà chúng ta nhắc đến trên đây là những cái duy nhất, thậm chí cũng đã được sử dụng cách đây rất nhiều năm trước khi $ POST của PHP được sử dụng. Vì vậy, với bất kỳ loại nội dung khác PHP sẽ không tự động load gói POST.

Dữ liệu ghi đè sẽ tham chiếu xuyên suốt

$ _POST là biến toàn cục, nếu chúng ta ghi đè lên thì giá trị đã sửa đổi (bao gồm cả gói POST) sẽ tham chiếu trong xuyên suốt code. $ _POST thường được sử dụng bởi các frameworks PHP và tùy chỉnh đa phần các tập lệnh để trích xuất và chuyển đổi dữ liệu theo yêu cầu, vì vậy chúng rất quan trọng. Người lập trình bắt buộc phải ghi nhớ điều này để tránh xảy ra sai lầm, gây khó khăn cho chúng ta khi code web.

$ _POST thường được sử dụng bởi các frameworks PHP
$ _POST thường được sử dụng bởi các frameworks PHP

Bạn có thể tìm hiểu thêm bài viết nói về tầm quan trọng của $_get trong PHP

Ví dụ: Lấy một ví dụ đơn giản là khi xử lý gói POST với nội dung application/json, chúng ta cần tiến hành phân tích nội dung của request hay nói cách khác là giải mã dữ liệu JSON và ghi đè biến $ _POST theo cách thủ công như sau:

Không thêm biến mới vào hàm $ _POST

Trong quá trình code với hàm $ _POST chúng ta phải thêm một vài biến mới như: $nameErr, $email Err và website Err để các biến lỗi gửi thông báo lỗi khi cần thiết. Do đó, với biến $_POST, người sử dụng phải thêm vào các dữ liệu khác vào sau đó kiểm tra nếu biến $_POST rỗng ( hàm PHP rỗng). Nếu biến này rỗng, thông báo lỗi đã được lưu trữ trong biến khác. Nếu biến này không rỗng, dữ liệu đầu vào sẽ được gửi đến cho người dùng thông qua hàm test_input ().

Với biến $post người sử dụng phải thêm vào các dữ liệu khác
Với biến $post người sử dụng phải thêm vào các dữ liệu khác

Trên đây là một số vấn đề cơ bản có thể gặp phải trong quá trình code web mà bất cứ bạn nào bắt đầu học code cũng phải trải qua. Nếu bạn nắm rõ được quy trình, nội hàm của từng phần sẽ trải qua một cách dễ dàng và giữ lại được cho mình nhiều bài học bổ ích. Chúc bạn thành công!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *