รับตัวอ้างอิง URL ดั้งเดิมด้วย PHP หรือไม่


110

ฉันกำลังใช้$_SERVER['HTTP_REFERER'];เพื่อรับ URL อ้างอิง ทำงานตามที่คาดไว้จนกว่าผู้ใช้จะคลิกหน้าอื่นและผู้อ้างอิงเปลี่ยนไปยังหน้าสุดท้าย

ฉันจะจัดเก็บ URL อ้างอิงดั้งเดิมได้อย่างไร

คำตอบ:


137

เก็บไว้ในคุกกี้ (หากยอมรับได้สำหรับสถานการณ์ของคุณ) หรือในตัวแปรเซสชัน

session_start();

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

13
โปรดสังเกตคำแนะนำของ @pcp ในคำตอบด้านล่าง!
ง -_- ข

6
โปรดทราบว่าคุณควรตรวจสอบด้วยว่าhttp_refererมีอยู่จริงหรือไม่ซึ่งมักไม่เกิดขึ้นซึ่งอาจทำให้เกิดข้อผิดพลาด "ดัชนีที่ไม่ได้กำหนด"
Justin

17

ตามที่ Johnathan แนะนำคุณอาจต้องการบันทึกไว้ในคุกกี้หรือเซสชัน

วิธีที่ง่ายกว่าคือการใช้ตัวแปรเซสชัน

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

วางไว้ที่ด้านบนสุดของหน้าและคุณจะสามารถเข้าถึงผู้อ้างอิงรายแรกที่ผู้เยี่ยมชมไซต์ได้รับการแนะนำ


4

เก็บไว้ในคุกกี้ที่คงอยู่ในเซสชันการเรียกดูปัจจุบันเท่านั้น


4

การใช้ Cookie เป็นที่เก็บหน้าอ้างอิงนั้นดีกว่ามากในกรณีส่วนใหญ่เนื่องจากคุกกี้จะเก็บผู้อ้างอิงไว้จนกว่าจะปิดเบราว์เซอร์ (และจะเก็บไว้แม้ว่าแท็บเบราว์เซอร์จะปิดอยู่ก็ตาม) ดังนั้นในกรณีที่ผู้ใช้เปิดหน้าทิ้งไว้สมมติว่า ก่อนวันหยุดสุดสัปดาห์และกลับมาหลังจากนั้นสองสามวันเซสชันของคุณอาจจะหมดอายุ แต่คุกกี้จะยังคงอยู่ที่นั่น

วางรหัสนั้นไว้ที่จุดเริ่มต้นของหน้า (ก่อนเอาต์พุต html ใด ๆ เนื่องจากคุกกี้จะได้รับการตั้งค่าอย่างถูกต้องก่อนเสียงสะท้อน / พิมพ์ใด ๆ ):

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

จากนั้นคุณสามารถเข้าถึงได้ในภายหลัง:

$var = $_COOKIE['origin_ref'];

และนอกเหนือจากสิ่งที่ @pcp แนะนำเกี่ยวกับการหลีกเลี่ยง $ _SERVER ['HTTP_REFERER'] เมื่อใช้คุกกี้คุณอาจต้องการหลีกเลี่ยง $ _COOKIE ['origin_ref'] ในแต่ละคำขอ


-4

ลองดู

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

นี่คือการรับIP ADDRESSแต่โพสต์เกี่ยวกับREFERERหน้าเว็บที่นำไปสู่หน้าเว็บที่มีปัญหา
Sanxofon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.