Php đi tới url

Trong gói tin Yêu cầu HTTP, Dòng yêu cầu bạn phải cung cấp một URL, thông thường là thông qua thanh địa chỉ của trình duyệt

URL is viết tắt của Bộ định vị tài nguyên thống nhất. Hiểu một cách nôm na nhất, mỗi URL là địa chỉ của một tài nguyên trên Internet

Đôi khi bạn còn gặp thuật ngữ URI (Uniform Resource Identifier) ​​với ý nghĩa rất gần với URL. Nhiều người còn sử dụng lộn ngược URI với URL.
URI tương ứng với bất kỳ thứ gì có thể đặt tên trên Internet, bao gồm cả người, cả tài nguyên. Trong khi đó URL chỉ liên quan đến tài nguyên.
Như vậy, URL là URI nhưng URI chưa chắc đã là URL. Nói cách khác, URL là một phần của URI.

Cấu trúc tổng số lượng lớn nhất của một URL như sau

scheme://host:port/path?query-string#fragment-id
Php đi tới url
Php đi tới url

in which

Scheme thường gặp là http, https hoặc một số giao thức khác (như ftp)

Port only port that server get connection. Cổng mặc định mà máy chủ web sử dụng là 80. Các trình duyệt đều tự động thêm cổng 80. Nếu sử dụng cổng khác 80, bạn phải tự mình định nghĩa. Ví dụ một số trang web quản lý có thể sử dụng cổng 8080 thay cho 80

Đường dẫn phần có thể hiểu tương tự như đường dẫn đến một tệp (trên ổ cứng). Phần đường dẫn đơn giản nhất chỉ chứa các ký tự

$_GET = ['name' => 'Donald Trump', 'age' => 74];
2. Đường dẫn / có tên gọi là gốc (đường dẫn)

Chuỗi truy vấn chứa các cặp

$_GET = ['name' => 'Donald Trump', 'age' => 74];
3. Các cặp phân tách theo ký tự &. Chuỗi truy vấn được phân tách với đường dẫn theo ký tự ?. Đây là một trong các cơ chế truyền dữ liệu từ máy khách đến máy chủ

Fragment (or anchor) thường chỉ gặp trong các tài nguyên nội dung (như bài đăng trên blog) dùng để đánh dấu các tiêu đề

Trong các phần trên, chuỗi truy vấn và đoạn không bắt buộc

Chuỗi truy vấn riêng là thành phần rất quan trọng trong quá trình truyền dữ liệu từ trình duyệt về chương trình máy chủ web. Chúng ta sẽ nói kỹ hơn về vấn đề này ở phần tiếp theo của bài học

Như bạn đã học trong các bài trước, trong ứng dụng web PHP cơ bản, bạn có thể xem từng URL tương ứng với một tệp trên máy chủ. Nếu bạn sử dụng XAMPP, đó là một tệp trong thư mục htdocs

Tuy nhiên điều này không hoàn toàn đúng. Trong các ứng dụng web, rất nhiều URL thực tế giống nhau được xử lý bởi một tập lệnh. Để thực hiện điều này, bạn cần biết về cơ chế viết lại của máy chủ – chủ đề nằm ngoài nội dung của bài học này

Truyền dữ liệu về máy chủ qua HTTP

Trong các bài học trước chúng ta mới chỉ thực hiện việc xuất dữ liệu cho trình duyệt. Như bạn cũng thấy, kỹ thuật này không đủ để tạo ra các ứng dụng web thực tế

Một yêu cầu phổ biến khác là gửi dữ liệu từ trình duyệt cho chương trình trên máy chủ qua HTTP. Để hiểu cách truyền dữ liệu, bạn cần cấu hình cấu trúc gói tin HTTP

Gói tin HTTP thực chất là một chuỗi văn bản được định dạng. Có hai loại gói tin HTTP. yêu cầu – do trình duyệt gửi lên máy chủ, phản hồi – do máy chủ gửi lại trình duyệt. Hai loại gói tin này có cấu trúc khác nhau

Dưới đây là minh họa một gói tin yêu cầu

Php đi tới url
Php đi tới url

