Làm cách nào để lặp lại và chuyển hướng trong PHP?

Mã PHP trong ví dụ sau sẽ chuyển hướng người dùng từ trang mà nó được đặt tới URL

4. Bạn cũng có thể chỉ định các URL tương đối

Nếu bạn muốn chuyển hướng người dùng từ trang cũ sang trang mới thường xuyên thì cũng đề cập đến mã phản hồi HTTP trong hàm

5 như trong ví dụ sau, để các công cụ tìm kiếm chuyển "thứ hạng trang" từ trang cũ sang trang cũ. 

Nếu mã trạng thái không được chỉ định rõ ràng, ví dụ:

6 mặc định là 302 (Đã tìm thấy). Để chuyển hướng tạm thời, hãy sử dụng mã trạng thái HTTP 307

Một ví dụ về điều này là một trang gửi biểu mẫu. khi bạn điền và gửi biểu mẫu, trang sẽ tự động chuyển hướng bạn đến một “trang cảm ơn” khác, mà không hiển thị lại biểu mẫu

Trong trường hợp thứ hai, bạn mở URL đầu tiên và trình duyệt của bạn tải trang A. Sau đó, trình duyệt của bạn được chuyển đến trang B, ngay lập tức hoặc sau khi hết thời gian chờ

Loại chuyển hướng này thường xảy ra sau khi thanh toán trực tuyến. trang xác nhận thanh toán cho bạn biết rằng bạn sẽ được chuyển hướng đến trang của cửa hàng sau vài giây

Bây giờ, hãy xem cách bạn có thể thực hiện các thao tác này trong PHP

Cách chuyển hướng trong PHP. chức năng header() .

Trong PHP, bạn có thể thực hiện chuyển hướng trang bằng hàm header()

Hãy xem ngay một ví dụ

header('Location: https://www.google.com/');
die();

Đối số của hàm header() là một chuỗi gồm hai phần

  1. Một “Vị trí” cố định. " phần
  2. URL nơi chuyển hướng người dùng

Ngay sau khi chức năng header() được thực thi, người dùng từ xa sẽ được chuyển hướng đến URL mới

Đây là một chuyển hướng "ngay lập tức". người dùng không nhận được bất kỳ nội dung web nào trước khi chuyển hướng

URL đích phải là một URL tuyệt đối, như. https. //www. Google. com

Tuy nhiên, hầu hết các trình duyệt cũng chấp nhận các URL tương đối. Điều này có thể hữu ích nếu bạn muốn chuyển hướng đến một URL tương đối trên trang web của riêng bạn

Ví dụ

$thankyou_page = 'thank_you.php';
if ($form_data_valid) {
	header('Location: ' . $thankyou_page);
	die();
}

GHI CHÚ

Bạn phải luôn gọi die() sau header(). Nếu không, việc thực thi tập lệnh có thể tiếp tục sau khi chuyển hướng

Chuyển hướng và đầu ra

Hàm header() gửi tiêu đề HTTP tới trình duyệt. Tiêu đề này yêu cầu trình duyệt chuyển đến một URL khác

Điều quan trọng là phải gọi header() trước khi bất kỳ đầu ra nào được gửi tới trình duyệt, bao gồm

  • Bất kỳ HTML nào bên ngoài các thẻ PHP
  • Bất kỳ văn bản hoặc dữ liệu nào được in bằng PHP

Để hiểu rõ hơn điều đó có nghĩa là gì, đây là ba ví dụ sai

Ví dụ sai số 1. Đầu ra HTML trước tiêu đề()


 

Ví dụ sai #2. văn bản được in bằng PHP trước tiêu đề()

echo 'Redirecting...';
header('Location: https://www.google.com/');
die();

 

Ví dụ sai số 3. một dòng trắng trước header() (điều này xảy ra nếu bạn để một hoặc nhiều dòng trống trước thẻ mở PHP)


 

Nhưng nếu chuyển hướng đến sau khi một số đầu ra đã được gửi thì sao?

Trong những trường hợp này, bạn có ba lựa chọn

  • Lưu đầu ra trong một biến (thay vì lặp lại nó)
  • Sử dụng bộ đệm đầu ra
  • Sử dụng chuyển hướng front-end

Giải pháp đầu tiên là dễ nhất. Về cơ bản, thay vì sử dụng tiếng vang hoặc các lệnh tương tự, bạn lưu tất cả đầu ra bên trong một biến

Sau đó, bạn chỉ xuất biến nếu không có chuyển hướng nào xảy ra

Ví dụ


$html = '';
$redirect = TRUE;
if ($redirect) {
   
   header('Location: https://www.google.com/');
   die();
}
else {
   echo $html;
}

 

Bây giờ hãy xem bộ đệm đầu ra

Bộ đệm đầu ra làm cho tập lệnh PHP của bạn giữ tất cả đầu ra cho đến khi kết thúc tập lệnh

Vì vậy, về cơ bản, nó thực hiện chính xác những gì bạn cần mà không cần phải sử dụng các biến một cách rõ ràng

Sử dụng bộ đệm đầu ra rất đơn giản. Bạn chỉ cần gọi ob_start() khi bạn muốn bộ đệm bắt đầu và sau đó gọi ob_end_flush() khi bạn muốn gửi tất cả bộ đệm

Đây là cách nó hoạt động

________số 8

 

