我正在使用我的JS文件,我现在拥有的是一个独特的php文件与JS头,如果一个变量被设置它包括真正的JS文件,这是很好的。
首页有php-js文件的script标签:
<head>
<script type="text/javascript" language="javascript" src="bootstrap.php"></script>
</head>
bottstrap.php文件类似于:
if(isset($hostData) && !empty($hostData)) {
include('bootstrap.js');
}else {
echo "document.write('<center><bold>PLEASE DO SOMETHING...!</bold></center>');";
}
这一切似乎都很好,然而,当查看源代码(CTRL+U)浏览器显示"bootstrap.php"部分作为一个链接,如果点击它显然重定向到http://mydomain/bootstrap.php和js代码可以很容易地看到,这正是我不想要的…
所以我的问题是,是否有任何php方式知道文件是从浏览器的"渲染视图"加载的还是从浏览器的"源代码视图"加载的?
任何帮助都是真正的感激=)
简而言之,没有。您无法对用户隐藏脚本源。你能做的最好的事情就是使用yuiccompressor之类的工具来混淆它。
你无法隐藏javascript代码。它需要由客户端执行,即使您试图通过格式化代码来隐藏它,像firebug这样的工具也可以很容易地内省代码并取出代码。
老实说,我不认为你真的可以这样隐藏它。我假设最好的事情你要继续是useragent字符串,但我假设如果你在浏览器中"查看源",它仍然会发送常规的头。
我能想到的唯一方法是添加JS include而不出现在视图源模式下,实际上是通过javascript加载外部文件(你甚至可以将JS文件的路径分解为变量,因此它不是真正的人类可读),我不建议。
如果有人想要得到你的javascript,他们没有办法避免它。
和js代码可以很容易地看到,这正是我不想要的…
你不想让JS被看到,但你确实想使用它??
如果你想在你的页面中使用js文件,你的代码有问题。
你需要包含/要求文件:
<script type="text/javascript" language="javascript" src="<?php include bootstrap.php ?>"></script>
否则,浏览器将加载引导文件的内容,但您希望运行其中的代码(这只能在服务器上完成)。
也:
改变:
include('bootstrap.js');
echo bootstrap.js;
编辑
通过重新阅读你的问题(和其他答案),这正是你想要的:使你的JS代码不可见(如果错误请纠正我)。
答案是:No cannot be done。
你可以试着混淆代码,但它会花费想要看到它的人几秒钟来"解码"。
尝试使用$_SERVER["HTTP_referer"]
,其中包含调用该文件的url。
我真的很抱歉从这里消失了…我决定实现的最佳解决方案非常简单:不要在JS代码中显示任何URL或PHP文件;因此,在过去的几个月里,我使用了一个唯一的PHP文件来执行所有必要的数据库查询,一个存储过程从JS动态生成所需的所有URL。这样,URL每次都不同,我称之为"糟糕的逻辑"的用户可以免费查看/复制,我不介意,而服务器数据是安全的。
谢谢大家宝贵的回答!!