2011-05-23 29 views
0

我正在嘗試將我的網絡中的用戶重定向到基於IP和空白引用鏈接的網站上的特定着陸頁。此代碼可以工作,但最終會在重定向循環中結束。我如何擺脫重定向循環以正確重定向用戶?謝謝!基於IP和引用鏈接的PHP重定向

$visitor = $_SERVER['HTTP_REFERER']; 
$clientip = $_SERVER['REMOTE_ADDR']; 
$ip = a regex list of IPs; 
if (empty($visitor)) 
{ 
    if (preg_match($ip, $clientip)) { 
     header('Location: http://example.com'); 
      die(); 
      } 
} 
+4

的參考是一個可選的頭。假設它是空的意味着這是一個非常糟糕的主意,這意味着這是他們第一次在會話期間訪問該網站。 – Quentin 2011-05-23 15:43:44

+2

Quentin說什麼 - 還要注意一些代理和「安全套件」會刪除這個標題,無論用戶是否想要它們(所以它不總是「好的,用戶需要重新啓用它」)。 – Piskvor 2011-05-23 15:50:15

回答

3

添加一個會話,你知道,他們已經重定向用戶:

session_start(); 
$visitor = $_SERVER['HTTP_REFERER']; 
$clientip = $_SERVER['REMOTE_ADDR']; 
$ip = a regex list of IPs; 
if (empty($visitor)) 
{ 

    //add on if they did not redirect yet. 
    if (preg_match($ip, $clientip) && 
     (!isset($_SESSION['redirect']) || !$_SESSION['redirect'])) { 
     $_SESSION['redirect'] = true; 
     header('Location: http://example.com'); 
     die(); 
    } 

} 
+0

好奇。爲什麼要爲此創建服務器端文件?不會簡單的Cookie足夠嗎? – webbiedave 2011-05-23 15:57:23

+0

@webbiedave可以吃,會議不能輕鬆 – Neal 2011-05-23 15:59:08

+0

完美。這正是我需要的。非常感謝! – Jordan 2011-05-23 16:17:11