Bây giờ, hãy xem cách hoạt động của chuyển hướng front-end

Chuyển hướng bằng thẻ meta HTML

Một cách khác để thực hiện chuyển hướng là sử dụng thẻ meta HTML cụ thể

Thẻ này phải được thêm vào trang HTML mà bạn tạo bằng PHP. Sau khi trình duyệt đã tải trang, nó sẽ đọc thẻ chuyển hướng và thực thi nó

Trái ngược với chuyển hướng PHP, đây không phải là chuyển hướng ngay lập tức, vì trình duyệt tải trang đầu tiên trước khi thực hiện chuyển hướng

Hãy xem một ví dụ


   
      
   
   
   ...
   

 

Thẻ chuyển hướng là thẻ meta HTML có thuộc tính http-equiv=”refresh” và thuộc tính nội dung chứa

  • Một số cho biết phải đợi bao nhiêu giây trước khi chuyển hướng. Nếu được đặt thành 0, chuyển hướng ngay lập tức. Số này được theo sau bởi một ;
  • URL mới, ở dạng url=new_url. Nếu điều này không được đặt, thì URL hiện tại sẽ được tải lại (vì vậy, trên thực tế, nó hoạt động như một tự động làm mới)

Chuyển hướng với JavaScript

Thay vì sử dụng thẻ meta HTML, bạn cũng có thể sử dụng JavaScript để thực hiện chuyển hướng

Trong JavaScript, lệnh chuyển hướng được thực hiện bởi cửa sổ. vị trí. chức năng thay thế ()

Bạn cần làm cho trang thực thi chức năng này khi bạn muốn thực hiện chuyển hướng, thường là ngay sau khi tải trang

Ví dụ

0

 

Nếu bạn muốn chuyển hướng sau khi hết thời gian chờ, bạn chỉ cần sử dụng hàm JavaScript setTimeout() tiêu chuẩn

Như thế này

1

Mã chuyển hướng HTTP

Hãy quay lại chuyển hướng PHP header()

Khi bạn chuyển hướng bằng hàm header(), bạn cũng có thể chỉ định mã HTTP chuyển hướng tùy chọn

Chuyển hướng được thực hiện vì hai lý do

  1. Bạn chỉ muốn chuyển người dùng sang một trang khác, như trong ví dụ gửi biểu mẫu
  2. Bạn đã chuyển một URL đến một địa chỉ khác, vì vậy bạn muốn chuyển hướng tất cả các yêu cầu từ URL đầu tiên sang URL thứ hai

Khi bạn gửi tiêu đề chuyển hướng, bạn cũng có thể cho trình duyệt biết lý do tại sao chuyển hướng này xảy ra bằng cách gửi tiêu đề HTTP thích hợp

Điều này chủ yếu có liên quan cho mục đích SEO

Đặc biệt, bạn muốn gửi

  • mã 301 nếu trang đã được chuyển vĩnh viễn sang URL mới
  • mã 302 nếu trang đã tạm thời chuyển sang URL mới

Theo mặc định, hàm header() gửi mã 302 – chuyển hướng tạm thời

Thay vào đó, nếu bạn muốn gửi mã 301 vì URL cũ đã được chuyển vĩnh viễn sang URL mới, thì bạn phải chỉ định mã đó một cách rõ ràng

Bạn có thể làm điều đó bằng cách gửi tiêu đề 301 trước tiêu đề chuyển hướng. Như thế này

$thankyou_page = 'thank_you.php';
if ($form_data_valid) {
	header('Location: ' . $thankyou_page);
	die();
}
0

 

Bạn cũng có thể sử dụng đối số header() thứ ba để chỉ định mã phản hồi

$thankyou_page = 'thank_you.php';
if ($form_data_valid) {
	header('Location: ' . $thankyou_page);
	die();
}
1

Phần kết luận

Trong hướng dẫn này, bạn đã học cách chuyển hướng bằng PHP

Bạn đã biết cách sử dụng hàm header() và cách tránh gửi đầu ra trước khi chuyển hướng

Bạn cũng đã xem cách thực hiện chuyển hướng giao diện người dùng bằng thẻ meta HTML và bằng JavaScript cũng như cách chỉ định loại chuyển hướng (301 và 302)

Làm cách nào để chuyển hướng một trang trong PHP bằng tiếng vang?

Câu trả lời. Sử dụng hàm PHP header() . Mã PHP trong ví dụ sau sẽ chuyển hướng người dùng từ trang mà nó được đặt tới URL http. //www. thí dụ. com/trang-khác. php. Bạn cũng có thể chỉ định các URL tương đối

Làm cách nào để tạo chuyển hướng trong PHP?

Để đặt chuyển hướng PHP vĩnh viễn, bạn có thể sử dụng mã trạng thái 301 . Vì mã này biểu thị chuyển hướng vô thời hạn nên trình duyệt sẽ tự động chuyển hướng người dùng bằng URL cũ sang địa chỉ trang mới.

Làm cách nào để chuyển hướng một liên kết trong PHP?

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 hàm tiêu đề trong PHP . Hàm header() là một hàm có sẵn trong PHP được sử dụng để gửi tiêu đề HTTP (Giao thức truyền siêu văn bản) thô tới máy khách.

Làm cách nào để lặp lại một tệp trong PHP?

Câu lệnh tiếng vang PHP . tiếng vang hoặc tiếng vang() .