Chuyển hướng trang sau một thời gian nhất định PHP


94

Có một hàm PHP nhất định để chuyển hướng sau một thời gian. Tôi đã nhìn thấy nó ở đâu đó nhưng không thể nhớ. Nó giống như chuyển hướng gmail sau khi đăng nhập. Làm ơn, có ai nhắc tôi không?


@zerkms: Có vẻ như có một số cách để làm điều đó.
Wesley Murch

2
@Wesley Murch: Refreshtiêu đề không phải là tiêu đề độc lập. Tôi sẽ không bao giờ sử dụng những thứ không được bao phủ bởi RFC
zerkms

stackoverflow.com/questions/18305258/… đã dẫn tôi đến stackoverflow.com/questions/283752/refresh-http-header nói rằng tiêu đề làm mới không chuẩn cũng gây ra các vấn đề về hiệu suất trong Internet Explorer.
Edward

Câu trả lời:


229
header( "refresh:5;url=wherever.php" );

đây là cách php để thiết lập headermà sẽ chuyển hướng bạn đến wherever.phptrong 5 giây


Hãy nhớ rằng header () phải được gọi trước khi bất kỳ đầu ra thực tế nào được gửi, bằng các thẻ HTML thông thường, các dòng trống trong tệp hoặc từ PHP. Đây là một lỗi rất phổ biến khi đọc mã với các hàm bao gồm, hoặc yêu cầu, hoặc một hàm truy cập tệp khác và có dấu cách hoặc dòng trống được xuất trước khi tiêu đề () được gọi. Vấn đề tương tự cũng tồn tại khi sử dụng một tệp PHP / HTML. (nguồn php.net )


1
thú vị là tôi chưa từng thấy phương pháp này trước đây ... nhưng điều đó sẽ không hiển thị một trang trống hay chỉ nhàn rỗi mà không có bất kỳ thông báo nào cho đến khi hết giờ?
Ibu

nó sẽ hiển thị trang ... tất cả những gì nó làm là thiết lập phù thủy tiêu đề sẽ yêu cầu trình duyệt làm mới trang sau 5 giây, nếu bạn thực sự muốn hiển thị trang trống, chỉ cần sử dụngdie();
Teneff

2
Điều tồi tệ về điều này là: Tiêu đề này không có trong tiêu chuẩn HTTP, khách hàng có thể bỏ qua nó.
Sven

:) Ý tưởng tốt! Và nếu bạn muốn gửi (giữ) một số biến và sử dụng trong trang đã tải lại?
Mugur Ungureanu

Có thể là một tỷ năm kể từ bài đăng này nhưng làm thế nào để bạn đăng một tin nhắn trong khi chuyển hướng như có thể là "Trang đang chuyển hướng, vui lòng đợi"
CAO

25

Bạn có thể sử dụng javascript để chuyển hướng sau một thời gian

setTimeout(function () {
   window.location.href= 'http://www.google.com'; // the redirect goes here

},5000); // 5 seconds

11
Câu hỏi dành cho PHP
Benjamin Intal

5
@Jami đúng, đó là lý do tại sao tôi nói OP có thể sử dụng javascript để thay thế.
Ibu

@BenjaminIntal Đây cũng hoạt động như một phương án dự phòng tuyệt vời nếu trình duyệt bỏ qua chuyển hướng trong tiêu đề. Bạn phải sử dụng trình duyệt không chấp nhận tiêu đề VÀ đã tắt Javascript để không nhận chuyển hướng.
Super Cat

18

Bạn có thể thử điều này:

header('Refresh: 10; URL=http://yoursite.com/page.php');

10 tính bằng giây.


11

bạn muốn sử dụng php để viết thẻ meta.

<meta http-equiv="refresh" content="5;url=http://www.yoursite.com">

Nó không được khuyến khích nhưng nó có thể. 5 trong ví dụ này là số giây trước khi nó làm mới.


3
header( "refresh:5;url=wherever.php" );

thực sự bạn có thể sử dụng mã này như teneff đã nói, nhưng bạn không nhất thiết phải đặt tiêu đề trước bất kỳ đầu ra được gửi nào (điều này sẽ xuất ra lỗi "không thể di chuyển tiêu đề ....: 3").

Để giải quyết vấn đề này, hãy sử dụng hàm php ob_start();trước khi bất kỳ html nào được đưa ra.

Để chấm dứt ob chỉ cần đặt ob_end_flush();sau khi bạn không có bất kỳ đầu ra html nào.

chúc mừng!


2

Nếu bạn đang chuyển hướng bằng PHP, thì bạn chỉ cần sử dụng lệnh sleep () để ngủ trong vài giây trước khi chuyển hướng.

Nhưng, tôi nghĩ những gì bạn đang đề cập đến là thẻ làm mới meta:

http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm


Sử dụng sleep không phải là cách tiếp cận thông thường, như đã nói ở trên nên sử dụng hàm header.
Maksim

Không ngủ chỉ làm chậm kết nối?
FluorescentGreen

2

Việc làm mới PHP sau 5 giây không hoạt động đối với tôi khi mở hộp thoại Lưu dưới dạng để lưu tệp: (header ('Content-type: text / pure'); header ("Content-Disposition: attachment; filename = $ filename > ");)

Sau khi nhấp vào liên kết Lưu dưới dạng và tệp đã được lưu, quá trình làm mới theo thời gian sẽ dừng trên trang gọi.

Tuy nhiên, cảm ơn bạn rất nhiều, giải pháp javascript của ibu vẫn tiếp tục đánh dấu và làm mới trang web của tôi, đó là những gì tôi cần cho ứng dụng cụ thể của mình. Vì vậy, cảm ơn bạn ibu đã đăng giải pháp javascript cho vấn đề php ở đây.

Bạn có thể sử dụng javascript để chuyển hướng sau một thời gian

setTimeout(function () {    
    window.location.href = 'http://www.google.com'; 
},5000); // 5 seconds

2

Bạn có thể sử dụng mã javascript này để chuyển hướng sau một thời gian cụ thể. Hy vọng nó sẽ hoạt động.

setRedirectTime(function () 
{
   window.location.href= 'https://www.google.com'; // the redirect URL will be here

},10000); // 10 seconds
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.