2012-01-29 25 views
22

Tôi muốn có một trang 404 có thể phát hiện nếu người dùng đã truy cập trang đó qua trang web của tôi, qua URL rút gọn của tôi hoặc qua một trang web khác và tôi đang sử dụng nó bằng PHP. Tôi dần dần nắm bắt được PHP và điều này cũng có thể là một câu hỏi đơn giản, nhưng tôi khá mệt mỏi để trung thực và không có caffeine trong hệ thống của mình, và tôi muốn kết thúc bất kỳ kết thúc nào trong danh mục của mình càng sớm càng tốt .

Tôi đã tìm thấy biến số $_SERVER['HTTP_REFERER']; PHP cung cấp cho tôi toàn bộ URL, đây là bước khởi đầu. Có cách nào mà điều này có thể chỉ cho tôi miền gốc, hoặc thông qua một biến hoặc hàm khác, nhớ rằng một số liên kết giới thiệu có thể sử dụng http: // và một số https: // (đơn giản là bắt đầu từ ký tự thứ bảy không phải lúc nào cũng hoạt động)? Bằng cách đó, tôi có thể so khớp URL dựa trên hai (hoặc nhiều) địa chỉ được xác định trước và tạo nội dung có liên quan đến tên miền đó.

Trả lời

37
parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) 

Xem http://php.net/manual/en/function.parse-url.php.

Lưu ý rằng mặc dù người giới thiệu rất dễ bị giả mạo, vì vậy nó hầu như không đáng tin cậy.

+0

Đó là tuyệt vời! Điều đó hoạt động hoàn hảo, ngoài thực tế là tôi không thể làm tương tự với 301 URL được chuyển hướng, điều mà tôi nghĩ có thể gây ra sự cố với trình rút ngắn URL của tôi. Không có vấn đề, tôi sẽ tìm một cách. –

+0

Nhân tiện, các URL giả mạo dễ dàng như thế nào? Ai đó có thể dễ dàng giả mạo tên miền của tôi? Làm sao? –

+0

Tôi đang nói * referer * rất dễ bị giả mạo. Nó chỉ là tùy ý, tùy chọn, dữ liệu tự nguyện gửi trong tiêu đề HTTP của yêu cầu. Khách hàng có thể gửi bất cứ điều gì nó muốn ở đó. Có các plugin trình duyệt sẽ thay đổi người giới thiệu thành bất kỳ thứ gì bạn thích. – deceze

0

này nên làm:

$_SERVER['SERVER_NAME'] 
+0

Không thực sự là một lựa chọn rất tốt như nếu bạn sử dụng một tên miền phụ như 'potato.domain.com' và bạn muốn nhận được' domain.com' là kết quả của bạn, điều này sẽ thất bại. OP đã làm nhà nước _root domain_ – Cassandra

Các vấn đề liên quan