如何知道php文件是从源代码加载的


How to know php file is loaded from source code

我正在使用我的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每次都不同,我称之为"糟糕的逻辑"的用户可以免费查看/复制,我不介意,而服务器数据是安全的。

谢谢大家宝贵的回答!!