- Chuyên mục khác :
- PHP cơ bản và nâng cao
- ·
- Bài tập PHP
- ·
- Javascript cơ bản và nâng cao
- ·
- HTTP cơ bản và nâng cao
- Cơ bản về PHP
- Học PHP cơ bản và nâng cao,tự học lập trình PHP cơ bản hay nhất
- PHP là gì? 297 bài học lập trình PHP hay nhất
- Cài đặt PHP trên Windows, Linux và Mac OS X
- Cú pháp PHP
- Biến trong PHP
- Hằng số trong PHP
- Toán tử trong PHP
- Lệnh if, else, switch trong PHP
- Vòng lặp trong PHP
- Chuỗi (String) trong PHP
- Khái niệm Web tạo nội dung động trong PHP
- Phương thức GET & POST trong PHP
- Include và Require trong PHP
- File & I/O trong PHP
- Hàm trong PHP
- Cookie trong PHP
- Session trong PHP
- Gửi Email sử dụng PHP
- Upload File trong PHP
- Chuẩn viết code trong PHP
- Hoạt động PHP nâng cao
- Biến được định nghĩa trước trong PHP
- Regular Expression trong PHP
- Xử lý ngoại lệ và lỗi (Error & Exception Handling)
- Bug và Debug trong PHP
- Date & Time trong PHP
- PHP & MySQL
- PHP & AJAX
- PHP & XML
- Lập trình hướng đối tượng trong PHP
- PHP cho Lập trình viên C
- PHP cho Lập trình viên PERL
- Ví dụ về Form trong PHP
- Giới thiệu Form trong PHP
- Ví dụ về Validation trong PHP
- Ví dụ Complete Form trong PHP
- Ví dụ về đằng nhập trong PHP
- Ví dụ về đăng nhập trong PHP
- Đăng nhập Facebook bằng PHP
- Tích hợp PayPal trong PHP
- Đăng nhập MySQL sử dụng PHP
- Ví dụ về AJAX trong PHP
- AJAX Search trong PHP
- AJAX XML Parser trong PHP
- AutoComplete Search với AJAX và PHP
- Ví dụ về AJAX RSS Feed trong PHP
- Ví dụ về XML trong PHP
- Giới thiệu XML
- Simple XML trong PHP
- Simple XML GET trong PHP
- Ví dụ SAX Parser trong PHP
- Ví dụ DOM Parser trong PHP
- PHP Frame Work
- Một số PHP Frame Works
- Core PHP vs Frame Works PHP
- Design Pattern trong PHP
- Design Pattern trong PHP
- Tổng hợp hàm trong PHP
- Tổng hợp hàm trong PHP
Có 2 cách để Client có thể gửi thông tin cho Web Server:
- Phương thức GET
- Phương thức POST
Phương thức GET gửi thông tin qua URL của yêu cầu HTTP, trước khi trình duyệt gửi thông tin, nó mã hóa nó bởi sử dụng một giản đồ gọi là URL encoding. Trong giản đồ này, các cặp name/value được kết hợp với kí hiệu = và các cặp khác nhau được phân tách nhau bởi dấu &.
name1=value1&name2=value2&name3=value3
Các khoảng trống được xóa bỏ, thay thế bằng kí tự + và bất kì kí tự không phải dạng số và chữ được thay thế bằng giá trị hexa. Sau khi thông tin được mã hóa, nó sẽ được gửi lên Server.
Mặc định, phương thức GET không mã hóa dữ liệu theo nghĩa mã hóa bảo mật (như mã hóa bằng HTTPS). Thay vào đó, nó "mã hóa" dữ liệu bằng cách sử dụng URL encoding, để đảm bảo rằng dữ liệu được truyền trong URL tuân theo các quy tắc của URL.
URL encoding bao gồm:
- Thay thế các khoảng trắng bằng ký tự +.
- Thay thế các ký tự đặc biệt (không phải chữ và số) bằng giá trị hexa tương ứng, bắt đầu bằng % (ví dụ, ! trở thành %21).
Ví dụ:
Giả sử bạn có một chuỗi dữ liệu cần gửi với các cặp name/value như sau:
name=John Doe
age=30
city=New York
Khi sử dụng URL encoding, các ký tự đặc biệt và khoảng trắng sẽ được thay thế theo quy tắc của URL encoding. Cụ thể:
- Khoảng trắng ( ) được thay thế bằng ký tự +.
- Ký tự đặc biệt (@, &, =, ?, ...) được thay thế bằng giá trị hexa tương ứng, bắt đầu bằng %.
Sau khi URL encoding, chuỗi dữ liệu trên sẽ được mã hóa như sau:
name=John+Doe&age=30&city=New+York
Chi tiết từng bước mã hóa:
- name=John Doe -> name=John+Doe
- age=30 (không thay đổi vì không có ký tự đặc biệt)
- city=New York -> city=New+York
Ví dụ URL đầy đủ khi sử dụng phương thức GET:
http://example.com/page?name=John+Doe&age=30&city=New+York
Trong ví dụ này:
- Dữ liệu được gửi dưới dạng chuỗi truy vấn gắn vào URL sau dấu hỏi ?.
- Các khoảng trắng trong tên và thành phố đã được mã hóa thành +.
Ví dụ với ký tự đặc biệt: Giả sử bạn có chuỗi dữ liệu:
query=Hello World! How's it going?
Khi URL encoding, chuỗi này sẽ trở thành:
query=Hello+World%21+How%27s+it+going%3F
- ! trở thành %21
- ' trở thành %27
- ? trở thành %3F
Ví dụ URL đầy đủ:
http://example.com/search?query=Hello+World%21+How%27s+it+going%3F
Như vậy, URL encoding đảm bảo rằng tất cả các ký tự trong chuỗi dữ liệu tuân thủ định dạng URL an toàn và hợp lệ.
Tóm lại, mặc định phương thức GET sử dụng URL encoding để đảm bảo dữ liệu phù hợp với định dạng URL, nhưng không thực hiện mã hóa bảo mật. Để bảo mật dữ liệu khi truyền, bạn cần sử dụng HTTPS.
Phương thức GET trong PHP
Phương thức GET gửi thông tin người dùng đã được mã hóa được phụ thêm vào request trang. Trang và thông tin mã hóa được phân tách nhau bởi kí tự hỏi chấm (?).
http://www.test.com/index.htm?name1=value1&name2=value2
-
Phương thức GET tạo ra một chuỗi kí tự dài xuất hiện trong Server log của bạn, trong Location: box của trình duyệt.
-
Phương thức GET được giới hạn gửi tối đa chỉ 1024 ký tự.
-
Không bao giờ sử dụng phương thức GET nếu gửi password hoặc thông tin nhay cảm lên Server.
-
GET không thể gửi dữ liệu nhị phân, ví dụ như hình ảnh hoặc tài liệu word lên Server.
-
Dữ liệu gửi bởi phương thức GET có thể được truy cập bằng cách sử dụng biến môi trường QUERY_STRING.
-
PHP cung cấp mảng liên hợp $_GET để truy cập tất cả các thông tin đã được gửi bởi phương thức GET.
Bạn thử ví dụ sau bằng việc đặt source code sau đây vào test.php script:
<?php
if( $_GET["name"] || $_GET["age"] )
{
echo "Chào mừng ". $_GET['name']. "<br />";
echo "Bạn ". $_GET['age']. " tuổi.";
exit();
}
?>
<html>
<body>
<form action="<?php $_PHP_SELF ?>" method="GET">
Họ tên: <input type="text" name="name" />
Tuổi: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
PHP code trên sẽ cho kết quả:
Chào mừng s2sontech
Bạn 1 tuổi;
Phương thức POST trong PHP
- Phương thức POST truyền thông tin thông qua HTTP body.
- Mặc định, khi sử dụng phương thức POST và đặt tiêu đề Content-Type thành application/x-www-form-urlencoded, dữ liệu sẽ được mã hóa theo định dạng URL encoding trước khi gửi lên server.
- Việc sử dụng URL encoding không phải lúc nào cũng là mặc định của phương thức POST. Bạn cũng có thể gửi dữ liệu theo các định dạng khác như multipart/form-data hoặc application/json. Nhưng nếu không đặt định dạng nào cụ thể, và tiêu đề Content-Type được đặt thành application/x-www-form-urlencoded, thì URL encoding là định dạng mặc định được sử dụng.
-
Phương thức POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi.
-
Phương thức POST có thể sử dụng để gửi ASCII cũng như dữ liệu nhị phân.
-
Dữ liệu gửi bởi phương thức POST thông qua phần thân (body) của yêu cầu HTTP, vì vậy việc bảo mật phụ thuộc vào giao thức HTTP. Bằng việc sử dụng HTTPS, bạn có thể chắc chắn rằng thông tin của mình là an toàn.
-
Nếu không sử dụng HTTPS, dữ liệu gửi qua phương thức POST sẽ không được mã hóa. Dữ liệu sẽ được gửi dưới dạng văn bản thuần túy (plaintext) và có thể bị đánh chặn và đọc được bởi những bên thứ ba trong quá trình truyền tải.
Sử dụng HTTPS (Hypertext Transfer Protocol Secure) đảm bảo rằng dữ liệu được mã hóa khi truyền từ client đến server, giúp bảo vệ thông tin khỏi bị rò rỉ hoặc bị tấn công bởi các bên không đáng tin cậy.
-
PHP cung cấp mảng liên hợp $_POST để truy cập tất cả các thông tin được gửi bằng phương thức POST.
Bạn thử ví dụ sau bằng việc đặt source code vào test.php script:
<?php
if( $_POST["name"] || $_POST["age"] )
{
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] ))
{
die ("Biến name không hợp lệ - nên là các chữ cái");
}
echo "Chào mừng ". $_POST['name']. "<br />";
echo "Bạn ". $_POST['age']. " tuổi.";
exit();
}
?>
<html>
<body>
<form action="<?php $_PHP_SELF ?>" method="POST">
Họ tên: <input type="text" name="name" />
Tuổi: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
PHP code trên sẽ cho kết quả:
Chào mừng s2sontech
Bạn 1 tuổi;
Biến $_REQUEST trong PHP
Biến $_REQUEST trong PHP chứa nội dung của cả $_GET, $_POST, và $_COOKIE. Chúng ta sẽ bàn về biến $_COOKIE khi giải thích về Cookie trong PHP.
Biến $_REQUEST trong PHP có thể được sử dụng để lấy kết quả từ form data được gửi bởi cả 2 phương thức GET và POST.
Bạn thử ví dụ sau bằng việc đặt source code vào test.php script:
<?php if( $_REQUEST["name"] || $_REQUEST["age"] ) { echo "Chào mừng ". $_REQUEST['name']. "<br />"; echo "Bạn ". $_REQUEST['age']. " tuổi."; exit(); } ?> <html> <body> <form action="<?php $_PHP_SELF ?>" method="POST"> Họ tên: <input type="text" name="name" /> Tuổi: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>
Ở đây, biến $_PHP_SELF chứa tên của chính script đó, script mà nó đang được gọi.
PHP code trên sẽ cho kết quả:
Chào mừng s2sontech
Bạn 1 tuổi;
Các bài học PHP phổ biến khác tại s2sontech:
Bình luận (0)