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?

Keith Donegan
sumber

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"];
Sampson
sumber
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.

Tyler Carter
sumber
4

Simpan di cookie yang hanya bertahan untuk sesi penjelajahan saat ini

Matt
sumber
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.

Kainax
sumber
-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']
    )
)
pengguna11688571
sumber
Ini tentang mendapatkan IP ADDRESStetapi posting tentang REFERERhalaman web yang mengarah ke yang dimaksud.
Sanxofon