【问题标题】:How to redirect a specific user from multiple websites?如何从多个网站重定向特定用户?
【发布时间】:2021-06-16 06:55:52
【问题描述】:

我有几个网站共同构成了(可变)时间段的用户体验。用户完成体验后,如果他们尝试返回任何站点,我希望能够将他们重定向到特定页面。我认为一个会话可能是可能的,但这不适用于多个站点?是否更容易,如果是,我将如何进行,获取用户 IP,然后重定向它们?

【问题讨论】:

  • $_SERVER['REMOTE_ADDR'] 为您提供客户端 IP。
  • 所以当我想实现它时,我可以说 $_SERVER['REMOTE_ADDR'] = Foo.然后在每个站点上进行重定向 if $_SERVER['REMOTE_ADDR'] = Foo?
  • 可能。要记住的是REMOTE_ADDR 可以被欺骗。它也可以出于合法原因(例如 ISP 向用户提供动态 ip)或不那么合法的原因(使用代理)进行更改。根据他的 IP 识别用户充其量是一个非常薄弱的​​尝试。阅读 this 了解查找客户端 ip 的简单实现。

标签: php redirect


【解决方案1】:

IP是你说的一种方式,我推荐使用Cookies。用户完成体验后,您可以拥有一个 cookie/标志,因此当您的服务器读取此标志时,它会随时重定向用户。

它是特定于浏览器的,但我仍然认为它是最佳解决方案。

【讨论】:

  • 您对我如何实现这一点有什么建议吗?是否类似于登录会话检查?
  • 嗯,这取决于您在服务器端使用的语言。例如,如果您使用 PHP,这里是一个示例:w3schools.com/php/php_cookies.asp Session 是不同的。它就像服务器端的内存,每个用户都可以独占访问它(它不是共享的)。缓存是另一回事。它就像服务器端的内存,但它是共享的,可供所有用户访问。 Cookie 存在于客户端、浏览器中。
  • 啊,我明白了。我尝试将代码设为 w3,但当我转到其他站点时它无法识别 cookie。当我查看它时,这似乎是不可能的。
【解决方案2】:

Cookie 不再适用于各个网站,而且 IP 一直在变化。

如果您正在构建一个玩具项目,也许任何一种解决方案都“足够好”,但如果您正在做一些需要可靠工作的事情,您可能应该构建一个用户被重定向到的中心站点,然后用代码重定向回来(类似于 OAuth2 的单点登录系统)。

我认为完全进入“如何”构建它有点超出了 Stack Overflow 的范围,但这将是我的一般方法。

【讨论】:

  • 啊,很高兴知道。虽然“足够好”的解决方案并不理想,但它主要是一种威慑,所以我认为现在就足够了。我想大多数人无论如何都不会重温它。
【解决方案3】:

使用 _$SERVER["REMOTE_ADDR"] 获取访问者 ip

然后使用 fwrite() 保存他们的 ip。

然后使用 strpos() 将保存的 ip 与当前访问者的 ip 进行匹配。

您可以在任何地方使用 file_get_contents(),甚至可以在不同的网站上使用。

在某种程度上:

file_get_contents('http://website/filename.txt');//use this on different site.

代码是这样的:

<?php
$clien = $_SERVER["REMOTE_ADDR"]; //Get Visitor Ip

$var = "$clien - "; //add a separator so it doesn't get messy

$fp = fopen('filename.txt', 'a');//opens file in append mode

$file = file_get_contents('filename.txt'); //Get the saved ip

if(strpos($file, $clien) !==false){  //if visitor ip match with the saved ip
//Enable header below if you wanna redirect current visitor 
//header( "Refresh:3; url=http://www.example.com/page2.php");
    echo"You are Cant acces this page";
} else { //if Ip not found
    
        $_SESSION["sesi"] = $clien;

    echo"You are New visitor";
    fwrite($fp, $var);// Save visitor ip
}

注意:访问者可以使用 vpn 进行欺骗

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2016-06-18
    相关资源
    最近更新 更多