2013-02-02 29 views
7

मैं निम्नलिखित पीएचपी रीडायरेक्ट स्क्रिप्ट है:मूल रेफरर फ़ील्ड को संरक्षित करने के लिए रीडायरेक्ट कैसे करें?

if ($country=="IL") { header('Location: http://iquality.itayb.net/index-he.html'); } 
else { header('Location: http://iquality.itayb.net/index-en.html'); } 

यह विभिन्न पृष्ठों पर रीडायरेक्ट $country के मूल्य के अनुसार। रेफरर रीडायरेक्शन पेज बन जाता है।

मैं मूल संदर्भकर्ता फ़ील्ड को कैसे संरक्षित कर सकता हूं?

+0

हाँ, आप इसे बचाने की जरूरत है पुनर्निर्देशन से पहले। –

+0

यह रीडायरेक्ट 302 कोड के साथ लोड नहीं करता है? यदि हां, तो इसे मूल संदर्भकर्ता को तब तक संरक्षित करना चाहिए जहां तक ​​मैंने परीक्षण किया है। – rockyraw

उत्तर

10

आप header('Referer: SOME_REFERER_URL') का उपयोग नहीं कर सकते क्योंकि ब्राउज़र इसे किसी भी तरह से ओवरराइट करेगा।

उपयोगकर्ता सत्र में
  1. सहेजें संदर्भित:

    रीडायरेक्ट लक्ष्य के मालिक हैं iquality.itayb.net फिर वहाँ यह करने के लिए कई तरीके हैं। पैरामीटर के रूप में

    // in your first script save real referer to session 
    $_SESSION['REAL_REFERER'] = $_SERVER['HTTP_REFERER']; 
    
    // in the redirected script extract referer from session 
    $referer = ''; 
    if (isset($_SESSION['REAL_REFERER'])) { 
        $referer = $_SESSION['REAL_REFERER']; 
        unset($_SESSION['REAL_REFERER']); 
    } 
    else { 
        $referer = $_SERVER['HTTP_REFERER']; 
    } 
    
  2. संदेश संदर्भित:

    // in your first script 
    header('Location: http://iquality.itayb.net/index-he.html?referer=' . $_SERVER['HTTP_REFERER']); 
    
    // in your refered script extract from the parameter 
    $referer = ''; 
    if (isset($_REQUEST['referer'])) { 
        $referer = $_REQUEST['referer']; 
    } 
    else { 
        $referer = $_SERVER['HTTP_REFERER']; 
    } 
    

आप धोखा देने के लिए किसी अन्य सर्वर तो कुछ इस तरह उपयोग करना चाहते हैं:

$host = 'www.yourtargeturl.com'; 
$service_uri = '/detect_referal.php'; 
$vars ='additional_option1=yes&additional_option2=un'; 

$header = "Host: $host\r\n"; 
$header .= "User-Agent: PHP Script\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Referer: {$_SERVER['HTTP_REFERER']} \r\n"; 
$header .= "Content-Length: ".strlen($vars)."\r\n"; 
$header .= "Connection: close\r\n\r\n"; 

$fp = fsockopen("".$host,80, $errno, $errstr); 
if (!$fp) { 
    echo "$errstr ($errno)<br/>\n"; 
    echo $fp; 
} else { 
    fputs($fp, "POST $service_uri HTTP/1.1\r\n"); 
    fputs($fp, $header.$vars); 
    fwrite($fp, $out); 

    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
+0

यह दो 'HTTP_REFERRER' के बजाय jurst onr R 'HTTP_REFERER' के साथ नहीं है? – Falk

+0

'detect_referal.php' क्या है? – rockyraw