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