2010-05-23 95 views
5

我目前有一个网站,允许我的访问者通过一个简单的脚本,我粘贴在一起,并写了登录。目前,我只使用会话来保持访问者登录。添加cookie到我的网站以存储用户登录状态有什么好处吗?会话和饼干

或者还有更好的方法吗?

使用PHP

+0

我认为没有其他的方法...如果你想存储用户登录状态,你将必须使用cookies。 – Cristian 2010-05-23 21:45:59

+0

@克里斯蒂安:不....你不*有*,但另一种解决方案很丑。 (在URL中传递它) – mpen 2010-05-23 22:07:39

回答

3

@Ramiro冈萨雷斯马西埃尔他说他已经做出剧本,他不需要框架采取为例。框架通常包含脚本并且放置得很好。

为了回应这个问题:

我通常的cookie存储从他的MD5(密码)和他的用户名组合的一些MD5字符串,这样我就可以知道下一个蒂姆他进入我的网站是在如此记录我不会让他再登录

我的例子:

<?php 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    // sql and escape stuff witch will return 1 if he has entered a valid login 
    if($sqlreturn == 1){ 
     // do login 
     $wraplogin = md5($username."-".md5($password)."-".SECRET_KEY); // I always define a define('SECRET_KEY', 'mysecretkey'); in global file. 
     // now you can store that $wraplogin in cookies and remember his login. Next time he enters the website, you read that cookie, compare it with what you have in your database and let him in. 
    } 
?>

现在我知道这是不是最好的例子,但我个人把它用在非常大的网站(> 500.000用户)和无已经被黑客入侵:)

这是登录部分的cookies的优势。

好运。

+0

将密码放入md5哈希中的任何真正必要性?我在想另一个随机数据,用户注册时间戳可能会更好。我知道,长期以来,一个字符串永远不会被强迫,而只是为了偏执安全。顺便说一句,从我发现的cookies的优点是,你可以设置它们让用户登录XX天。 – Derek 2010-05-23 22:47:48

+0

是的,主要你可以设置任何东西在该登录cookie,用户IP等 我已经添加了密码,使该字符串有点复杂,但就像我说的,你可以把任何东西:)任何可以验证后来。 – 2010-05-23 23:20:45

4

如果您使用的是PHP会话,那么您使用的是cookies。 PHP将会话ID存储在cookie中,并将会话数据存储到Web服务器上磁盘上的文件中。

1

Web框架(Java Servlets等)通常使用cookie来识别会话;另一个通常的选项是URL参数。所以假设你使用任何Web框架,它可能已经使用cookie来存储会话ID。 Web框架将使用此ID来标识每个请求中的Session对象。虽然cookie在服务器重新启动后仍然存在,但由于它们存储在浏览器中,所以Session对象通常不会除非您配置了Session持久性。

如果你想给用户“自动登录”作为一贯的“rembember我”选项许多网站实现,你就必须坚持Session对象,如果你的框架规定。或者实现一个类似的系统,使用cookie来存储“登录令牌”,并在用户访问系统时自动记录它们或将它们发送到登录页面时检查该令牌。 (编辑:就像米哈伊其他答案建议)如果你想实现自己的方法

,我建议检查流行的Web框架是如何实现这一点,特别是存储的cookie的用户数据的安全和隐私方面。