Chuyển hướng () trong php là gì?

Hầu hết thời gian, một ứng dụng web phản hồi yêu cầu của trình duyệt bằng cách trả lại một trang HTML. Tuy nhiên, đôi khi một ứng dụng web chuyển hướng người dùng đến một trang khác thay vì. Một ví dụ phổ biến là sau khi gửi đơn đặt hàng trên một trang web thương mại điện tử. Biểu mẫu gửi tới một URL, tạm dừng trong khi giao dịch hoàn tất và sau đó trình duyệt của người dùng được gửi tới một URL mới hiển thị thông báo thành công

Quy trình kỹ thuật đằng sau hậu trường là máy chủ web thực sự yêu cầu trình duyệt thực hiện một yêu cầu mới, thứ hai đối với URL mới đó

Quy trình chuyển hướng

  • Yêu cầu từ trình duyệt đến máy chủ
  • Máy chủ phản hồi với mã trạng thái "Đã tìm thấy 302" và một URL mới
  • Trình duyệt gửi một yêu cầu mới tới URL mới
  • Máy chủ trả về dữ liệu từ URL mới

"Yêu cầu kép" này diễn ra rất nhanh, nhanh hơn nhiều so với việc tải một trang web thông thường. Hiệu ứng giống như trang thứ hai được máy chủ trả về dưới dạng phản hồi cho yêu cầu đầu tiên


Chuyển hướng trong PHP

Trong PHP, chuyển hướng trang được thực hiện bằng cách đặt giá trị vị trí trong tiêu đề phản hồi và không trả lại gì khác ngoài dữ liệu tiêu đề đó. Sử dụng exit để ngăn mọi mã PHP còn lại thực thi

PHP sẽ tự động đặt đúng mã trạng thái ("302 Found") khi vị trí được đặt trong tiêu đề

Có thể hữu ích khi đặt mã chuyển hướng này vào một chức năng dễ nhớ hơn


Bộ đệm đầu ra

Quá trình chuyển hướng một yêu cầu, như được mô tả ở trên, yêu cầu chỉ gửi một tiêu đề phản hồi trở lại trình duyệt. Tiêu đề phản hồi được gửi tới trình duyệt trước bất kỳ dữ liệu nào. Tiêu đề đứng trước dữ liệu và mô tả nội dung được gửi. Mọi thay đổi đối với tiêu đề phải diễn ra trước khi xuất bất kỳ dữ liệu nào—thậm chí không phải là một ký tự khoảng trắng (dấu cách, tab, trả về dòng). Khi bất kỳ dữ liệu nào được gửi, tiêu đề sẽ được gửi và không thể thay đổi

Điều này có ý nghĩa quan trọng đối với việc viết mã PHP. PHP không thể cho phép chuyển hướng nếu bất kỳ dữ liệu nào đã được gửi trước đó. Thay vì chuyển hướng, nó sẽ trả về lỗi nghiêm trọng

PHP có một tính năng gọi là bộ đệm đầu ra được cấu hình trong tệp php. tập tin ini. (Cũng có thể bật thủ công bằng cách sử dụng ob_start(). ) Đó là một ý tưởng tốt để giữ cho nó luôn phát triển

Khi tắt bộ đệm đầu ra, dữ liệu phản hồi sẽ được gửi ngay lập tức. Khi nó được bật, bộ đệm đầu ra sẽ tích lũy dữ liệu trong bộ nhớ trước khi gửi dưới dạng phản hồi

Bộ đệm đầu ra sẽ giữ các tiêu đề và dữ liệu cho đến khi

  • Bộ đệm có nhiều nội dung như kích thước được định cấu hình của nó cho phép
  • Bộ đệm được hướng dẫn rõ ràng để gửi tất cả dữ liệu tích lũy
  • Tất cả thực thi mã hoàn thành

Bộ đệm đầu ra là cách chúng tôi muốn PHP hoạt động — tập hợp từng phần phản hồi, gửi nó khi hoàn tất. Khi nó được bật, các nhà phát triển web không còn phải lo lắng về việc vô tình xuất ra khoảng trắng trước khi cố gắng chuyển hướng yêu cầu. Phản hồi được giữ trong bộ nhớ tạo cơ hội chỉnh sửa tiêu đề


Định cấu hình bộ đệm đầu ra

Để bật bộ đệm đầu ra, hãy mở tệp php. tập tin ini. Tìm cài đặt có nhãn "output_buffering". Đặt giá trị thành "4096", lưu các thay đổi và khởi động lại máy chủ web

"4096" cho phép bộ đệm chứa ít hơn 4000 ký tự trước khi bộ đệm đầy và cần gửi tiêu đề và dữ liệu. Đó là một giá trị tiêu chuẩn tốt nhưng có thể được đặt cao hơn nếu cần

