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

时间:2012-12-09 11:01:28

标签: javascript authentication login global-variables hashchange

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

  1. index.html,其中包含登录信息和注册表单。
  2. user_logged.html,其中包含已登录用户的所有功能。
  3. 现在,我想要做的是控制用户是否真的登录,以避免用户在浏览器中粘贴网址并可以看到其他用户的网页。 如果用户在浏览器中粘贴此网址,则为现在的小时数:

     www.user_loggato.html?user=x#profile
    

    好像以用户x身份登录,这不太好。

    我的html页面都使用包含脚本的js文件。 我决定创建一个名为logged inizialized为false的全局变量,并在登录成功时将变量更改为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";
    

    现在有了一些警报我发现记录的变量总是假的。为什么呢?

2 个答案:

答案 0 :(得分:2)

Javascript不是可行的方式,因为它在客户端运行。即使有办法在不同的请求之间共享javascript变量,用户也可以操纵它们。

你必须采用服务器端技术(可能是带有会话的PHP)。

答案 1 :(得分:0)

JS变量将在每次提交/刷新时重置。您可以使用sessionStorage或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'];
}

希望这有帮助。