2013-12-16 109 views
1

我正在尝试构建我的第一个需要连接到我的mysql数据库并使用json返回数据的移动应用程序。这很好,目前我有一个登录系统,一旦它确立了用户名和密码的存在,它就会返回一个成功消息。用Javascript设置cookie

对于下一步,我想在我的页面上使用ajax连接到我的数据库并返回一些数据。现在我想要返回的数据只需要该用户的数据。

所以我的想法和这是我需要一些建议,是当成功的消息返回时,我设置用户名输入到登录窗体作为一个cookie,然后我可以使用该cookie来形成的一部分我的查询?

这是可能的吗?还是有更好的方法来做到这一点?,我是新开发的JavaScript和通常只是与PHP的工作,所以任何建议将受到好评。

谢谢

+0

我不能够给你一个很好的答案,因为没有通过我自己使用过,但看看文档。cookie 这里有人有相同的问题http://stackoverflow.com/questions/4825683/how-do-i-create-and-read-a-value-from-cookie – demonking

回答

1

有两个部分给你的问题。

(1)使用JavaScript管理Cookie:

首先,您可以创建几个帮手功能,这将使它更容易为你设置/获取等。无论您想饼干:

function setCookie(name, value, exp_y, exp_m, exp_d) { 
    var cookie_string = name + "=" + escape(value); 
    var expires = new Date(exp_y, exp_m, exp_d); 
    cookie_string += "; expires=" + expires.toGMTString(); 
    document.cookie = cookie_string; 
} 

function getCookie(cookie_name) { 
    var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); 
    return results ? unescape(results[2]) : null; 
} 

现在,您可以根据需要调用这些帮助函数。在您的使用情况,当您的身份验证返回“成功”标志,可以设置为“的userName”像这样的饼干:

setCookie('myCookie', userName, 2050, 1, 1); 

注意,在上面的例子中,我们通过2050年一个任意的高值,以便这个cookie不会过期。否则,您可以将“到期”标志完全留下来以创建仅会话cookie。

无论何时,你需要记得, “的userName” 传递到AJAX调用,你得到的饼干:

var userName = getCookie('myCookie'); 

(2)...有没有这样做的更好的办法这个?

是的。一旦验证成功,您可以在服务器端的会话变量中保存“userName”。现在,只要您在查询中需要当前登录的“userName”,就可以使用该会话变种。一旦用户注销,您将清除会话。一旦会话超时,会话将自动清除。所以,你可以免于家务管理。

希望有所帮助。

+0

谢谢,它已经这样做,我想我只是缺少这一点,谢谢你的解释非常感谢 –

1

试试这个简单的方法:

document.cookie ='cookie1=test; expires=Fri, 3 Aug 2013 20:47:11 UTC; path=/'