我目前有一个网站,让我的访客可以通过我拼凑和编写的简单脚本登录。目前我只使用会话来保持访客的登录状态。添加cookie以存储用户登录状态对我的网站有什么优势吗?还是说有更好的方法?使用PHP。
@Ramiro Gonzalez Maciel说他已经制作了那个脚本,他不需要框架作为示例。通常,框架会将脚本包装和放置好。
回答那个问题:
我通常在cookie中存储一些md5字符串,这些字符串来自于md5(password)和他的用户名的组合,这样我就知道下一次他进入我的网站时已经登录了,所以我不需要让他再次登录。
我的示例:
<?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进行登录部分的优势。
祝你好运。
Web框架(Java Servlets和其他框架)通常使用cookie来识别会话;另一个常见的选项是URL参数。因此,假设您正在使用任何Web框架,它可能已经使用cookie存储会话ID。Web框架将使用此ID在每个请求中标识会话对象。尽管cookie可以在服务器重新启动后保留,因为它们存储在浏览器中,但除非您配置了会话持久性,否则会话对象通常不会保留。
如果您希望用户像许多网站实现的常规“记住我”选项一样“自动登录”,则需要持久化会话对象(如果您的框架提供)。或者实施类似的系统,使用cookie存储“已登录令牌”,并在用户访问系统以自动登录或将其发送到登录页面时检查该令牌。(编辑:就像Mihai在其他答案中提出的那样)
如果您想要实现自己的方法,我建议检查流行的Web框架如何实现这一点,特别是存储用户数据的安全和隐私方面。