Cách giải mã url trong php?

PHP hỗ trợ các tùy chọn giải mã mã hóa URL với việc sử dụng các chức năng cốt lõi của nó. Các hàm PHP urlencode() và urldecode() là các hàm tích hợp thường giúp thực hiện mã hóa và giải mã URL tương ứng

Trong hướng dẫn này, chúng ta sẽ xem loại kiểu mã hóa URL và các hàm PHP để mã hóa/giải mã dựa trên tiêu chuẩn với các ví dụ

Mã hóa là một công việc quan trọng trong các tình huống khác nhau. Mã hóa URL giúp chuyển đổi URL bằng cách thêm các thực thể tiêu chuẩn vào đó. Ví dụ: nếu một URL chứa các ký tự không phải chữ và số thì mã hóa sẽ thay thế các ký tự đó bằng các thực thể mã hóa

Một số ký tự đặc biệt là ngoại lệ và sẽ không được thay thế. Điều này sẽ giúp ngăn chặn việc cắt xén dữ liệu và tránh lộn xộn khi truy cập dữ liệu URL

Bắt buộc phải thực hiện mã hóa trước khi gửi dữ liệu URL tới chuỗi truy vấn hoặc tới một chức năng có thể hoạt động động trên dữ liệu URL này

Và sau đó, dữ liệu được mã hóa sẽ được giải mã thành dạng ban đầu, sau khi nhận được nó trong đích hoặc hạ cánh khối mã PHP. Giải mã là quá trình đảo ngược dữ liệu được mã hóa trở lại dạng

Cách giải mã url trong php?

Các loại giải mã mã hóa URL trong PHP

Trong PHP, mã hóa và giải mã URL có thể được thực hiện theo hai cách khác nhau. Những loại được liệt kê dưới đây. Căn cứ vào loại nội dung cần mã hóa mà chọn cách mã hóa sẽ có ý nghĩa và hiệu quả

  1. ứng dụng/x-www-form-urlencoded loại
  2. RFC 3986 loại tiêu chuẩn

Trong các phần sau, chúng ta sẽ xem cách áp dụng giải mã mã hóa PHP dựa trên các loại tiêu chuẩn trên

ứng dụng/x-www-form-urlencoded loại

Để thực hiện loại mã hóa hoặc giải mã này, các hàm urlencode() và urldecode() tích hợp sẵn trong PHP được sử dụng. Chúng tôi có thể thích loại này hơn khi chúng tôi cần gửi dữ liệu được gửi từ biểu mẫu tới chuỗi truy vấn URL

Hàm này sẽ thay thế các ký tự đặc biệt trừ (_), (-) và (. ) xảy ra trong URL đã cho với %[mã hex];

Nếu chúng tôi gửi một URL mà không mã hóa, thì một số ký tự đặc biệt có thể cắt bớt dữ liệu thực tế được truyền qua URL của trang. Sau đó, nó sẽ gây ra lỗi hoặc kết quả không mong muốn

Ví dụ giải mã mã hóa PHP với urlencode() urldecode()

Đoạn mã ví dụ sau sẽ chỉ ra cách áp dụng giải mã mã hóa trên một URL bằng cách sử dụng các hàm PHP urlencode() urldecode(). Trong tập lệnh này, URL được gán cho một biến PHP. Sau đó, biến này sẽ được chuyển đến hàm urlencode()

Hàm này sẽ trả về URL được mã hóa. Để hoàn nguyên URL được mã hóa này về dạng ban đầu, urldecode() sẽ được sử dụng


RFC 3986 loại tiêu chuẩn

Hàm PHP rawurlencode() và rawurldecode() được sử dụng để mã hóa và giải mã URL với loại này. Bằng cách sử dụng phương pháp này, khoảng trắng trong URL có thể được thay thế bằng %[mã hex] thay vì ký hiệu dấu cộng (+). Loại mã hóa này sẽ thích hợp hơn khi chúng ta cần tạo URL động

Kể từ phiên bản PHP 5. 3. 0 trở lên, rawurlencode() sử dụng tiêu chuẩn RFC 3986. Trước phiên bản này, nó tuân theo tiêu chuẩn RFC 1738

Ví dụ về PHP với rawurlencode() và rawurldecode()

