2012-01-06 77 views
7

Tôi đã tìm thấy một đoạn mã chuyển hướng nếu đó là lần truy cập đầu tiên, nhưng khi tôi cố gắng sử dụng, nó chỉ ở lại mã đó. Tôi không thực sự hiểu quá nhiều về cookie và cách hoạt động của nó, vì vậy có thể bạn có thể trợ giúp! Đây là mã PHP:Hiển thị trang khác nếu lần đầu tiên truy cập

<?php 

    session_start(); 

    if (isset($_SESSION['FirstVisit'])) { 

    $_SESSION['FirstVisit'] = 1; 

    header("Location: http://example.com/index.php"); 

    // Don't forget to add http colon slash slash www dot before! 

    } 

?> 

Vậy làm cách nào để khắc phục sự cố nếu đây là lần đầu tiên bạn truy cập trang web, trang này sẽ đưa bạn đến một trang nhất định và nếu không, mặc định?

+1

Bạn không đặt bất kỳ 'cookie' nào, cài đặt của bạn là' phiên' (đặt cookie nhưng không nên liên tục). – PeeHaa

+0

'// Đừng quên thêm dấu gạch chéo http cắt giảm dấu chấm trước www! 'tại sao? đường dẫn tương đối './index.php' có thể được sử dụng trong tiêu đề vị trí –

Trả lời

18

Bạn có thể sử dụng mã này:

<?php 
if (!isset($_COOKIE['firsttime'])) 
{ 
    setcookie("firsttime", "no", /* EXPIRE */); 
    header('Location: first-time.php'); 
    exit(); 
} 
else 
{ 
    header('Location: site.php'); 
    exit(); 
} 
?> 

Nó sẽ kiểm tra nếu bạn có một cookie có tên "firstTime" và nếu không, nó sẽ tạo ra nó và chuyển hướng đến trang firstTime của bạn ... Nếu có, nó sẽ chỉ chuyển hướng bạn đến trang web ...

+0

Cảm ơn bạn đã chỉnh sửa! –

+0

Câu hỏi, tôi nghĩ rằng chức năng tiêu đề chỉ có thể được sử dụng trước khi bất cứ điều gì khác xảy ra? Trong trường hợp trên, tại sao có chức năng thoát sau đó nếu nó sẽ được chuyển đến liên kết đó? Nó sẽ không bao giờ chạy hàm thoát nếu nó thực sự được di chuyển. Xin lỗi, không biết nhiều về tiêu đề. – Andy

+0

@Andy Tôi không sử dụng hàm exit() trong mã của tôi nhưng có, bạn phải đặt bất kỳ tiêu đề nào() trước bất kỳ mã nào khác vì nó sẽ gây ra sự cố với mã ... –

1

Nếu phiên/cookie khó khăn, bạn có thể lưu IP của khách truy cập. Khi IP tồn tại hiển thị trang 1 khi IP là chuyển hướng mới đến trang khác?

1

Để biết thêm thông tin, hãy xem the docs.

<?php 

    if (!isset($_COOKIE['visited'])) { // no cookie, so probably the first time here 
     setcookie ('visited', 'yes', time() + 3600); // set visited cookie 

     header("Location: http://example.com/index.php"); 
     exit(); // always use exit after redirect to prevent further loading of the page 
    } 

?> 
0
<?php 

    @session_start(); 
    $url = 'http://blah.com/default/'; 

    if (!isset($_COOKIE['Visited'])) { 
     $_COOKIE['Visited'] = 1; 
     $url = 'http://blah.com/firstvisit/'; 
    } 

    header("Location: {$url}"); 

    ?> 
+6

Vui lòng không chặn cảnh báo. Mỗi khi bạn làm điều đó một con mèo con chết. – PeeHaa

+3

Đó không phải là xây dựng ở tất cả, lý do duy nhất nó bị đàn áp là bởi vì chúng tôi không có ý tưởng nơi mã này đang đi, và nếu chèn vào chỗ sai nó có thể ném cảnh báo về tiêu đề đã được gửi. Xin lỗi con mèo con của bạn đã chết. – lawrencealan

3
<?php 

    session_start(); 

    if (!isset($_SESSION['FirstVisit'])) { 

    //show site for the first time part 
    $_SESSION['FirstVisit'] = 1; 
    header("Location: http://example.com/index.php"); 

    // Don't forget to add http colon slash slash www dot before! 

    } else { Show normal site } 

?> 

Bạn chỉ cần thực hiện một câu lệnh if để kiểm tra xem có một bộ phiên làm việc, nếu không, bạn có biết lần đầu tiên có của nó. Mặc dù, vì nó không phải là một cookie, bất cứ khi nào bạn thoát khỏi trình duyệt, nó sẽ cho rằng đây là lần đầu tiên, ngay cả khi nó không bao giờ là lần đầu tiên.

0
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery- 
ui.css" /> 
<script src="http://code.jquery.com/jquery-1.8.3.js"></script> 
<script src="/resources/demos/external/jquery.bgiframe-2.1.2.js"></script> 
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
<link rel="stylesheet" href="/resources/demos/style.css" /> 
<script> 
$(function() { 
$("#dialog").dialog(); 
}); 
</script> 

<?php 
if (!isset($_COOKIE['firsttime'])) 
{ 
setcookie("firsttime", "no", /* EXPIRE */); 
header('Location: first-time.php'); 
exit(); 
} 
else 
{ 
?> 
<div id="dialog" title="Basic dialog"> 
<p>text</p> 
</div> 
<? 
} 

?> 

@ Frederick hoặc PeeHaa sẽ tập lệnh trên cũng hoạt động để hiển thị cửa sổ trước khi họ vào trang web thay vì trang.

+2

Chào mừng bạn đến với stackoverflow. Bạn đã đăng "câu trả lời", nhưng có vẻ như bạn thực sự có câu hỏi (?). Nếu vậy, bạn nên [mở một chủ đề mới] (http://stackoverflow.com/questions/ask) thay thế. – Leigh

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