Bài viết này là một Đoạn trích về cách chuyển hướng từ trang này sang trang khác trong PHP sau vài giây. Trong bài viết này, tôi sẽ chỉ cho bạn,
- Cách chuyển hướng các trang trong PHP mà không cần đặt thời gian
- Cách chuyển hướng các trang trong PHP bằng cách đặt thời gian
Trước khi bắt đầu mã hóa, hãy để tôi giải thích cách thiết lập chủ đề, Đầu tiên tôi sẽ xem xét hai trang PHP trong một thư mục
- trang đăng nhập. php
- trang chủ. php
Trong trang đăng nhập. trang php, thêm các trường nhập biểu mẫu với tên người dùng, mật khẩu và nút gửi và tạo kiểu cho nó. bất cứ khi nào người dùng cố gắng đăng nhập, trước tiên nó sẽ xác thực biểu mẫu và tiếp theo nếu giá trị biểu mẫu được đặt, nó sẽ chuyển hướng đến trang chủ. php
Đây là giao diện của trang đăng nhập sau khi tạo kiểu cho nó
Ghi chú. Tôi đang sử dụng wamp máy chủ cục bộ cho bản demo này. và tôi sẽ không giải thích về HTML và CSS trong bài viết này
Cách chuyển hướng các trang trong PHP mà không cần đặt thời gian
mã PHP
giải thích mã
bất cứ khi nào người dùng gửi nút đăng nhập, giá trị đã gửi sẽ đặt thành một hàm isset() và tiếp theo nếu người dùng nhập thông tin đăng nhập thì câu lệnh if-else sẽ kiểm tra xem giá trị biểu mẫu có được đặt hay không, nếu giá trị biểu mẫu được đặt thì nó sẽ chuyển hướng đến trang chủ. php và nếu các giá trị biểu mẫu không được đặt, nó sẽ hiển thị thông báo lỗi
bất cứ khi nào thông tin đăng nhập không được đặt, thì người dùng sẽ nhận được thông báo lỗi
Cách chuyển hướng các trang trong PHP bằng cách đặt thời gian
mã PHP
giải thích mã
bất cứ khi nào người dùng gửi nút đăng nhập, giá trị đã gửi sẽ đặt thành một hàm isset() và tiếp theo nếu người dùng nhập thông tin đăng nhập thì câu lệnh if-else sẽ kiểm tra xem giá trị biểu mẫu có được đặt hay không, nếu giá trị biểu mẫu được đặt thì thông báo thành công sẽ hiển thị . php và nếu các giá trị biểu mẫu không được đặt, nó sẽ hiển thị thông báo lỗi
Mã chuyển hướng không có thời gian đặt
header('location:URL ADDRESS');Mã chuyển hướng với thời gian ba giây được đặt
header('refresh:3; url=URL ADDRESS');Rajesh DN Rajesh Dn là nhà phát triển giao diện người dùng tại TCS. anh ấy thích khám phá các công nghệ mới và thích đi chơi với bạn bè và lướt youtube khi rảnh rỗi 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: //www.google.com/'); die();Đối số của hàm header() là một chuỗi gồm hai phần
- Một “Vị trí” cố định. " phần
- 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 đề()
<html> <?php header('Location: //www.google.com/'); die();
Ví dụ sai #2. văn bản được in bằng PHP trước tiêu đề()
echo 'Redirecting...'; header('Location: //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)
<?php header('Location: //www.google.com/'); die();
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 = '<html><head></head>'; $redirect = TRUE; if ($redirect) { header('Location: //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ụ
<html> <head> <meta http-equiv="refresh" content="0; url=//www.google.com/"> </head> <body> ... </body> </html>
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ụ
<html> <head> <script> function goToGoogle() { window.location.replace('//www.google.com'); }; </script> </head> <body onload="goToGoogle();"> </body> </html>
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
<html> <head> <script> function redirectWithTimeout() { setTimeout(goToGoogle, 5000); } function goToGoogle() { window.location.replace('//www.google.com'); }; </script> </head> <body onload="redirectWithTimeout();"> <p>You will be redirected in 5 seconds.</p> </body> </html>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
- 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
- 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(); } 1Phầ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)