Mã này cho biết cách áp dụng rawurlencode(). Không có sự khác biệt trong việc sử dụng các chức năng giải mã mã hóa này

Nó sẽ rất giống với cách sử dụng các hàm urlencode() urldecode(). Đầu ra dự kiến ​​được nêu bằng cách sử dụng câu lệnh nhận xét PHP. Chạy chương trình này trong môi trường PHP của bạn và kiểm tra xem bạn có nhận được kết quả giống như trong đoạn mã dưới đây không

Thỉnh thoảng, bạn sẽ phải chuyển dữ liệu đến trang web hoặc dịch vụ bằng URL, chẳng hạn như trong yêu cầu GET. Điều này khá dễ dàng vì các URL về cơ bản chỉ là các chuỗi văn bản, nhưng đôi khi mọi thứ có thể trở nên phức tạp. Ví dụ: một số ký tự có ý nghĩa đặc biệt trong URL (như

2
8) và một số ký tự hoàn toàn không được phép (như khoảng trắng). Đôi khi bạn thậm chí cần mã hóa một URL trong một URL khác

Trong hướng dẫn này, bạn sẽ tìm hiểu lý do tại sao bạn cần mã hóa hoặc giải mã các chuỗi được truyền vào URL và cách sử dụng các hàm PHP tích hợp để làm như vậy

Tại sao mã hóa và giải mã chuỗi thành URL

Có lẽ bạn muốn chuyển một số thông tin dưới dạng tham số truy vấn tới một dịch vụ web hoặc một trang web khác. Ví dụ: bạn muốn gửi dữ liệu sau tới một trang web dưới dạng chuỗi truy vấn

keydataredirecthttps. //mã số. tutplus. tác giảmonty shokeenpage2

Thông tin đó sẽ được mã hóa trong chuỗi truy vấn sau

1
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2

Lưu ý rằng các ký tự đặc biệt như

2
8 và
3
0 trong URL "chuyển hướng" đã được mã hóa thành
3
1 và
3
2 để tránh can thiệp vào cấu trúc của toàn bộ URL. Điều này được gọi là thoát và đó là nơi các chức năng mã hóa xuất hiện

Ví dụ máy chủ. com sẽ nhận thông tin được mã hóa đó trong chuỗi truy vấn và có thể sẽ cần giải mã nó sau. Đó là nơi giải mã URL rất quan trọng

Mã hóa chuỗi với 33 và 34

Có hai chức năng khác nhau trong PHP để mã hóa chuỗi trong URL. Chúng được gọi là

3
3 và
3
4. Sự khác biệt chính giữa hai loại này là tập hợp các ký tự mà chúng mã hóa và cách chúng xử lý khoảng trắng

Trong trường hợp của

3
3, hàm sẽ thay thế tất cả các ký tự không phải chữ và số khác ngoại trừ ________ 58, ________ 59 và ________ 150 bằng dấu phần trăm theo sau là hai chữ số hex. Mọi khoảng trắng được thay thế bằng ký tự
2
51. Mặt khác, hàm
3
4 thay thế tất cả các ký tự không phải chữ và số khác ngoại trừ ________ 58, ________ 59, ________ 150 và
2
56 bằng dấu phần trăm theo sau là hai chữ số hex. Hàm này cũng thay thế khoảng trắng bằng phần trăm theo sau là hai chữ số hex.
2
57

Ví dụ sau đây sẽ làm rõ mọi thứ cho bạn một chút

1
1
4
2
3
2
5
1
8
1
9
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
0
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
0
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
1
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
2
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
3
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
4
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
5
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
6
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
7
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
8
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
9

Như bạn có thể thấy, các ký tự không phải chữ và số như

2
58,
3
0 và
1
80 được mã hóa theo cùng một cách bởi cả hai hàm. Tuy nhiên, hàm
3
3 đã đổi
1
82 thành
1
83, trong khi hàm
3
4 đổi thành
1
85

Nói chung, nên sử dụng

3
4 để mã hóa tất cả các chuỗi của bạn thành URL. Có một vài lý do cho điều đó. Đầu tiên, hàm
3
4 mã hóa các chuỗi dựa trên sơ đồ RFC 3986 hiện đại hơn. Thứ hai, nó cung cấp khả năng tương thích tốt hơn nếu các chuỗi bạn mã hóa phải được giải mã sau trong JavaScript

