Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/300.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 - Fatal编程技术网

Php 如何仅在从我的参考网站加载网站时执行脚本?

Php 如何仅在从我的参考网站加载网站时执行脚本?,php,Php,我希望我的脚本工作,只有当用户来自一个特定的网站。就像我有一个网站example.com一样,所以若用户通过example.com访问,那个么只有运行脚本才能给出错误 我目前使用的代码如下所示 $referer = parse_url($_SERVER['HTTP_REFERER']); $refer = $referer['host']; if ($refer == "example.com") { } else { 这个代码可以工作,但很多时候网站并没有选择引用。即使选项

我希望我的脚本工作,只有当用户来自一个特定的网站。就像我有一个网站example.com一样,所以若用户通过example.com访问,那个么只有运行脚本才能给出错误

我目前使用的代码如下所示

 $referer = parse_url($_SERVER['HTTP_REFERER']);
 $refer = $referer['host'];

 if  ($refer == "example.com") { 

 }
 else {
这个代码可以工作,但很多时候网站并没有选择引用。即使选项卡在后台打开而不是在引用中打开,脚本运行的方式也是如此,如2个条件

比如:如果refere是example.com=脚本运行,或者example.com网站在后台打开,那么脚本也会运行

注意:如果您同时访问example.com和example2.com,则此答案有效

首先,您需要将请求从example.com发送到example2.com,如上图所示,然后将该请求保存到数据库

现在您有了用户的IP地址和他/她上次打开example.com的时间,这样您就可以通过比较example.com上次发送有关该用户的Ajax请求(由IP地址标识)和当前时间(因此,如果1-2秒之间存在差异,那么example2.com不可避免地位于后台)来知道他/她当前是否正在打开example.com

你的代码应该是这样的

$current_user_ip = get_ip(); // write a function that can get user IP

$fetch = ['ip_addr' => 'xxxxxx','timestamp' => '556654646']; //SELECT * FROM {table_name} WHERE ip_addr = $get_ip;

$user_ip = $fetch['ip_addr'];
$timestamp = $fetch['timestamp'];

$referer = parse_url($_SERVER['HTTP_REFERER']);
$refer = $referer['host'];

if  ($refer == "example.com" ||  ($current_user_ip == $user_ip && (time() - $timestamp) <= 1 /* 1 sec */  ) ) { 

}else{

}
$current_user_ip=get_ip();//编写一个可以获取用户IP的函数
$fetch=['ip_addr'=>'xxxxxx','timestamp'=>'556654646']//从{table_name}中选择*其中ip_addr=$get_ip;
$user_ip=$fetch['ip_addr'];
$timestamp=$fetch['timestamp'];
$referer=parse_url($_SERVER['HTTP_referer']);
$referer=$referer['host'];

如果($refere==“example.com”| |($current_user_ip==$user_ip&&&(time()-$timestamp))没有引用,因为
未定义!=“example.com”
因此测试将为false,而您的
else
代码将运行。但是,像cURL这样的程序或库可以撒谎并发送他们想要的任何引用头。我希望我的脚本仅在满足两个条件中的任何一个条件时加载。我应该编辑什么代码。服务器脚本不知道如何打开网站。不工作,兄弟,引用工作正常毫无疑问。但我也希望这样,如果网站“example.com”在后台打开(比如不需要引用),那么脚本也会运行。因为很多时间$refere都不起作用。你可以访问这两个网站吗?