Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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_Javascript - Fatal编程技术网

是否可以检查请求是否来自<;脚本>;PHP中的标签?

是否可以检查请求是否来自<;脚本>;PHP中的标签?,php,javascript,Php,Javascript,我希望我的test.php只在它来自时执行,这可能吗?不,这不可能。标记中的内容只会作为普通页面被请求,而且(AFAIK)没有浏览器发送任何特殊的标题或任何可以帮助您(可靠地)识别它来自标记的内容 也许如果你解释一下为什么要这样做,我们可以想出一个更好的解决方案 我会继续提醒你,如果你打算用它来阻止人们看到或复制你的JS源代码,那就忘了它吧。根本没有办法做到这一点。JS代码必须可供浏览器使用,这意味着它也可供用户使用。如果“test.php?source=script”> 编辑: 测试REFER

我希望我的
test.php只在它来自
时执行,这可能吗?

不,这不可能。
标记中的内容只会作为普通页面被请求,而且(AFAIK)没有浏览器发送任何特殊的标题或任何可以帮助您(可靠地)识别它来自
标记的内容

也许如果你解释一下为什么要这样做,我们可以想出一个更好的解决方案

我会继续提醒你,如果你打算用它来阻止人们看到或复制你的JS源代码,那就忘了它吧。根本没有办法做到这一点。JS代码必须可供浏览器使用,这意味着它也可供用户使用。

如果“test.php?source=script”>

编辑: 测试REFERER解决方案
$\u服务器['HTTP\u REFERER']
$\u服务器['HTTP\u用户代理']
结果如下

localhost/a.php调用testjs.php

<script src="test.php"></script>
在a.php中(调用者)

在testjs.php中

<script src="test.php"></script>
document.writeln(“

”); //输出http://localhost/a.php 书面文件(“

”); //输出//Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.9.2.9)Gecko/20100824 Firefox/3.6.9

我是否遗漏了它所说的来自脚本src的调用?

无论脚本元素是如何创建的,浏览器通常会为包含包含脚本链接的页面URL的脚本请求发送一个“Referer”(sic)头

这可以通过检查PHP中的$\u SERVER['HTTP\u REFERER']变量(注意拼写异常)来访问

这个想法是,你可以检查这个变量,看看它是否引用了你网站的一部分


注意,这个变量并不总是准确的;用户可以选择不发送referer头(使用一些小的隐私工具)来保护自己的隐私,甚至可以修改浏览器以发送此字段中的任何内容。因此,不应依赖它进行身份验证,除非您还考虑到即使是合法用户也可能将其留空或在其中输入任意字符串。

是什么阻止用户在地址栏中键入该内容?可能是重复的,而不是完全重复的,这个问题是针对PHP的,而那个问题是针对JavaScript的。实际上,我现在看到的另一个问题并不是完全相同的,但它可能会有所帮助。@BoltClock是独角兽,他们都是关于JavaScript的,但这一个是关于从PHP检测它的引用,另一个是关于从一些服务器端语言检测它,但我们不知道它是否是PHP。而这似乎是为了一个稍微不同的目的。@thomasrutter:在读了你的评论后,我才意识到这个问题在说什么。删除了我的答案。