ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 如何重定向保留原始引用者字段?

2019-10-05 12:32:40  阅读:189  来源: 互联网

标签:url-redirection php redirect


我有以下PHP重定向脚本:

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

根据$country的值,这会将用户重定向到不同的页面.引荐者成为重定向页面本身.

如何保留原始引荐来源字段?

解决方法:

您不能使用标题(‘Referer:SOME_REFERER_URL’),因为浏览器无论如何都会覆盖它.

如果你拥有重定向的目标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'];
}

>发送referer作为参数:

// 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);
}

标签:url-redirection,php,redirect
来源: https://codeday.me/bug/20191005/1856107.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有