我有一个名为 script.php 的脚本文件,可以通过&#34; Window.location <从另一个名为 main.php 的php文件访问/强>&#34;命令。我想阻止直接访问文件,即,没有人可以在URL栏中键入script.php并查看文件的内容。但我希望我的main.php能够使用window.location重定向到script.php。有什么办法吗?
我尝试使用 Debug Backtrace 和 preg_match(),但这些也阻止了main.php中的window.location。有办法解决这个问题吗?
答案 0 :(得分:0)
我不确定你想做什么以及为什么要做。没有办法只允许脚本打开URL,因为浏览器会处理它。
通常,您应该检查文件本身,如果允许用户使用它们。因此,您必须为您找到一个逻辑,如何告诉您脚本,用户是否应该看到它。否则,您可以执行其他操作,例如显示错误或将其重定向回给您main.php
。
只是一些简单的想法......
创意1。)如果可能,您可以include()
script.php
main.php
中的.htaccess
并阻止通过main.php
直接访问。然后,您不需要重定向,也没有人可以直接访问它。
创意2。)在$_SESSION["allow"] = true;
中设置会话变量,例如script.php
,然后在false
中再次检查。然后将值设置为script.php?allow=true
,以便下一次调用失败。
创意3。)在文件调用中添加参数,例如time()
。但在这种情况下,所有知道参数的用户都可以调用它。
创意4。)向重定向添加自定义参数,该参数仅在给定时间内有效。简单来说,就像php main.php
之类的东西。检查参数是否在短时间限制内。但在这种情况下,必须在var collection = {
"2548": {
"album": "Slippery When Wet",
"artist": "Bon Jovi",
tracks: [
"Let It Rock",
"You Give Love a Bad Name"
]
},
"2468": {
"album": "1999",
"artist": "Prince",
"tracks": [
"1999",
"Little Red Corvette"
]
},
"1245": {
"artist": "Robert Palmer",
"tracks": [ ]
},
"5439": {
"album": "ABBA Gold"
}
};
var collectionCopy = JSON.parse(JSON.stringify(collection));
function updateRecords(id, prop, value) {
if (!value) delete collection[id][prop];
if (!!value && prop === 'tracks'){
collection[id][prop] = []; // Solve my problem
collection[id][prop].push(value);
}
if (!!value && prop === 'artist') collection[id][prop] = value;
return collection;
}
updateRecords(5439, "tracks", "Take a Chance on Me");
文件启动重定向时生成重定向URL。否则请求可能已经过时了。
这就是我的想法。希望能给你一些提示如何做到这一点。