Chuỗi truy vấn PHP

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

kiểm tra. 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 sau đó người dùng nhấp vào liên kết này,moreinfo. 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

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

Nếu bạn muốn chuyển mật khẩu, đừng chuyển mật khẩu bằng GET (chuỗi truy vấn). Bạn cần chuyển nó qua POST và SSL là bắt buộc. SSL tạo kết nối được mã hóa giữa trình duyệt web và máy chủ web. Không có SSL, chuyển mật khẩu qua POST cũng giống như qua GET, vì dữ liệu POST cũng không được mã hóa. Nhưng với SSL, dữ liệu GET vẫn không được mã hóa (nhưng dữ liệu POST được mã hóa), đó là lý do tại sao bạn cần POST cho mật khẩu

Thêm giải pháp của bạn ở đây

 B   I   U   S  small BIG code var  <   >   &  link [^] encode untab case indent outdent

Xem trước 0

thành viên hiện có

hoặc tham gia với chúng tôi

Tải xuống, Bình chọn, Nhận xét, Xuất bản

Email của bạn

Email này đang được sử dụng. Bạn có cần mật khẩu của bạn?

Mật khẩu tùy chọn

Khi trả lời câu hỏi, vui lòng.

  1. Đọc kỹ câu hỏi.
  2. Hiểu rằng tiếng Anh không phải là ngôn ngữ đầu tiên của mọi người, vì vậy hãy khoan dung với lỗi chính tả và ngữ pháp
  3. Nếu một câu hỏi được diễn đạt kém thì hãy yêu cầu làm rõ, bỏ qua nó hoặc chỉnh sửa câu hỏi và khắc phục sự cố. Xúc phạm không được chào đón
  4. Đừng bảo ai đó đọc hướng dẫn. Rất có thể họ có và không nhận được. Đưa ra câu trả lời hoặc chuyển sang câu hỏi tiếp theo
Let's work to help developers, not make them feel stupid.


Nội dung này, cùng với bất kỳ tệp và mã nguồn liên quan nào, được cấp phép theo Giấy phép Mở Dự án Code (CPOL)

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

Chuỗi truy vấn là thuật ngữ để thêm/chuyển dữ liệu trong URL . Nó không phải là ngôn ngữ cụ thể.

Làm cách nào để truy cập chuỗi truy vấn trong PHP?

Cách tiếp cận. Phân tích cú pháp chuỗi URL bằng cách sử dụng hàm parse_url() hàm này sẽ trả về một mảng kết hợp chứa các thành phần khác nhau (URL đã truyền). Truy vấn của mảng được trả về bởi hàm parse_url() chứa chuỗi truy vấn URL.

Làm cách nào để tạo chuỗi truy vấn trong PHP?

Kết quả. PHP có thể tạo chuỗi truy vấn từ mảng sử dụ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.

Làm cách nào để truyền dữ liệu trong chuỗi truy vấn trong PHP?

Bạn cũng có thể chuyển giá trị từ trang này sang trang khác bằng cách sử dụng SESSION. session_start(); . Trong trang Tiếp theo nơi bạn muốn tìm nạp. $var is the variable where you store the value that you want to pass to next page and variable name is name of session variable . In the Next page where you want to fetch.