【问题标题】:Is it possible to a create session variable in JavaScript?是否可以在 JavaScript 中创建会话变量?
【发布时间】:2011-10-08 03:26:00
【问题描述】:

是否可以在 JavaScript 中创建和更新会话变量?就像在 PHP 中一样,我启动会话并初始化会话变量。

我在 PHP 中使用了一些 JavaScript 函数。

我只是 JavaScript 的初学者,所以也请给我推荐一些好书。

【问题讨论】:

  • 下次,请...不要使用...那个...很多...省略号和感叹号。此外,一次问一个问题。书籍请search yourself.

标签: javascript


【解决方案1】:

“会话变量”一词的通常含义是:“存储在服务器上的一些数据,通过令牌与用户的会话相关联”。

假设您谈论的是客户端 JavaScript,那么简短的回答是“否”,因为它在错误的计算机上运行。

您可以使用 JS 向服务器发出 HTTP 请求,并让服务器端程序将数据存储在会话变量中。

您还可以使用 JS 将数据存储在 cookie 中(不设置过期时间,使其在浏览器会话结束时过期)

【讨论】:

    【解决方案2】:

    好吧,看看会话是如何工作的,不,它们不能用 javascript 创建。不过,您可以向您的 PHP 文件发出 AJAX 请求来设置一个。

    PHP:

    <?php
    session_start(); 
    $_SESSION['mySession'] = 1;
    ?>
    

    JS:

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", "session_maker.php", true);
    
    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
            alert("Done! Session created.");
        }
    };
    

    【讨论】:

      【解决方案3】:

      在 Javascript 中有多种记录状态的方法 - 没有一种特别好/跨浏览器,但是你去吧。

      您可以设置和获取cookies - http://www.quirksmode.org/js/cookies.html

      Window.name storage (sessionvars) - http://www.thomasfrank.se/sessionvars.html - 这是一个非常酷的 hack,但用于任何重要的事情可能不是一个好主意

      HTML5 本地存储 - http://diveintohtml5.ep.io/storage.html

      服务器端可能是这里的方式,但客户端你有几个选择。

      【讨论】:

        【解决方案4】:

        不,会话状态是服务器端的。但是,您可以创建 PHP 可以读取的 cookie。

        【讨论】:

          【解决方案5】:

          您可以通过 ajax 方式使用 js 从/加载/发布到 php 脚本,并将会话控制方法写入此 php 脚本文件。

          你可以试试 jQuery 的 $.ajax() 方法,我想这是在前端脚本上实现它的简单方法。

          【讨论】:

          • “使用js通过ajax方式加载/发布一个php脚本,并将你的会话控制方法写入这个php脚本文件。” → 哇,这将是非常危险,因为某些恶意用户可能会在您的服务器中注入一些任意 PHP 代码。
          • 嗯...为会话控制 php 脚本添加“角色检查”方法怎么样?角色检查并为 post var 清理了 xss,我想应该没问题 :)
          • 哦,你的意思是应该只发布会话哈希键,而不是实际的 PHP 代码?你的答案看起来像这样。
          • 当然不能是“php代码”,对不起我的快递,英语不是我的母语。 :p
          • 哦,是的,可以!只需使用eval! :-P
          猜你喜欢
          • 1970-01-01
          • 2014-01-22
          • 1970-01-01
          • 1970-01-01
          • 2011-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-17
          相关资源
          最近更新 更多