全局变量不会改变 JavaScript 中的值



我的项目由 2 个 html 页面组成:

  1. index.html ,其中包含登录名和注册表。
  2. 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'];
}

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新