Nhận giới thiệu URL ban đầu với PHP?


110

Tôi đang sử dụng $_SERVER['HTTP_REFERER'];để lấy Url giới thiệu. Nó hoạt động như mong đợi cho đến khi người dùng nhấp vào trang khác và người giới thiệu chuyển sang trang cuối cùng.

Làm cách nào để lưu trữ Url giới thiệu ban đầu?

Câu trả lời:


137

Lưu trữ nó trong cookie (nếu nó có thể chấp nhận được đối với tình huống của bạn) hoặc trong một biến phiên.

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];

13
Hãy lưu ý lời khuyên của @pcp trong câu trả lời bên dưới!
d -_- b

6
Lưu ý rằng bạn cũng nên kiểm tra xem có http_referertồn tại hay không, vì nó thường không tồn tại, điều này có thể gây ra lỗi "Chỉ mục không xác định".
Justin

17

Như Johnathan đã đề xuất, bạn có thể muốn lưu nó vào cookie hoặc một phiên.

Cách dễ dàng hơn sẽ là sử dụng biến Phiên.

session_start();
if(!isset($_SESSION['org_referer']))
{
    $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}

Đặt nó ở đầu trang và bạn sẽ luôn có thể truy cập giới thiệu đầu tiên mà khách truy cập trang web được hướng dẫn.


4

Lưu trữ nó trong một cookie chỉ tồn tại trong phiên duyệt hiện tại


4

Sử dụng Cookie làm kho lưu trữ trang tham chiếu tốt hơn nhiều trong hầu hết các trường hợp, vì cookie sẽ giữ liên kết giới thiệu cho đến khi trình duyệt bị đóng (và sẽ giữ nó ngay cả khi tab trình duyệt bị đóng), vì vậy trong trường hợp nếu người dùng để trang mở, hãy giả sử trước các ngày cuối tuần và quay lại sau một vài ngày, phiên của bạn có thể sẽ hết hạn, nhưng cookie vẫn sẽ ở đó.

Đặt mã đó ở đầu trang (trước bất kỳ đầu ra html nào, vì cookie sẽ chỉ được đặt đúng trước bất kỳ echo / print):

if(!isset($_COOKIE['origin_ref']))
{
    setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}

Sau đó, bạn có thể truy cập nó sau:

$var = $_COOKIE['origin_ref'];

Và ngoài những gì @pcp đã đề xuất về cách thoát $ _SERVER ['HTTP_REFERER'], khi sử dụng cookie, bạn cũng có thể muốn thoát $ _COOKIE ['origin_ref'] theo từng yêu cầu.


-4

thử cái này

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)

Đây là về việc nhận được IP ADDRESSnhưng bài đăng là về REFERERtrang web dẫn đến trang được đề cập.
Sanxofon
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.