php - 仅当从我的推荐网站加载网站时如何执行脚本?
问题描述
我希望我的脚本仅在用户来自特定网站时才起作用。就像我有一个网站 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 网站在后台打开,则脚本也运行。
解决方案
请注意,如果您可以访问 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{
}
推荐阅读
- javascript - 我正在 reactJS 中使用 axios 进行 API 调用,但得到的结果比预期的要多
- php - 如何修复“laravel 邮件发送在本地主机上工作的实时服务器上不起作用”?
- javascript - Javascript 在 Internet Explorer 中不起作用,但在所有其他浏览器中不起作用。为什么?
- mysql - Hive ParseException 缺少 Pivot 的 EOF
- swift - Swift用嵌套字典替换字典数组中的键值
- exception - SICStus Prolog 中的 create_mutable/2
- python - discord.py-rewrite - 如何为某些用户覆盖和更改冷却时间?
- python - 如何从裁剪的 numpy 矩形中定义顶部和左侧点?
- javascript - 注册表单 + Stripe JS - 我必须点击两次提交
- python - python龙卷风404与vuejs