2011-01-01 46 views
7

Tôi đang cố gắng chuyển hướng một trang đến một trang khác và đang hoạt động thành công. Tuy nhiên tôi đang cố gắng chuyển hướng trang đầu tiên đến một trang khác bằng quảng cáo. Sau đó, trang này sẽ chuyển hướng đến một trang khác sau năm giây.Chuyển hướng một trang sang một trang khác trong 5 giây sau đó chuyển hướng lại

tôi đang cố gắng để làm điều đó bằng cách làm này:

<?php 
include('ads.php'); 
?> 
<?php 
sleep(2); 
$url = $_GET['url']; 
header("Location: ".$url.""); 
exit; 
?> 

Tuy nhiên nó được hiển thị quảng cáo trong ads.php hoàn hảo, nhưng nó không được chuyển hướng sau năm giây. Tôi nhận được lỗi này trong trình duyệt web của tôi:

Warning: Cannot modify header information - headers already sent by 
(output started at /home/nucleusi/public_html/adverts/ads.php:1) 
in /home/nucleusi/public_html/adverts/index.php on line 7 

Một liên kết điển hình tôi sẽ được chuyển hướng đến sẽ là:

http://domain.com/adverts/index.php/?url=http%3A%2F%2Fitunes.apple.com%2Fmx%2Falbum%2Fstill-got-the-blues%2Fid14135178%3Fi%3D14135158

+1

Tôi muốn xem câu trả lời. Nó sẽ là tuyệt vời –

+0

@Col. Shrapnel - Giáng sinh tư tưởng là một vài ngày trở lại. :-) –

Trả lời

5

trên trang đầu tiên (trước khi quảng cáo) trước khi DOCTYPE hoặc html tags đặt:

<?php header("location: adlocationhere.php"); ?> 

Sau đó, trên trang quảng cáo đặt trang này:

<?php header("refresh:5;url=secondredirectafter5seconds.php"); ?> 

Điều này sẽ chuyển hướng trang đầu tiên của bạn ngay lập tức và nó sẽ chuyển hướng giây của bạn trang ond sau 5 giây. Hy vọng điều này sẽ giúp (nó cũng nên thoát khỏi không thể sửa đổi thông tin tiêu đề nếu bạn đặt nó trước khi doctype và thẻ html).

EDIT: Cũng có javascript làm điều đó có thể là một nguy cơ bảo mật b/c bất kỳ người dùng nào cũng có thể thay đổi vị trí của nó. Bằng cách này, bạn có toàn quyền kiểm soát nơi người dùng đang được hướng dẫn.

+0

Tôi không thấy cách sử dụng JavaScript để thực hiện chuyển hướng như vậy sẽ tạo thành một nguy cơ bảo mật. Về lý thuyết, bất kỳ tác nhân người dùng nào cũng có thể từ chối thực hiện chuyển hướng hoặc chỉ thực hiện sau khi tham khảo ý kiến ​​người dùng cuối, ngay cả đối với mã trạng thái HTTP chuẩn (3xx). Bạn nói đúng rằng một người dùng hiểu biết có thể sửa đổi nguồn trang của bạn và tự chuyển hướng đến nơi khác, nhưng họ có thể thực hiện điều này dễ dàng với thanh địa chỉ của trình duyệt của họ! Không bao giờ bạn nên giả sử bạn có thể "kiểm soát người dùng", bởi vì bạn không có quyền kiểm soát đối với tác nhân người dùng, ngoài hy vọng nó sẽ tuân thủ HTTP RFC. – Rob

+0

Lý do tôi thêm vào đó là b/c họ có thể thay đổi nguồn và họ biết chính xác vị trí của nó. Với php họ có thể không biết tên tập tin như vậy mà không có họ biết tên tập tin họ không thể thay đổi URL. Cấp sau khi đi đến nó một lần, nó sẽ được lưu trữ trong lịch sử, nhưng tôi chỉ thích với loại điều này bằng cách sử dụng một cái gì đó tôi có quyền kiểm soát hơn là người sử dụng. Hầu hết thời gian cho quảng cáo mà khách hàng muốn kiểm soát không phải người dùng có quyền kiểm soát quảng cáo và điều này dễ dàng hơn đối với PHP. Tôi đồng ý không kiểm soát người dùng hầu hết thời gian nhưng đây là một ngoại lệ mà tôi tin. – jefffan24

2

Sử dụng thẻ meta refresh hoặc javascript window.location

1

Điều này có thể giúp bạn

setTimeout("javascript window.location",3000) 

với regar ds

Wazzy

+0

cảm ơn, tôi sẽ đặt cái này ở đâu? –

0

Tất cả các trang có tiêu đề và nội dung. Để chuyển hướng khách truy cập đến một trang khác, bạn phải làm điều đó trong phần tiêu đề của trang. Một khi bạn đã in nội dung trang (quảng cáo của bạn), bạn đã bắt đầu có hiệu quả nội dung, trong đó không có trở lại để sửa đổi các tiêu đề.

Cách tốt nhất để làm điều này là để có một javascript như

<script> 
function redirect() { window.location = '$url'; } 
setTimeout("redirect();", 5000); 
</script> 
+0

này sẽ được thực hiện trong html .. có lẽ ở dưới cùng của trang, trước – styler1972

+0

ok, tôi có điều này cho đến nay, nhưng nó vẫn không chuyển hướng: ' ' –

+1

javascript không có tính năng $ _GET. Đó là php đúng. Những gì bạn có thể làm là ... var url = ; function redirect() {window.location = url; } .... và điều đó sẽ hoạt động. – jefffan24

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