Dapatkan perujuk URL asli dengan PHP?


110

Saya menggunakan $_SERVER['HTTP_REFERER'];untuk mendapatkan Url perujuk. Ini berfungsi seperti yang diharapkan sampai pengguna mengklik halaman lain dan perujuk berubah ke halaman terakhir.

Bagaimana cara menyimpan Url pengarah asli?

Jawaban:


137

Simpan baik dalam cookie (jika dapat diterima untuk situasi Anda), atau dalam variabel sesi.

session_start();

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

13
Harap perhatikan saran @pcp dalam jawaban di bawah ini!
d -_- b

6
Perhatikan bahwa Anda juga harus memeriksa apakah http_refererada, karena seringkali tidak, yang dapat menyebabkan kesalahan "Indeks tidak ditentukan".
Justin

17

Seperti yang disarankan Johnathan, Anda mungkin ingin menyimpannya dalam cookie atau sesi.

Cara yang lebih mudah adalah dengan menggunakan variabel Sesi.

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

Letakkan itu di bagian atas halaman, dan Anda akan selalu dapat mengakses pengarah pertama yang diarahkan oleh pengunjung situs.


4

Simpan di cookie yang hanya bertahan untuk sesi penjelajahan saat ini


4

Menggunakan Cookie sebagai tempat penyimpanan halaman referensi jauh lebih baik dalam banyak kasus, karena cookie akan menyimpan pengarah sampai browser ditutup (dan akan menyimpannya bahkan jika tab browser ditutup), jadi jika pengguna membiarkan halaman terbuka, katakanlah sebelum akhir pekan, dan dikembalikan setelah beberapa hari, sesi Anda mungkin akan kedaluwarsa, tetapi cookie akan tetap ada.

Letakkan kode itu di awal halaman (sebelum keluaran html apa pun, karena cookie hanya akan disetel dengan benar sebelum echo / print):

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

Kemudian Anda dapat mengaksesnya nanti:

$var = $_COOKIE['origin_ref'];

Dan selain apa yang disarankan @pcp tentang meng-escape $ _SERVER ['HTTP_REFERER'], saat menggunakan cookie, Anda mungkin juga ingin meng-escape $ _COOKIE ['origin_ref'] pada setiap permintaan.


-4

coba ini

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

Ini tentang mendapatkan IP ADDRESStetapi posting tentang REFERERhalaman web yang mengarah ke yang dimaksud.
Sanxofon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.