Các chuỗi truy vấn URL được định dạng dưới dạng một loạt các cặp tham số/giá trị với "=" ở giữa chúng, "&" để nối chúng và dấu "?"
//example.com/some/path?param=value¶m=value¶m=value
Đọc tham số truy vấn
PHP có thể đọc các giá trị tham số truy vấn được gửi đến trang được liên kết. PHP tự động gán tất cả các tham số truy vấn này cho $_GET superglobal. Nó được gọi là "$_GET" vì các liên kết là các yêu cầu GET. [Biểu mẫu là yêu cầu POST. ]
$_GET là một mảng kết hợp và các giá trị của nó có thể được truy cập giống như bất kỳ mảng kết hợp nào
Luôn xác nhận rằng giá trị $_GET được đặt trước khi làm việc với nó. Trong một số cấu hình, PHP sẽ hiển thị thông báo cảnh báo khó chịu nếu bạn cố truy cập vào khóa mảng kết hợp chưa được đặt
Đây cũng là một thói quen mã hóa tốt để kiểm tra, trích xuất và dọn sạch các giá trị từ $_GET ở đầu trang, không trộn lẫn với HTML
Trong đoạn mã sau, hãy liên hệ. php chỉ hiển thị một liên kết nếu
9// contact.php
Contact Us
Homepage
Mã hóa các giá trị $_GET
URL có thể chứa hầu hết các ký tự phổ biến [chữ cái, số, dấu gạch dưới, dấu gạch ngang]. Họ không thể có không gian. Ngoài ra còn có một số ký tự dành riêng có ý nghĩa đặc biệt trong URL và không thể sử dụng được
Các ký tự URL dành riêng
! # $ % & ' [ ] * + , / : ; = ? @ [ ]
Nếu bất kỳ ký tự nào trong số này được sử dụng trong một URL, thì chúng có thể khiến URL đó hoạt động không chính xác. Do đó chúng phải được mã hóa [i. e. "đã chuyển đổi"] để chúng không can thiệp vào chức năng của URL. Điều này rất quan trọng khi chúng ta đang sử dụng PHP để xuất các giá trị động được sử dụng trong URL, chẳng hạn như trong chuỗi truy vấn
Có nhiều loại mã hóa khác nhau tùy thuộc vào ngữ cảnh. Mã hóa cho một URL có nghĩa là chuyển đổi các ký tự thành "%" theo sau là hai chữ số thập lục phân
thập lục phân. Các số bình thường nằm trong khoảng từ 0-9. Các số thập lục phân bao gồm 0-9 nhưng cũng thêm các chữ cái A-F là "chữ số". Mỗi chữ số có 16 khả năng thay vì 10
Ví dụ:
// index.php
Contact Us
0 sẽ được mã hóa thành // index.php
Contact Us
1 và // index.php
Contact Us
2 sẽ được mã hóa thành // index.php
Contact Us
3Hàm mã hóa PHP
PHP có hai chức năng để mã hóa các chuỗi để sử dụng trong một URL
mã url[]
- Mã hóa hầu hết các ký tự không phải chữ và số thành
4 + 2 chữ số thập lục phân// index.php Contact Us
- Không gian được mã hóa thành
5// index.php Contact Us
- Đối với các chuỗi được sử dụng trong chuỗi truy vấn URL [sau
2]// index.php Contact Us
rawurlencode[]
- Mã hóa hầu hết các ký tự không phải chữ và số thành
4 + 2 chữ số thập lục phân// index.php Contact Us
- Không gian được mã hóa thành
8// index.php Contact Us
- Đối với các chuỗi được sử dụng trong chuỗi đường dẫn URL [trước
2]// index.php Contact Us
Sự khác biệt giữa hai chức năng này chỉ là cách xử lý khoảng trắng. Trong nhiều trường hợp, điều đó không thành vấn đề và máy chủ sẽ xử lý chính xác một trong hai. Tuy nhiên, có một vài trường hợp nó quan trọng. Khuyến nghị tốt nhất là sử dụng rawurlencode[] cho đường dẫn URL, là phần sau
//example.com/some/path?param=value¶m=value¶m=value
0 và trước bất kỳ // index.php
Contact Us
2 nào và sử dụng urlencode[] cho chuỗi truy vấn URL, là phần sau // index.php
Contact Us
2 nơi PHP sẽ thường xuất tham số Ví dụ
8Điều cần thiết là tất cả các giá trị động phải được mã hóa trước khi được sử dụng trong URL cho các liên kết và biểu mẫu. Nếu không, có thể có nhiều trường hợp URL sẽ không hoạt động
Các hàm giải mã PHP
PHP cũng có hai chức năng để giải mã các chuỗi này để trả về các ký tự ban đầu của chúng
mã url[]. Giải mã các chuỗi được mã hóa bằng urlencode[]
rawurldecode[]. Giải mã các chuỗi được mã hóa bằng rawurlencode[]
Tuy nhiên, các chức năng này hiếm khi cần thiết vì PHP tự động giải mã các tham số truy vấn trước khi gán chúng cho $_GET