2012-06-22 20 views
16

Dường như nó không phải là khuyến khích sử dụngLàm thế nào để Chuyển trang trong PHP sau vài giây mà không meta http-equiv = REFRESH CONTENT = thời gian

<meta http-equiv=REFRESH CONTENT=3;url=url> 

cho đổi hướng nhưng thay vì sử dụng

header('Location: url') 

Tuy nhiên, tôi muốn hiển thị cho người dùng một số tin nhắn và cho phép họ một thời gian để đọc nó trước khi chuyển hướng. Có cách nào để làm điều đó mà không có meta?

+1

Bạn đã xem javascript chưa? Tôi sẽ tự mình sử dụng thẻ meta. – BugFinder

+0

Tôi cho rằng javascript không phù hợp hơn thẻ meta "meta". – Dador

Trả lời

35

Hãy thử sử dụng "refresh" tiêu đề:

header('Refresh: 3;url=page.php'); 

Ngoài ra, bạn có thể nhìn vào Câu hỏi này Refresh HTTP Header.

+0

không giống như ''? –

+0

Nó cũng giống nhau, nhưng thông qua các cách khác nhau. – Dador

+0

được đặt bên trong thẻ của html và tôi tự hỏi nếu nó hoạt động như tiêu đề() trong luồng http. Nếu đó là sự thật, cả hai đều giống nhau. –

1

Bạn có thể làm điều đó với một mảnh nhỏ của javascript:

<script type="text/javascript" language="JavaScript">location.href = 'otherpage.php';</script> 

Tất nhiên, điều này sẽ phụ thuộc vào người có kích hoạt Javascript.

Rõ ràng, để thiết lập sự chậm trễ, bạn có thể sử dụng giống như setTimeout:

<script type="text/javascript" language="JavaScript"> 
    setTimeout(function() { 
         location.href = 'stackoverflowhelp.php'; 
       }, 5000); 
</script> 
4

Thẻ tiêu đề được gửi khi tải trang, tới trình duyệt để có thể nhanh chóng chuyển hướng người dùng đến trang mong muốn mà không làm phiền hoặc thậm chí tải nó vào lịch sử. Như vậy, bạn không thể gọi chuyển hướng khi trang đã được tải, vì các tiêu đề đã được xử lý.

Bạn thay vì có thể thực hiện điều này với:

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

Mà về cơ bản đặt thẻ <meta> trong tiêu đề của trang đó, có nghĩa là bạn không cần phải viết thẻ ra.

5

php cách để thiết lập tiêu đề, sẽ chuyển hướng bạn đến test.php trong 5 giây:

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

gọi trước khi bất kỳ sản lượng thực tế được gửi đi.

Và trong javascript:

setTimeout(function() { 
    window.location.href= url; // the redirect goes here 
},5000); // 5 seconds 
6

Không có gì sai với việc sử dụng thẻ meta refresh là.

<meta http-equiv="refresh" content="5;URL='http://example.com/'" /> 

Thẻ đó nói đợi 5 giây và chuyển hướng đến example.com. Thẻ này không phải là vấn đề trừ khi người dùng đang sử dụng IE6 và nó vẫn hoạt động, chỉ cần phá vỡ các nút lịch sử.

Sử dụng JavaScript là một tùy chọn, nhưng đảm bảo bạn bao gồm liên kết nói "Nếu bạn không được tự động chuyển hướng, vui lòng nhấp vào đây". Bạn thực sự nên bao gồm liên kết đó một trong hai cách.

+0

thẻ làm mới meta dường như không được dùng nữa theo http://www.w3.org/TR/WCAG10-HTML-TECHS/#meta-element này – zhenming

2

Bằng những gì các bạn đang nói, về mặt lý thuyết này nên làm việc thì:

URL: http://www.example.com/ticketgen/index.php?success=1&redir=1

<?php 
$myredir = ($_GET['redir']); 
    if ($myredir == 1) 
    { 
     header("refresh:5;url=http://www.example.com/ticketgen/"); 
    } 
?> 

Nhưng nó không làm gì. Tôi cũng có nó ở VERY TOP của trang để nó có thể gửi các tiêu đề.

nó không hoạt động trong Firefox mà tôi vừa phát hiện ra.

1

Tôi nghĩ thực sự là cách tốt nhất là header("Refresh: 10;url=../index.php"); Giống như những gì tôi đã làm với công việc của mình.

-1

https://codingislove.com/redirect-pages-php/

kiểm tra ra các bài viết ở trên, nơi họ giải thích rõ ràng về cách chuyển hướng các trang trong PHP theo thời gian thiết lập.

Mã chuyển hướng không có thời gian được đặt: tiêu đề ('vị trí: URL ADDRESS');

Mã chuyển hướng với ba giây thời gian được đặt: tiêu đề ('làm mới: 3; url = URL ADDRESS');

Các vấn đề liên quan