Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我该如何写一个条件语句来检查访问者是否来自某个特定站点?_Php_Mysql_Conditional - Fatal编程技术网

Php 我该如何写一个条件语句来检查访问者是否来自某个特定站点?

Php 我该如何写一个条件语句来检查访问者是否来自某个特定站点?,php,mysql,conditional,Php,Mysql,Conditional,我想的是。。。在一次收购活动中,我们将有来自某个特定网站的人,他们想知道我如何在我的网站的某个部分设置条件,以显示感谢信息而不是注册表格,因为他们在进入我的登录页之前有机会填写此信息 我见过这样的解决方案:$referal=mysql\u real\u escape\u string($\u SERVER['HTTP\u REFERER']) 我想知道这是不是让它工作的最好方法 ->>>好吧,这就是我认为可能有效的方法。第三方网站指的是我们的登录页的人,一旦在该网站上的表格已经填写完毕,可以将一

我想的是。。。在一次收购活动中,我们将有来自某个特定网站的人,他们想知道我如何在我的网站的某个部分设置条件,以显示感谢信息而不是注册表格,因为他们在进入我的登录页之前有机会填写此信息

我见过这样的解决方案:$referal=mysql\u real\u escape\u string($\u SERVER['HTTP\u REFERER'])

我想知道这是不是让它工作的最好方法

->>>好吧,这就是我认为可能有效的方法。第三方网站指的是我们的登录页的人,一旦在该网站上的表格已经填写完毕,可以将一个隐藏的输入值“www.sample.com”或其他任何。。。然后我可以让一些东西检查这个特定的值,然后触发圆锥曲线


这听起来对吗?

$\u服务器['HTTP\u REFERER']
是关于访问者来自何处的最可靠信息。而且它一点也不可靠。有些浏览器可能被配置为根本不发送那个标题,任何人都可以发送错误的信息,如果他们愿意的话,可以声称这些信息来自

考虑到这一点,这里似乎没有考虑到完美的可靠性,您只是希望为访问者节省一些时间,使用正确的
HTTP\u REFERER
set

在这种情况下,将该值的开头部分与www.example.com地址进行比较是最好的方法,您希望访问者在该地址中使用预先填写的注册信息

下面是一个例子:

$site = "http://www.sample.com/";
if (!empty($_SERVER['HTTP_REFERER']) &&
        substr($_SERVER['HTTP_REFERER'], 0, strlen($site)) == $site) {
    //if execution reaches this point, user claims he came from www.sample.com
}

根据您的总体使用情况,我认为最好的方法是让您的网站通过一个特别帖子或获取参数,无论哪个合适。

如果您不知道这听起来是否正确,您将很难实现它

你能做的是:

  • 检查推荐人。它位于变量
    $\u SERVER['HTTP\u REFERER']
    中,但您不需要在其周围使用mysql\u real\u转义字符串来检查用户是否来自特定站点。请注意,referer基本上是“用户定义的”,因此您既不能依赖它,也不能信任它

  • 如果他们必须填写表格,只需添加一个
    ,我添加了在你发布答案之前我正在编写的示例。希望你不介意。好的。。。为了避免使用HTTP_REFERER,我可以让他们将某个值推送到我的数据库中。当填写该表格的访问者提交时,他们会被带到我们的网站。现在的问题是,在页面加载时,我是否可以检查该值是否是此persons记录的一部分?如果您能够与其他站点协作,请他们在您的数据库中插入一个唯一的ID,然后重定向到URL中包含该ID的站点上的脚本。这样就很容易准确地告诉你看到的是谁。@Matthew如果流是你的站点->另一个站点->你的站点,并且你可以控制另一个站点,那么你可以创建一个唯一的令牌,将用户转发到另一个站点,并在用户提交表单时让另一个站点将该令牌传递给你(例如,作为303转发的一部分,或者,不太推荐,直接在您的站点上使用表单操作)。您必须在生成唯一令牌时将其存储在数据库中,并在用户返回您的站点时使其无效。@Artefactor-好的,我们可以控制站点和这些人来自的表单。我只需要知道我是否选择通过隐藏输入传递值,并在他们被删除时检查该值一旦他们提交表单,CTO就可以访问我们的网站。如果是这样,我想知道语法是什么样子。如果这是重复的,我很抱歉,但这有点超出了我对php和条件的了解。+1,我同意。如果你能控制引用的网站,那么发送POST或GET参数比$\u服务器更可靠['HTTP\u REFERER']。真的,这是无关紧要的。如果访问者知道他应该来自哪个站点,他还可以添加特殊的GET或POST参数。如果他知道他应该来自哪个站点,但不知道特定页面(因此不知道要添加哪个参数),则可以匹配
    $\u服务器['HTTP\u REFERER']
    针对该特定页面,您将拥有相同级别的…“安全性”。