Hướng dẫn redirect function in php - chức năng chuyển hướng trong php

Trong việc lập trình web bạn không thể thiếu việc chuyển người dùng từ trang này qua trang kia. Ví dụ như sau khi login thì chuyển người dùng về trang chủ. Hoặc vào các nội dung cần xác thực thì phải chuyển người dùng về trang login.

Nội dung chính

  • 1. Chuyển trang bằng HTTP header
  • Các lỗi thường gặp khi sử dụng chuyển hướng bằng header
  • 2. Chuyển trang bằng HTML
  • 3. Chuyển trang bằng JavaScript
  • Tổng hợp

1. Chuyển trang bằng HTTP header

Các lỗi thường gặp khi sử dụng chuyển hướng bằng header

2. Chuyển trang bằng HTML

Location: <new_URL>

3. Chuyển trang bằng JavaScript

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>

Tổng hợp

<?php 
header("Location: https://google.com");
exit;

Các lỗi thường gặp khi sử dụng chuyển hướng bằng header

2. Chuyển trang bằng HTML

3. Chuyển trang bằng JavaScriptNếu bạn đang gấp Bỏ qua cách chuyển hướng này và sử dụng các cách chuyển hướng ở bên dưới.

Tổng hợp

PHP hỗ trợ chuyển trang bằng cách trả về HTTP header Location theo đặc tả của giao thức HTTP. Khi trình duyệt nhận được response từ server có HTTP header "Location" thì trình duyệt sẽ tự động chuyển hướng đến url được chỉ định.

HEADER
<cách 2 dòng>
BODY

HTTP header:

Cách thực hiện đơn giản như sau.

<?php
echo "Hello world";

Trường hợp bạn muốn chuyển hướng ra trang ngoài không phải trang hiện tại của bạn. Thì bạn hãy để đầy đủ đường dẫn URL.

HTTP/1.1 200 OK
Server: nginx/1.17.6
Content-Type: text/html
Connection: keep-alive

Hello world

Lỗi 1:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
9

Server: nginx/1.17.6
Content-Type: text/html
Connection: keep-alive

Khi thực hiện chuyển trang bằng cách này. Tức là bạn đang thay đổi các giá trị HTTP header mặc định. Rất có thể bạn sẽ bị thông báo lỗi khi sau:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
9. Để khác phục được lỗi này. Bạn cần hiểu bản chất vấn được được giải thích như sau. Nếu bạn đang gấp Bỏ qua cách chuyển hướng này và sử dụng các cách chuyển hướng ở bên dưới.

<?php
header("Location: /index.php");
echo "Hello world";

Trường hợp bạn muốn chuyển hướng ra trang ngoài không phải trang hiện tại của bạn. Thì bạn hãy để đầy đủ đường dẫn URL.

HTTP/1.1 200 OK
Location: /index.php

Hello world

Lỗi 1:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
9

<?php
echo "Hello world";
header("Location: /index.php");

Khi thực hiện chuyển trang bằng cách này. Tức là bạn đang thay đổi các giá trị HTTP header mặc định. Rất có thể bạn sẽ bị thông báo lỗi khi sau:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
9. Để khác phục được lỗi này. Bạn cần hiểu bản chất vấn được được giải thích như sau. Nếu bạn đang gấp Bỏ qua cách chuyển hướng này và sử dụng các cách chuyển hướng ở bên dưới.

Giải thích:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
0

Theo đặc tả một gói tin HTTP có cấu trúc như sau:

Mỗi dấu xuống dòng ở trên là cặp kí tự

<?php 
header("Location: https://google.com");
exit;
1;

Ví dụ khi bạn xuất dòng chữ "Hello world". File hello.php

Thì cấu trúc của gói tin trả về như sau: Nguyên nhân lỗi là bị điều hướng liên tục.

Dòng header khác này, có thể có hoặc không có, hoặc có nhiều hơn các thông tin - chỉ thị khác. Vì vậy trong các ví dụ sau mình giảm bớt các dòng header không liên quan tới nội dung bài viết.

Nếu chúng ta đặt lệnh header phía trước lệnh echo sẽ thành ra như thế này:Nếu đang ở trang hiện tại, thì không được chuyển nữa. Ví dụ như URL hiện tại của chúng ta là

<?php 
header("Location: https://google.com");
exit;
8 thì ta phải kiểm tra thông tin
<?php 
header("Location: https://google.com");
exit;
9 cho ta được đoạn sau domain
HEADER
<cách 2 dòng>
BODY
0.

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
1

Vậy nếu ta đổi ngược 2 lệnh trên. Thì kết quả sẽ được như sau:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
2

Chúng ta sẽ bị lỗi

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
9; Nhưng trong trường hợp tắt warning, website vẫn chạy được.

2. Chuyển trang bằng HTML

3. Chuyển trang bằng JavaScript

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
3

Tổng hợp

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
4

PHP hỗ trợ chuyển trang bằng cách trả về HTTP header Location theo đặc tả của giao thức HTTP. Khi trình duyệt nhận được response từ server có HTTP header "Location" thì trình duyệt sẽ tự động chuyển hướng đến url được chỉ định.

HTTP header:

Cách thực hiện đơn giản như sau.

3. Chuyển trang bằng JavaScript

Tổng hợp

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
5

HTTP header:

Cách thực hiện đơn giản như sau.

Tổng hợp

PHP hỗ trợ chuyển trang bằng cách trả về HTTP header Location theo đặc tả của giao thức HTTP. Khi trình duyệt nhận được response từ server có HTTP header "Location" thì trình duyệt sẽ tự động chuyển hướng đến url được chỉ định.

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
6

HTTP header:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
3

Cách thực hiện đơn giản như sau.

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
5

Trường hợp bạn muốn chuyển hướng ra trang ngoài không phải trang hiện tại của bạn. Thì bạn hãy để đầy đủ đường dẫn URL.

Lỗi 1:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
9

Khi thực hiện chuyển trang bằng cách này. Tức là bạn đang thay đổi các giá trị HTTP header mặc định. Rất có thể bạn sẽ bị thông báo lỗi khi sau:

<?php 
// các xử lí
// Tiến hành chuyển hướng
header("Location: /index.php");
exit;

// có thể các còn các xử lí khác không được thực hiện.
?>
9. Để khác phục được lỗi này. Bạn cần hiểu bản chất vấn được được giải thích như sau. Nếu bạn đang gấp Bỏ qua cách chuyển hướng này và sử dụng các cách chuyển hướng ở bên dưới.Hoàng Phúc

Giải thích:

Theo đặc tả một gói tin HTTP có cấu trúc như sau:


Mỗi dấu xuống dòng ở trên là cặp kí tự

<?php 
header("Location: https://google.com");
exit;
1;