5

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

还是有更好的方法?

使用 PHP

4

3 回答 3

4

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

于 2010-05-23T21:45:19.427 回答
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.
    }
?>

现在我知道这不是最好的例子,但我个人在非常大的网站(> 500.000 个用户)中使用过它,但还没有人入侵 :)

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

祝你好运。

于 2010-05-23T22:19:40.820 回答
1

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

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

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

于 2010-05-23T22:02:29.473 回答