2011-04-28 62 views
7

是否有可能在JavaScript中创建和更新会话变量?就像在PHP中开始会话并初始化会话变量一样。是否有可能在JavaScript中创建会话变量?

我对PHP使用了一些JavaScript函数。

我只是一个JavaScript的初学者,所以也请转介我一些好书。

+0

下一次,请......不要使用......那么......很多......椭圆和感叹号。此外,一次提出一个问题。对于书籍,请[自行搜索](http://stackoverflow.com/search?q= [javascript] +书籍)。 – 2011-04-28 13:00:59

回答

8

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

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

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

你也可以使用JS将数据存储在cookie(所以它到期的浏览器会话结束时没有设置过期时间)

1

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

4

好,考虑看看会议是如何工作的,没有,他们不能用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."); 
    } 
}; 
0

你可以通过从AJAX方式使用JS /加载/后的PHP脚本,写你的会话控制方法到这个php脚本文件中。

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

+0

“通过ajax方式使用js加载/发布一个php脚本,并将你的会话控制方法写入这个php脚本文件。”→哇,这将是非常**危险的,因为一些恶意用户可能会注入一些任意您的服务器中的PHP代码。 – 2011-04-28 13:02:37

+0

嗯......怎么样为会话控制php脚本添加“角色检查”方法?角色检查,并做了后期var的xss清理,我想应该没问题:) – Rex 2011-04-28 13:13:47

+0

哦,你的意思是应该只发布一个会话散列键,而不是实际的PHP代码?你的答案看起来像那样。 – 2011-04-28 13:45:02

3

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

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

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

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

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

相关问题