Giải mã chuỗi từ URL với 188 và 189

Các hàm

1
88 và
1
89 được sử dụng để khôi phục các thay đổi được thực hiện bởi các hàm
3
3 và
3
4 tương ứng

Về cơ bản, điều này có nghĩa là tất cả các chuỗi chứa dấu phần trăm theo sau là hai chuỗi hex sẽ được thay thế bằng các ký tự thích hợp của chúng. Hàm

1
88 sẽ thay đổi ký hiệu
2
51 thành ký tự khoảng trắng và hàm
1
89 sẽ giữ nguyên ký tự đó

Dưới đây là một ví dụ để minh họa sự khác biệt

1
1
4
2
_______5
1
4
1
8
1
9
1
7
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
0
1
9
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
2
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
4
1
42
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
6
1
44
https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
8
1
46
1
47
1
48
1
49
2
0
2
1
1
9
2
3
2
4
2
5
2
6
1
9

Trong ví dụ trên, chúng tôi đã sử dụng các hàm giải mã để giải mã các chuỗi mà chúng tôi đã mã hóa trong ví dụ trước. Biến

1
97 có ký tự khoảng trắng được thay đổi thành
2
51. Sử dụng hàm
1
88 trên chuỗi này sẽ thay đổi nó trở lại ký tự khoảng trắng. Tuy nhiên, hàm
1
89 để nguyên

Biến

https://www.example.com?redirect=https%3A%2F%2Fcode.tutsplus.com&author=monty%20shokeen&page=2
01 có ký tự khoảng trắng được chuyển đổi thành
2
57, được xử lý theo cùng một cách bởi cả
1
88 và
1
89

Điều quan trọng là phải cẩn thận về chức năng mà bạn sử dụng để giải mã một chuỗi được mã hóa vì kết quả cuối cùng có thể khác nhau tùy thuộc vào những gì bạn đã sử dụng để mã hóa ban đầu

Suy nghĩ cuối cùng

Trọng tâm của chúng tôi trong hướng dẫn này là hướng dẫn bạn cách mã hóa và giải mã các chuỗi trong URL trong PHP. Chúng tôi bắt đầu với nhu cầu mã hóa và giải mã chuỗi trong URL, sau đó cung cấp tổng quan ngắn gọn về bốn chức năng khác nhau để thực hiện điều đó

Như tôi đã đề cập trước đó, đặt cược an toàn nhất là sử dụng

3
4 và
1
89 ở mọi nơi. Điều này sẽ đảm bảo tính nhất quán trong mã của bạn cũng như khả năng tương thích với các ngôn ngữ khác sử dụng lược đồ mã hóa và giải mã chuỗi mới trong URL

Làm cách nào tôi có thể giải mã URL?

Cách giải mã URL .
Nhập dữ liệu URL vào vùng văn bản “URL để giải mã“
Nhấn nút “Giải mã“. Lấy URL kết quả từ vùng văn bản
Khi chuỗi đầu vào của bạn được giải mã, bạn có thể nhấp vào vùng văn bản đầu ra để sao chép URL đã giải mã

PHP có tự động giải mã URL không?

Có, tất cả thông số bạn truy cập qua $_GET và $_POST đều được giải mã .

Cách mã hóa URL trong PHP?

PHP. Hàm urlencode() . Hàm này trả về một chuỗi bao gồm tất cả các ký tự không phải chữ và số ngoại trừ -_. và thay thế bằng dấu phần trăm (%) theo sau là hai chữ số hex và khoảng trắng được mã hóa dưới dạng dấu cộng (+).

Làm cách nào để giải mã dữ liệu biểu mẫu trong PHP?

Chúng tôi cũng đã sử dụng hàm PHP khác như hàm openssl_encrypt() để chuyển đổi chuỗi thành dạng mã hóa và sau đó, chúng tôi sử dụng hàm base64_encode(). Bằng cách sử dụng cả hai chức năng này, chúng ta có thể mã hóa chuỗi. Đối với chuỗi giải mã, chúng tôi sử dụng hàm base64_decode() và hàm openssl_decrypt() để giải mã chuỗi đã mã hóa .