Gói tin này là một chuỗi ký tự dài và chia làm 3 phần. dòng yêu cầu, tiêu đề yêu cầu, nội dung thư

  • Dòng yêu cầu đầu tiên là một trong các động từ của HTTP. Phổ biến nhất là GET và POST
  • URL (người dùng truy cập qua thanh địa chỉ trình duyệt) được đặt trong dòng yêu cầu
  • Tiêu đề yêu cầu là các cặp biến. giá trị cung cấp thông tin về trình duyệt và một số yêu cầu khác cho máy chủ
  • Giữa headers và body có một dòng trống

Trình duyệt có ba cách để gửi dữ liệu về máy chủ thông qua truy vấn HTTP

(1) Tạo chuỗi truy vấn (query string) và ghép vào Url

Ví dụ. https. //tuhocict. com?s=razor+pages là một Url chứa chuỗi truy vấn

$_GET = ['name' => 'Donald Trump', 'age' => 74];
4. Truy vấn chuỗi và phân tách url theo ký tự
$_GET = ['name' => 'Donald Trump', 'age' => 74];
5 (dấu chấm hỏi). Chuỗi truy vấn được tạo ra từ các cặp
$_GET = ['name' => 'Donald Trump', 'age' => 74];
6. Các cặp này được phân tách theo ký tự
$_GET = ['name' => 'Donald Trump', 'age' => 74];
7

Phương pháp này thường được sử dụng với phương thức GET

(2) Sử dụng dữ liệu tuyến đường. ghép trực tiếp tham số vào Url để trở thành một phân đoạn của Url

Ví dụ, trong url https. //tuhocict. com/topic/razor/, các phân đoạn

$_GET = ['name' => 'Donald Trump', 'age' => 74];
8 và
$_GET = ['name' => 'Donald Trump', 'age' => 74];
9 thực tế là một tham số cung cấp cho trang chuyên hiển thị danh sách bài viết theo chủ đề

Phương pháp này được sử dụng nếu không có nhiều tham số phức tạp. Ngoài ra, phương pháp này còn tạo ra các Url “thân thiện” với máy tìm kiếm (như Google, Bing, Yandex)

Để thực hiện cách thức này, cần sử dụng đến chế độ ghi lại máy chủ để kết hợp định tuyến của khung. Bình thường PHP cơ bản không làm được theo cách này

(3) Gửi dữ liệu qua thân truy vấn HTTP (phần nội dung thư)

Dữ liệu được tạo ra giống như chuỗi truy vấn trong phương pháp 1) nhưng được ghép vào phần thân (body) của truy vấn HTTP

Phương pháp này thường được sử dụng với phương thức POST để truyền dữ liệu có kích thước lớn (như tệp). Cách thức truyền dữ liệu này sẽ được xem xét riêng trong bài học về xử lý biểu mẫu và truy vấn POST

Khi dữ liệu tới chương trình, bạn cần lấy dữ liệu ra để xử lý và phản hồi lại cho phù hợp. Thao tác gọi chung này là xử lý truy vấn

Truy vấn GET trong PHP

Nếu URL trong truy vấn GET chứa chuỗi truy vấn, cơ chế xử lý của PHP sẽ tự động phân tích chuỗi truy vấn và đưa kết quả vào mảng $_GET. Các kết quả được lưu trong mảng $_GET có từ khóa và giá trị tương ứng với mỗi cặp từ khóa/giá trị của chuỗi truy vấn

Ví dụ, với truy vấn

