Hướng dẫn dùng getparameter trong PHP



Một điều quan trọng trong ứng dụng web động nói chung và servlet nói riêng đó là việc thu thập dữ liệu và đáp ứng lại dữ liệu cần thiết cho người dùng. Nói cách khác, đó là việc truyền dữ liệu từ máy khách lên máy chủ và ngược lại.

Trình duyệt sử dụng hai phương thức để truyền thông tin từ máy khách tới máy chủ web. Các phương thức này là phương thức GET và và phương thức POST.


Phương thức GET

Phương thức GET gửi thông tin người dùng được mã hoá được nối vào yêu cầu trang. Trang và thông tin được mã hoá được tách biệt bằng ? (dấu chấm hỏi) như sau:

http://www.test.com/hello?key1=value1&key2=value2

Phương thức GET là phương thức mặc định để chuyển thông tin từ trình duyệt đến máy chủ web và tạo ra một chuỗi dài xuất hiện trong hộp địa chỉ của trình duyệt của bạn. Không bao giờ sử dụng phương thức GET nếu bạn có mật khẩu hoặc thông tin nhạy cảm khác để chuyển đến máy chủ. Phương thức GET có giới hạn kích thước: chỉ có 1024 ký tự có thể được sử dụng trong một request.

Thông tin này được truyền bằng cách sử dụng tiêu đề QUERY_STRING và sẽ có thể truy cập qua biến môi trường QUERY_STRING và Servlet sẽ xử lý loại yêu cầu này bằng cách sử dụng phương thức doGet().



Phương thức POST

Một phương thức truyền thông tin phổ biến hơn, đáng tin cậy hơn là phương thức POST. Phương thức này gói thông tin theo cách chính xác giống như phương thức GET, nhưng thay vì gửi nó như một chuỗi văn bản sau một ? (dấu chấm hỏi) trong URL thì phương thức này gửi nó như một thông điệp riêng biệt. Thông báo này đi kèm với chương trình backend dưới dạng đầu vào tiêu chuẩn mà bạn có thể phân tích và sử dụng cho quá trình xử lý của bạn. Servlet xử lý kiểu yêu cầu này sử dụng phương thức doPost ().


Đọc dữ liệu từ Form trong Servlet

Servlet xử lý dữ liệu từ một Form bằng cách sử dụng các phương thức sau đây tùy thuộc vào tình huống:

  • getParameter() - Gọi phương thức request.getParameter() để lấy giá trị của một tham số của form.
  • getParameterValues() - Gọi phương thức này nếu tham số xuất hiện nhiều lần và trả về nhiều giá trị, ví dụ checkbox.
  • getParameterNames() - Gọi phương thức này nếu bạn muốn có một danh sách đầy đủ của tất cả các tham số trong yêu cầu hiện tại.

Dưới đây là các ví dụ về phương thức GET, POST, và sử dụng các phương thức trên để lấy dữ liệu từ HTML Form.

  1. Ví dụ phương thức GET sử dụng URL
  2. Ví dụ phương thức GET sử dụng Form
  3. Ví dụ phương thức POST sử dụng Form
  4. Ví dụ truyền CheckBox trong Servlet
  5. Ví dụ đọc tất cả Parameters của Form trong Servlet


Trong lập trình web có 2 phương thức rất quan trọng chúng ta thường dùng đó là POST & GET. Nó giống như cốt lỗi khi làm lập trình web. Bởi vì POST và GET cung cấp cho chúng ta cách lấy thông tin đầu vào từ phía client, sau đó gửi lên máy chủ Web Server để xử lý. Không có thông tin chúng ta không thể xử lý gì cả.

Nôm na thì nó như vầy:

Hướng dẫn dùng getparameter trong PHP
POST & GET

Phương thức GET dữ liệu sẽ được hiển thị trên thanh địa chỉ: VD: http://tuanitpro.com/?s=ajax. GET áp dụng khi dữ liệu chỉ đọc, không nên dùng khi ghi xuống CSDL. Bởi vì khi dùng GET thì thông tin quá lộ liễu. Dễ thấy nhất là khi tìm kiếm, lấy mẩu tin theo ID. http://tuanitpro.com/?id=1&categoryid=2&x=3&y=4. Khi dùng GET thì tất cả các field trong form đều hiển thị hết lên thanh địa chỉ.

Hướng dẫn dùng getparameter trong PHP
GET Method

VD chúng ta có form đăng nhập như sau:

<form action="login.php" method="GET"> // Nếu chúng ta không quy định method, mặc định là GET
First name:<br>
<input type="text" name="username" value="tuanitpro">
<br>
Last name:<br>
<input type="password" name="password" value="123">
<br><br>
<input type="submit" value="Submit">
</form>

Khi chúng ta nhấn submit, nó sẽ gửi sang trang login.php như sau:
http://tuanitpro.com/login.php?username=tuanitpro&password=123. Như vậy quá nguy hiểm khi có ai đứng gần bạn.
Cách lấy dữ liệu.

PHP: $_GET["username"]
ASP.NET: Request.QueryString["tuanitpro"]
JAVA: request.getParameter("username");

Và có một điều quan trọng, các hacker rất thích dựa vào GET để khai thác tấn công SQL Injection. Nếu dùng GET các bạn nên mã hóa query string để an toàn hơn.

POST

Khác với GET, phương thức POST cũng gửi dữ liệu lên web server, nhưng nó chạy ngầm bên dưới, hoàn toàn không hiển thị. Các bạn thường thấy khi đăng ký thành viên, đăng nhập, thêm một bài mới. Tức là nó có can thiệp với cơ sở dữ liệu. Tất nhiên chúng ta hoàn toàn có thể dùng GET. Tuy nhiên vì lý do bảo mật (tất nhiên không hoàn toàn tuyệt đối), chúng ta nên dùng POST.

Hướng dẫn dùng getparameter trong PHP
POST Method

Khi dùng POST

<form action="login.php" method="POST">
First name:<br>
<input type="text" name="username" value="tuanitpro"/>
<br>
Last name:<br>
<input type="password" name="password" value="123"/>
<br><br>
<input type="submit" value="Submit">
</form>

Dữ liệu cũng gửi lên Server để trang login.php xử lý, nhưng nó chạy ngầm, và không hiển thị gì cả. An toàn hơn GET rất nhiều. Bạn nào không tin thì login facebook.com thử.

Cách lấy dữ liệu.

PHP: $_POST["username"]
ASP.NET: var username = username.Text
JAVA: request.getParameter("username");

Chúc các bạn thành công.

Hướng dẫn dùng getparameter trong PHP