ฉันกำลังใช้$_SERVER['HTTP_REFERER'];
เพื่อรับ URL อ้างอิง ทำงานตามที่คาดไว้จนกว่าผู้ใช้จะคลิกหน้าอื่นและผู้อ้างอิงเปลี่ยนไปยังหน้าสุดท้าย
ฉันจะจัดเก็บ URL อ้างอิงดั้งเดิมได้อย่างไร
ฉันกำลังใช้$_SERVER['HTTP_REFERER'];
เพื่อรับ URL อ้างอิง ทำงานตามที่คาดไว้จนกว่าผู้ใช้จะคลิกหน้าอื่นและผู้อ้างอิงเปลี่ยนไปยังหน้าสุดท้าย
ฉันจะจัดเก็บ URL อ้างอิงดั้งเดิมได้อย่างไร
คำตอบ:
เก็บไว้ในคุกกี้ (หากยอมรับได้สำหรับสถานการณ์ของคุณ) หรือในตัวแปรเซสชัน
session_start();
if ( !isset( $_SESSION["origURL"] ) )
$_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
http_referer
มีอยู่จริงหรือไม่ซึ่งมักไม่เกิดขึ้นซึ่งอาจทำให้เกิดข้อผิดพลาด "ดัชนีที่ไม่ได้กำหนด"
ตามที่ Johnathan แนะนำคุณอาจต้องการบันทึกไว้ในคุกกี้หรือเซสชัน
วิธีที่ง่ายกว่าคือการใช้ตัวแปรเซสชัน
session_start();
if(!isset($_SESSION['org_referer']))
{
$_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}
วางไว้ที่ด้านบนสุดของหน้าและคุณจะสามารถเข้าถึงผู้อ้างอิงรายแรกที่ผู้เยี่ยมชมไซต์ได้รับการแนะนำ
เก็บไว้ในคุกกี้ที่คงอยู่ในเซสชันการเรียกดูปัจจุบันเท่านั้น
การใช้ Cookie เป็นที่เก็บหน้าอ้างอิงนั้นดีกว่ามากในกรณีส่วนใหญ่เนื่องจากคุกกี้จะเก็บผู้อ้างอิงไว้จนกว่าจะปิดเบราว์เซอร์ (และจะเก็บไว้แม้ว่าแท็บเบราว์เซอร์จะปิดอยู่ก็ตาม) ดังนั้นในกรณีที่ผู้ใช้เปิดหน้าทิ้งไว้สมมติว่า ก่อนวันหยุดสุดสัปดาห์และกลับมาหลังจากนั้นสองสามวันเซสชันของคุณอาจจะหมดอายุ แต่คุกกี้จะยังคงอยู่ที่นั่น
วางรหัสนั้นไว้ที่จุดเริ่มต้นของหน้า (ก่อนเอาต์พุต html ใด ๆ เนื่องจากคุกกี้จะได้รับการตั้งค่าอย่างถูกต้องก่อนเสียงสะท้อน / พิมพ์ใด ๆ ):
if(!isset($_COOKIE['origin_ref']))
{
setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}
จากนั้นคุณสามารถเข้าถึงได้ในภายหลัง:
$var = $_COOKIE['origin_ref'];
และนอกเหนือจากสิ่งที่ @pcp แนะนำเกี่ยวกับการหลีกเลี่ยง $ _SERVER ['HTTP_REFERER'] เมื่อใช้คุกกี้คุณอาจต้องการหลีกเลี่ยง $ _COOKIE ['origin_ref'] ในแต่ละคำขอ
ลองดู
(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
หน้าเว็บที่นำไปสู่หน้าเว็บที่มีปัญหา