Hello, $name. Welcome to heaven!";
} else {
    echo "

Hell world from PHP

"; }
0, PHP sẽ tự động tạo ra mảng $_GET như sau

$_GET = ['name' => 'Donald Trump', 'age' => 74];

Mảng $_GET là một trong các biến superglobal – biến luôn luôn được tạo tự động khi chạy bất kỳ tập lệnh nào. Nếu URL không có chuỗi truy vấn thì $_GET trống

Hãy cùng thực hiện một ví dụ nhỏ

(1) Tạo thư mục getquery trong htdocs

Nếu sử dụng PhpStorm, bạn sẽ tạo dự án mới từ thư mục này và thực hiện các cấu hình PhpStorm cần thiết như đã học

(2) Tạo chỉ mục tệp. php and write code as after for index. php

Hello, $name. Welcome to heaven!";
} else {
    echo "

Hell world from PHP

"; }

(3) Chạy thử với các URL khác nhau

$_GET = ['name' => 'Donald Trump', 'age' => 74];
2

Chỉ trong trường hợp chuỗi truy vấn chứa ?name=…, tập lệnh mới được phản hồi với lời chào mừng

Php đi tới url
Php đi tới url

Lệnh kiểm tra if (isset($_GET[‘name’])) { … } rất quan trọng để xác định xem một tham số mình mong đợi có nằm trong chuỗi truy vấn không được xác định theo hành động tiếp theo. Như trong ví dụ trên, chỉ khi nào có tham số 'tên' thì mới phát lời chào mừng

Một cách khác để kiểm tra tham số là sử dụng hàm is_null như sau

$_GET = ['name' => 'Donald Trump', 'age' => 74];
3

Một số vấn đề liên quan đến xử lý truy vấn trong PHP

(1) Xác định loại truy vấn

Như đã nói, có hai loại biến truy vấn phổ biến nhất là GET và POST. Ngoài ra trong HTTP còn có các loại truy vấn khác như DELETE, PUT, PATCH

Để kiểm tra xem một loại truy vấn thuộc loại nào, bạn có thể sử dụng $_SERVER[‘REQUEST_METHOD’] như sau

$_GET = ['name' => 'Donald Trump', 'age' => 74];
4

Các giá trị khác bao gồm 'HEAD', 'POST', 'PUT'

$_SERVER cũng là một biến superglobal

Kỹ thuật này quan trọng trong trường hợp bạn xác định rõ tập lệnh chỉ phản ứng với một loại truy vấn nhất định. Một trong những trường hợp phổ biến là xây dựng các trang “tự phục vụ”. Chúng ta sẽ quay lại vấn đề này trong bài học về truy vấn POST

(2) Chuyển đổi kiểu

Trong chuỗi truy vấn mọi thứ đều được xem là chuỗi ký tự (chuỗi). PHP hỗ trợ kiểu biến tự động biến khi cần thiết (trong phép toán), đặc biệt là biến chuỗi về số

Please view ví dụ sau

$_GET = ['name' => 'Donald Trump', 'age' => 74];
5

Please try with query string

$_GET = ['name' => 'Donald Trump', 'age' => 74];
6

Ở đây nếu tham số ‘số’ chỉ chứa chữ số (và có thể chuyển đổi về số), PHP sẽ tự động làm việc đó thay bạn. If ‘number’ có dạng bất thường, ví dụ bắt đầu bằng số nhưng có thêm chữ cái 4xyz, PHP tự lấy số 4 để sử dụng. Nếu không thể chuyển đổi về số (số=xyz) để thực hiện trong phép toán, PHP sẽ biến liên quan với giá trị mặc định 0

Quá trình này không sinh ra bất kỳ lỗi nào

(3) Lấy chuỗi truy vấn chính

Mặc dù không phải là yêu cầu quá phổ biến, nếu cần, bạn có thể truy xuất chuỗi truy vấn chính từ truy vấn

$_GET = ['name' => 'Donald Trump', 'age' => 74];
7

Khi this if URL truy xuất

Hello, $name. Welcome to heaven!";
} else {
    echo "

Hell world from PHP

"; }
1, bạn sẽ nhận được

$_GET = ['name' => 'Donald Trump', 'age' => 74];
9

(4) Get string URI of query

You use the way write after

$_GET = ['name' => 'Donald Trump', 'age' => 74];
0

Khi này, với URL

Hello, $name. Welcome to heaven!";
} else {
    echo "

Hell world from PHP

"; }
1, bạn sẽ nhận được

$_GET = ['name' => 'Donald Trump', 'age' => 74];
1

Kết luận

Trong bài học này chúng ta đã làm quen với truy vấn HTTP và cấu trúc URL

Chúng ta cũng làm quen với cách thức lấy thông tin cơ bản từ truy vấn, bao gồm loại truy vấn, chuỗi truy vấn, URI của truy vấn

Chúng ta cũng học cách xử lý riêng truy vấn GET trong PHP

Nhìn chung cách làm việc với tham số của truy vấn trong PHP khá đơn giản. Ứng với mỗi loại truy vấn, PHP cung cấp một biến superglobal chứa các thông tin thu được