Chuyển hướng PHP là một công cụ cực kỳ hữu ích, nhưng chúng cũng có thể nguy hiểm nếu không được triển khai đúng cách

Nếu bạn đã xem qua phần giới thiệu của chúng tôi về PHP 7. 4 và hướng dẫn của chúng tôi về cách xây dựng trang web trong 5 phút, bạn sẽ biết rằng hàm header() có thể được sử dụng để dễ dàng chuyển hướng người dùng đến một trang khác. Tuy nhiên, trên thực tế, việc sử dụng chức năng này không đơn giản như người ta tưởng. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách tạo một chuyển hướng PHP mà không gây ra các vấn đề lớn về sau

Chuyển hướng () trong php là gì?

Phương thức cơ bản để chuyển hướng PHP

Hầu hết các hướng dẫn sẽ cho bạn biết rằng để tạo chuyển hướng PHP, bạn chỉ cần sử dụng hàm header() ở đầu trang của mình. Để làm được điều đó, bạn sử dụng chức năng gửi một URL mới, như thế này

header('Location: '.$newURL.php);

This header function should be put before you pass any HTML or text to your users’ browsers, so it should be right at the top of the page. That means it should come before the declaration, before any Java, and before any PHP code. It will then send users to the new URL.

Mặc dù có vẻ đơn giản, nhưng khi nói đến hàm header(), sự đơn giản của mã có thể khiến các nhà phát triển có cảm giác an toàn sai lầm. Vì vậy, hãy xem cách bạn có thể sử dụng chức năng này một cách chính xác

Chết () và Thoát ()

Đầu tiên, bạn nên sử dụng công cụ sửa đổi die() hoặc exit() mỗi khi bạn sử dụng chuyển hướng. Tóm lại, vấn đề là các trình thu thập thông tin và bot có thể bỏ qua các tiêu đề và do đó, trang mà bạn cho rằng mình đang chuyển hướng khỏi đó hoàn toàn có thể truy cập được đối với chúng. Nói cách khác, nếu bạn đang sử dụng chuyển hướng tiêu đề để bảo vệ một trang cụ thể, thì nó không bảo vệ bạn chút nào

Đó là lý do tại sao bạn phải dừng xử lý phần còn lại của trang, trong trường hợp chuyển hướng bị bỏ qua. Cách để làm điều đó là thêm die() hoặc exit() sau chuyển hướng của bạn

header("Location: .$newURL.php");
die();

URL tương đối và tuyệt đối

Tiếp theo, hãy nói về URL tương đối và tuyệt đối trong chuyển hướng. cho phép bạn sử dụng cả hai, nhưng bạn nên cực kỳ cẩn thận khi sử dụng chuyển hướng tương đối. Đó là bởi vì một số nhà xây dựng trang web đối chiếu và đổi tên các trang PHP. Điều này có nghĩa là nếu bạn đang làm việc trên PHP của mình thông qua một trình tạo trang web, bạn có thể sẽ phá vỡ tất cả các chuyển hướng của mình

Thật không may, hiện tại không có cách thực sự nào để giải quyết vấn đề này, nếu không có cái nhìn tổng quan cẩn thận về nơi các chuyển hướng của bạn đang trỏ đến

Mã trạng thái

Vấn đề thứ ba với các chuyển hướng PHP tiêu chuẩn là toán tử “vị trí” của PHP vẫn trả về mã HTTP 302. Bạn không nên cho phép nó làm điều đó, bởi vì nhiều trình duyệt web triển khai mã này theo cách hoàn toàn trái ngược với cách mà nó được cho là hoạt động. về cơ bản họ sử dụng lệnh GET thay vì thực hiện chuyển hướng "thực"

Do đó, cách thực hành tốt nhất khi xây dựng các chuyển hướng PHP là chỉ định mã được trả về. Thật không may, mã chính xác để sử dụng là một điểm gây tranh cãi. HTTP 301 cho biết chuyển hướng vĩnh viễn, điều này có thể khiến bạn gặp sự cố khi khôi phục trang gốc của mình. Rất tiếc, HTTP 303 được nhiều trình duyệt hiểu là “khác” và có thể gây ra sự cố khi lập chỉ mục trang của bạn thông qua các công cụ tìm kiếm

Trong thực tế, và cho đến khi tình trạng này được giải quyết, hãy sử dụng HTTP 303

Kiểm tra tài liệu

Ngoài việc thực hiện các biện pháp phòng ngừa cơ bản ở trên, bạn nên dành chút thời gian để đọc tài liệu về cách sử dụng chuyển hướng PHP trước khi xuất bản chúng. Bạn nên kiểm tra hướng dẫn sử dụng PHP để đảm bảo rằng bạn hiểu những gì bạn đang làm, cũng như kiểm tra để đảm bảo rằng bạn đang thực hành tốt nhất

