会话和cookie

时间:2010-05-23 21:36:55

标签: php cookies session session-cookies

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

还是有更好的方法吗?

使用PHP

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

@Ramiro Gonzalez Maciel他说他已经制作了这个剧本,他不需要框架作为例子。框架通常包含脚本并且放置得很好。

回答这个问题:

我通常在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.
    }
?>

现在我知道这不是最好的例子,但我个人在非常大的网站(&gt; 500.000用户)中使用它,并且还没有一个已经入侵:)

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

祝你好运。

答案 2 :(得分:1)

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

如果您希望用户“自动登录”,就像许多网站实现的常用“rembember me”选项一样,如果您的框架提供,则必须保留Session对象。或者实现类似的系统,使用cookie来存储“登录的令牌”,并在用户访问系统时检查该令牌以自动记录它们或将它们发送到登录页面。 (编辑:像Mihai在其他答案中提出的那样)

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