首页 > 解决方案 > 仅当从我的推荐网站加载网站时如何执行脚本?

问题描述

我希望我的脚本仅在用户来自特定网站时才起作用。就像我有一个网站 example.com,所以如果用户来自 example.com,那么只有脚本运行否则会出错。

我目前正在使用此代码,如下所示。

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

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

 }
 else {

此代码有效,但很多时候网站不选择引用。即使选项卡在后台打开而不是引用,脚本运行的任何方式也是如此,例如 2 个条件。

喜欢:如果引用是 example.com = Script Runs 或如果 example.com 网站在后台打开,则脚本也运行。

标签: php

解决方案


请注意,如果您可以访问 example.com 和 example2.com,则此答案有效

在此处输入图像描述

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

现在您有了用户 IP 地址和他/她上次打开 example.com 的时间,因此您可以通过比较 example.com 上次发送有关此用户的 Ajax 请求(由 IP 地址识别)来知道他/她当前是否正在打开 example.com ) 和当前时间(因此,如果 1-2 秒之间存在差异,那么 example2.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{

}

推荐阅读