我的项目由 2 个 html 页面组成:
-
index.html
,其中包含登录名和注册表。 -
user_logged.html
,其中包含登录用户的所有功能。
现在,我想做的是控制用户是否真正登录,以避免用户在浏览器中粘贴 url 并可以看到其他用户页面的情况。小时 和现在一样,如果用户将此 URL 粘贴到浏览器中:
www.user_loggato.html?user=x#profile
就好像以用户 X 身份登录一样,这并不好。
我的html页面都使用包含脚本的js文件。我决定创建一个名为 logging inizialized 的全局变量,并在登录成功时将变量更改为 true。
问题是变量仍然是假的。
这是代码:
var logged=false; (write in the file a.js)
而在文件 b 中.js我有:
function login() {
//if succesfull
logged=true;
window.location.href = "user_loggato.html?user="+ JSON.parse(str).username + #profilo";
现在通过一些警报,我发现我记录的变量总是假的。为什么?
Javascript不是要走的路,因为它在客户端运行。即使有一种方法可以在不同的请求之间共享javascript变量,用户也可以操纵它们。
为此,您必须采用服务器端技术(可能是带有会话的PHP)。
JS 变量将在每次提交/刷新时重置。为此,您可以使用会话存储或 Cookie。例如:
将其放入您的登录表单中:
function login() {
window.sessionStorage[logged] = true;
window.location.href = "user_loggato.html?user="+ JSON.parse(str).username + #profilo";
}
在您的user_loggato.html中,您可以像以下方式检索它:
function getLoginStatus() {
return window.sessionStorage['logged'];
}
希望这有帮助。