【发布时间】:2022-01-15 17:46:01
【问题描述】:
我正在做一个项目,但由于缺乏知识而受阻。该代码有效,但我不知道网站 3 是否将其视为被人类点击。
让我解释一下:我总共有 3 个网站。
-
点击按钮时网站 1 会重定向到网站 2。
-
网站 2 检查推荐人是否来自网站 1 并自动重定向到网站 3。
我需要重定向(网站 2 -> 网站 3)看起来好像按钮是被人点击的,而不是显示我已自动重定向它。
到目前为止的代码:
if (isset($_SERVER['HTTP_REFERER'])) {
$url_info = parse_url($_SERVER['HTTP_REFERER']);
$countCharacter = substr_count($url_info['host'], '.');
if($countCharacter == 2){
$eldominio = explode(".", $url_info['host']);
$elhost = $eldominio[1];
}else if($countCharacter == 1){
$eldominio = explode(".", $url_info['host']);
$elhost = $eldominio[0];
}
//if referrer contain $elhost
if($elhost == 'website1' || $elhost == 'website2'){
$tieneHostaff = "yes";
}else{//no host}
} else { // referrer does not exist
session_start();
if($tieneHostaff=="yes" && isset($_GET['q']) && !empty($_GET['q'])){
//Create sessions and delete actual referrer
$_SESSION['nombre'] = "y";
$_SESSION['producto'] = $_GET['q'];
echo "<script>window.location.reload(true);</script>";
exit();
}
if($_SESSION['nombre'] == "y"){
// Destroy session and redirect to website 3
session_unset();
echo "<script>window.location.href = 'https://website3.com/".$_SESSION['producto']."'</script>";
exit();
}
我需要最后一部分来制作重定向(网站 2 -> 网站 3),就好像它被人点击一样。
在下面的代码中,我得到了它,但我不知道这是最好的方法还是正确的:
if($_SESSION['nombre'] == "y"){
// Destroy session and redirect to website 3
session_unset();
echo "<script>window.location.href = 'https://website3.com/".$_SESSION['producto']."'</script>";
exit();
}
网站 3 检查引荐来源网址和所有内容以发现这是人工点击
【问题讨论】:
-
良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
-
你能解释一下“看起来像人类点击”的东西是什么意思吗?谁需要意识到这一点?用户,服务器的日志?您不希望用户知道发生了重定向吗?
-
@ChrisHaas 我需要自动从网站 2 重定向到网站 3。网站 3 不必知道它已被自动重定向,它必须看到它就像用户点击了链接并已被重定向到网站 3.
-
没有“HasClicked”HTTP 标头。 :) 此外,会话 ID 与 HTTP 引用者无关。不建议依赖referer 标头的存在,因为用户(或他们安装的扩展程序)可能已经关闭了浏览器的发送referer 信息。
标签: javascript php redirect web-crawler