PHP用户登录和状态保持

1、PHP实现登录一般使用SESSION来实现用户的登录,验证用户名和密码之后,将用户的信息保存至SESSION中。同时给客户端分配一个SESSION_ID,此SESSION_ID是存储在客户端的cookies中的,一般以PHPSESSID为cookie的key值,此项可在php.ini中进行设置。当你访问别的页面时,http会将当前的cookies作为header头的一部分,发送给服务器,服务器根据此SESSION_ID,如果有值,去取存储在SESSION中的信息。至此,实现了用户状态的保持。(此实现方式有多种,原理就是这样,许多网站不一定使用SESSION来存储用户信息,但是基本上还是需要cookies来使用户访问不同页面时,用户的状态一直能被服务器获得)
实现伪代码如下:

<?php
session_start();
//根据post过来的参数,校验用户的用户名和密码
if(验证用户名密码正确) {
    $_SESSION['user_info'] = array()  //将用户的信息存入,或者存入你需要的东西
} else {
    die('用户名密码错误之类的提示');
}
?>



2、当用户退出登录时,需要进行SESSION的删除,将保存在session中的信息删掉。

<?php
usset($_SESSION);//或者unset掉session全局变量中需要删掉的,例如上面的unset($_SESSION['user_info']);
session_destroy();

//如果想更彻底,可以设置客户端的cookie失效
?>


当不关闭浏览器的情况下,再次刷新,会有COOKIE传过来,但是找不到数据

3、md5加密直接加密用户输入的密码就ok了,md5加密不可逆转,保存在数据库中的就是已经进行加密后的md5值。但是md5使用范围太大,并且现如今的计算机硬件技术,使用字典方式去暴力破解也不是什么太难的事情,所以单一的md5加密很容易被人猜。一般的解决方案可以使用更加复杂的加密手段进行,例如密码的加盐、使用更为复杂算法进行加密等等

转:http://www.zhihu.com/question/20747728

原文地址:https://www.cnblogs.com/lyweb/p/2998452.html