Chuỗi truy vấn PHP là gì?

Hầu hết mọi người đều biết cách truy xuất các tham số URL bằng cách sử dụng mảng $_GET. Tuy nhiên, nếu bạn muốn truy xuất các tham số này dưới dạng chuỗi thì sao?

Ví dụ: giả sử chúng ta có URL sau

Tốt nhất. com/tệp. php?id=299&mobile=Y&clid=392829

Như bạn có thể thấy, chuỗi truy vấn trong URL ở trên chứa ba tham số GET

Nếu chúng ta muốn truy xuất mọi thứ sau dấu chấm hỏi và gán nó cho một chuỗi, chúng ta chỉ cần truy cập phần tử QUERY_STRING trong mảng siêu toàn cục $_SERVER như vậy

//Get the full string
$queryString = $_SERVER['QUERY_STRING'];
var_dump($queryString);

Nếu chúng tôi chạy đoạn mã trên trên URL được đề cập, nó sẽ trả về chuỗi sau

id=299&mobile=Y&clid=392829

Lưu ý cách chuỗi này không chứa biểu tượng dấu chấm hỏi. Nếu ký hiệu này là cần thiết, thì bạn sẽ phải tự thêm lại.

Nếu không có chuỗi truy vấn thì sao?

Nếu không có chuỗi truy vấn thì khóa QUERY_STRING trong $_SERVER sẽ là một chuỗi rỗng

Không giống như các phần tử khác trong mảng $_SERVER, QUERY_STRING phải luôn tồn tại

Tại sao điều này hữu ích?

Điều này có thể hữu ích vì một số lý do

Hai điều đầu tiên xuất hiện trong tâm trí là

  1. Bạn có thể sử dụng chuỗi để xây dựng liên kết phân trang
  2. Nó có thể được sử dụng để lấy URL đầy đủ của một trang web

QUERY_STRING và XSS

Bạn không bao giờ được in biến QUERY_STRING ra trang mà không lọc nó trước

Nếu bạn làm điều này, bạn sẽ để ngỏ khả năng bị tấn công Cross Site Scripting (XSS)

$queryString = $_SERVER['QUERY_STRING'];
echo 'Link';

Đoạn mã trên dễ bị XSS vì kết quả QUERY_STRING đang được in ra mà không có bất kỳ loại lọc nào. Do đó, những người dùng ác ý có khả năng đưa mã JavaScript vào chuỗi truy vấn và thực thi mã đó trên trang của bạn

Vì chuỗi truy vấn là một chuỗi ký tự được lưu trữ trong một URL, nên bạn có thể tạo một URL chứa chuỗi truy vấn trong tập lệnh PHP của mình

Sau đó bao gồm URL dưới dạng liên kết trong trang được hiển thị

Đây là một ví dụ đơn giản tạo hai biến, $firstName và $age, sau đó tạo một liên kết trong trang được hiển thị có chứa một chuỗi truy vấn để lưu trữ các giá trị của biến

$firstName ="Tom" ;
$age ="3" ;
$queryString ="firstName=$firstName&age=$age" ;
echo'

Find out more info on this person

';

Mã này tạo ra đánh dấu sau

 Find out more info on this person   

Nếu người dùng sau đó nhấp vào liên kết này, thông tin thêm. php được chạy và dữ liệu chuỗi truy vấn (firstName=Tom & age=3) được chuyển đến moreinfo. tập lệnh php

Dữ liệu đã được truyền từ lần thực thi tập lệnh này sang lần thực thi tập lệnh tiếp theo

Lưu ý rằng ký tự dấu và (&) cần được mã hóa dưới dạng & bên trong mã đánh dấu XHTML

mã hóa URL

PHP cung cấp cho bạn một hàm gọi là urlencode() có thể mã hóa bất kỳ chuỗi nào bằng cách sử dụng mã hóa URL

Thử nghiệm

   Find out more info onthis person   ';
?>//w  ww  .j  av  a2s .  c o  m

Kết quả

Chuỗi truy vấn PHP là gì?

PHP có thể tạo chuỗi truy vấn từ mảng bằng hàm http_build_query()

Hàm này lấy một mảng kết hợp gồm các tên và giá trị trường và trả về toàn bộ chuỗi truy vấn

Các chuỗi truy vấn cũng được tạo bằng cách gửi biểu mẫu hoặc bởi người dùng nhập truy vấn vào thanh địa chỉ của trình duyệt

Ghi chú. Nếu bạn muốn gửi một lượng lớn dữ liệu (hơn 100 kb) thì Request. QueryString không thể được sử dụng

When using the http_build_query function to create a URL query from an array for use in something like curl_setopt($ch, CURLOPT_POSTFIELDS, $post_url), be careful about the url encoding.

In my case, I simply wanted to pass on the received $_POST data to a CURL's POST data, which requires it to be in the URL format.  If something like a space [ ] goes into the http_build_query, it comes out as a +. If you're then sending this off for POST again, you won't get the expected result.  This is good for GET but not POST.

Instead you can make your own simple function if you simply want to pass along the data:

________số 8

You can then use this to pass along POST data in CURL.

$queryString = $_SERVER['QUERY_STRING'];
echo 'Link';
0

$queryString = $_SERVER['QUERY_STRING'];
echo 'Link';
1

Ví dụ chuỗi truy vấn trong PHP là gì?

Chuỗi truy vấn là gì? . id khóa có giá trị 5 và tên khóa có giá trị php. $id = $_GET['id']; Đoạn mã trên nhận giá trị của id , trong trường hợp này là 5.

Chuỗi truy vấn có nghĩa là gì?

Chuỗi truy vấn là tập hợp các ký tự được nhập vào máy tính hoặc trình duyệt Web và được gửi tới chương trình truy vấn để khôi phục thông tin cụ thể từ cơ sở dữ liệu .

Việc sử dụng chuỗi truy vấn là gì?

Bộ sưu tập QueryString được sử dụng để truy xuất các giá trị biến trong chuỗi truy vấn HTTP . Dòng trên tạo một biến có tên là txt với giá trị "đây là kiểm tra chuỗi truy vấn". Các chuỗi truy vấn cũng được tạo bằng cách gửi biểu mẫu hoặc bởi người dùng nhập truy vấn vào thanh địa chỉ của trình duyệt.

Máy chủ $_ [' QUERY_STRING '] trong PHP là gì?

$_SERVER là một mảng chứa thông tin như tiêu đề, đường dẫn và vị trí tập lệnh .