我试图改变一个js文件的位置,当一个访问者显示源代码
javascript函数在访问者显示源代码时不起作用.
我的想法是创建一个文件,放一个javascript代码来删除文件,在这种情况下,文件不会被删除,如果有人显示源代码:
$check="$ip-$views-$id";
fopen("$check.txt","w"); //CREATING A FILE
// DELETING THE FILE ABOVE BY JAVASCRIPT , IT WON'T BE DELETED IF SOMEONE ENTERED VIA THE SOURCE-CODE MODE
?>
<div id="countno"></div>
<script type="text/javascript">
$('#countno').load('del.php?name=<?echo $check;?>&location=' + ' #countno');
</script>
<?
if (file_exists("$check.txt")) { //IF SOMEONE SHOWED THE SOURCE CODE
$new_location="fake_location.js";
}
else{
$new_location=$old_location;
}
?>
<script src="<?echo $new_location;?>"></script>
现在的问题是,file_exists PHP函数显示该文件仍然存在,即使它已经被javascript代码删除了。
file_exists函数在javascript代码之前执行!
任何帮助/解决方案,使PHP函数检查文件后,javascript代码?我知道这有点不可能,但值得!
你所描述的是不可能的。PHP是服务器端语言,而javascript是客户端语言。因此,页面上的PHP总是在页面上的Javascript执行之前执行。当你这样做的时候,没有办法让你的Javascript先执行。
相反,您可以做的是将PHP和Javascript分开。让你的file_exists
在另一页检查。例:check.php
.
if (file_exists("$check.txt")) {
echo "fake_location.js";
} else {
echo $old_location;
}
然后使用ajax调用向check.php
发出请求,并根据check.php
的输出加载其他脚本。
<script>
$.ajax({
method: "GET",
url: "check.php"
})
.done(function(script) {
$("#check").attr("src", script);
});
</script>
<script id="check"></script>
然而,如果你的目标是防止人们找出你的javascript的位置,这是不可能的。现在大多数浏览器都可以在HTML发生变化时检查它。他们可以看到加载的脚本,而不必单独加载源代码。