Và trong khi bạn đang bắt kịp bài đọc của mình, hãy đảm bảo rằng bạn cũng bảo vệ trang web khỏi các lỗ hổng phổ biến. nếu bạn đã ở trong tình thế phải sử dụng chuyển hướng PHP, có khả năng bảo mật trang web của bạn sẽ cần được kiểm tra

Chuyển hướng () trong php là gì?

Các phương pháp khác

Với tất cả những vấn đề này, có lẽ bạn đang tự hỏi tại sao bạn lại sử dụng chuyển hướng PHP. Đó là một câu hỏi chính đáng. Mặc dù các chuyển hướng PHP thường được thực hiện nhanh hơn các loại chuyển hướng khác và do đó có thể là một công cụ quan trọng trong việc cải thiện tốc độ trang web, vẫn có các tùy chọn khác

There are two main approaches to doing this. You can either use the HTML element to redirect from within the HTML portion of your page,  or use JavaScript. The first approach – using would look like this:

Cách tiếp cận thứ hai – sử dụng JavaScript – thanh lịch hơn một chút và chắc chắn trông chuyên nghiệp hơn

window.location.replace("http://newpage.php/");

Cả hai cách tiếp cận này sẽ thực thi chậm hơn một chút so với chuyển hướng tiêu đề () ngay lập tức, nhưng được cho là linh hoạt hơn

Đảm bảo trang web của bạn có thể xử lý mọi thứ – từ lưu lượng truy cập cao đến thời gian tải nhanh, v.v. Mua dịch vụ lưu trữ web

Một Lời Cuối Cùng

Mặc dù làm theo các bước trên có nghĩa là chuyển hướng PHP của bạn thực thi an toàn, nhưng nếu bạn đang ở vị trí sử dụng nhiều chuyển hướng PHP, có lẽ đã đến lúc bạn nên suy nghĩ lại về cấu trúc trang web của mình

Có một vài lý do chính đáng để làm điều đó. Đầu tiên là không phải tất cả các máy chủ web đều được tạo ra như nhau và nếu bạn đang gửi tất cả khách truy cập của mình trên một tuyến đường vòng quanh trang web của mình, điều này sẽ ảnh hưởng đến hiệu suất của nó. Điều này có thể được cải thiện ở một mức độ nào đó bằng cách sử dụng một nhà cung cấp dịch vụ lưu trữ web giá cả phải chăng, nhưng chỉ ở một mức độ nhất định

Lý do thứ hai là trang bạn đang chuyển hướng có thể đang thu thập dữ liệu về khách truy cập của bạn mà bạn không biết, đặc biệt nếu bạn đang sử dụng phần mềm phân tích trang web để theo dõi hiệu suất trang web của mình. Trong thế giới hậu GDPR của chúng ta, điều đó có thể gây ra những hậu quả đáng kể

Vì vậy, tóm lại. hãy cẩn thận với các chuyển hướng PHP, sử dụng chúng đúng cách và chỉ sử dụng chúng ở đâu và khi nào bạn thực sự phải làm

Tác giả

Dominyka tôi

Dominykas bắt đầu với tư cách là Chuyên gia tiếp thị và hiện đang làm việc với tư cách là Biên tập viên nội dung và Trưởng nhóm. Khi không đảm bảo chất lượng bài viết, anh ấy thích vừa đọc vừa viết tiểu thuyết

Thêm từ Dominykas I

Chuyển hướng () trong php là gì?

Đồng tác giả

Ignas T

Ignas là một phần của đội ngũ Kỹ thuật của Hostinger. Anh ấy đảm nhận việc quản trị và giám sát máy chủ, đặc biệt tập trung vào ảo hóa phần mềm. Trong thời gian rảnh rỗi, anh ấy luôn sẵn sàng cho một chuyến phiêu lưu trượt tuyết hoặc chèo thuyền kayak hoặc một đêm trò chơi trên bàn cờ

Chức năng chuyển hướng trong PHP là gì?

Chuyển hướng từ trang này sang trang khác trong PHP thường được thực hiện bằng hai cách sau. Sử dụng chức năng tiêu đề trong PHP. Hàm header() là một hàm có sẵn trong PHP, dùng để gửi tiêu đề HTTP thô (Giao thức truyền tải siêu văn bản) tới máy khách .

Chuyển hướng được sử dụng để làm gì?

Chuyển hướng là gì? . Ba chuyển hướng được sử dụng phổ biến nhất là 301, 302 và Meta Refresh. a way to send both users and search engines to a different URL from the one they originally requested. The three most commonly used redirects are 301, 302, and Meta Refresh.

Làm cách nào để chuyển hướng một URL trong chỉ mục PHP?

Để thiết lập một chuyển hướng đơn giản, chỉ cần tạo một chỉ mục. php trong thư mục bạn muốn chuyển hướng với nội dung sau. < ? php header("Vị trí. http. //www. chuyển hướng. đến. url. com/"); ?>