php中实现记住密码自动登录的代码

 更新时间:2011年03月02日 20:33:46   作者:  
记得登录QQ的时候,我们可以选记住密码自动登录,这个功能确实很方便、实用。其实在我们登录网站后台的时候,浏览器就会有提示是否记住登录状态。
php实现记住密码自动登录方法不止一个,下面出现有二个emptyempty,其实是一个,那是因为代码高亮有bug。希望对大家有帮助。

一,用户登录的check
复制代码 代码如下:

//检查用户是否登录
function checklogin(){
if(emptyempty($_SESSION['user_info'])){ //检查一下session是不是为空
if(emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){ //如果session为空,并且用户没有选择记录登录状
header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']); //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
}else{ //用户选择了记住登录状态
$user = getUserInfo($_COOKIE['username'],$_COOKIE['password']); //去取用户的个人资料
if(emptyempty($user)){ //用户名密码不对没到取到信息,转到登录页面
header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']);
}else{
$_SESSION['user_info'] = $user; //用户名和密码对了,把用户的个人资料放到session里面
}
}
}
}
//检查用户是否登录
function checklogin(){
if(empty($_SESSION['user_info'])){ //检查一下session是不是为空
if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){ //如果session为空,并且用户没有选择记录登录状
header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']); //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
}else{ //用户选择了记住登录状态
$user = getUserInfo($_COOKIE['username'],$_COOKIE['password']); //去取用户的个人资料
if(empty($user)){ //用户名密码不对没到取到信息,转到登录页面
header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']);
}else{
$_SESSION['user_info'] = $user; //用户名和密码对了,把用户的个人资料放到session里面
}
}
}
}

在访问后台的每个页面时,都要先进行上面的检查

二,用户提交登录信息
当用户填写用户名和密码后就提交到这儿来,
复制代码 代码如下:

$username = trim($_POST['username']);
$password = md5(trim($_POST['password']));
$validatecode = $_POST['validateCode'];
$ref_url = $_GET['req_url'];
$remember = $_POST['remember'];

$err_msg = ”;
if($validatecode!=$_SESSION['checksum']){
$err_msg = “验证码不正确”;
}elseif($username==” || $password==”){
$err_msg = “用户名和密码都不能为空”;
}else{
$row = getUserInfo($username,$password);

if(emptyempty($row)){
$err_msg = “用户名和密码都不正确”;
}else{
$_SESSION['user_info'] = $row;
if(!emptyempty($remember)){ //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面
setcookie(”username”, $username, time()+3600*24*365);
setcookie(”password”, $password, time()+3600*24*365);
}
if(strpos($ref_url,”login.php”) === false){
header(”location:”.$ref_url);
}else{
header(”location:main_user.php”);
}
}
}
$username = trim($_POST['username']);
$password = md5(trim($_POST['password']));
$validatecode = $_POST['validateCode'];
$ref_url = $_GET['req_url'];
$remember = $_POST['remember'];

$err_msg = ”;
if($validatecode!=$_SESSION['checksum']){
$err_msg = “验证码不正确”;
}elseif($username==” || $password==”){
$err_msg = “用户名和密码都不能为空”;
}else{
$row = getUserInfo($username,$password);

if(empty($row)){
$err_msg = “用户名和密码都不正确”;
}else{
$_SESSION['user_info'] = $row;
if(!empty($remember)){ //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面
setcookie(”username”, $username, time()+3600*24*365);
setcookie(”password”, $password, time()+3600*24*365);
}
if(strpos($ref_url,”login.php”) === false){
header(”location:”.$ref_url);
}else{
header(”location:main_user.php”);
}
}
}

关于$ref_url简单解释一下,假如:用户A访问b.php,但是A用户没有登录,跳转到登录页面login.php,在登录页面填完用户和密码后,确定后又跳转到b.php这个页面,而不是跳转一个默认的页面main_user.php。因为b.php是用户A想去的那个页面,所以用户体验会好一点。

三,当用户点退出时,清出记录登录状态

为什么要这样做呢,因为如果有别人用你的电脑的话,他们有可能会浏览到你的个人隐私,所以当用户特意点了退出时,最好是把记录登录状态取消掉。
复制代码 代码如下:

//退出登录
function logout(){
unset($_SESSION['user_info']);
if(!emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){
setcookie(”username”, null, time()-3600*24*365);
setcookie(”password”, null, time()-3600*24*365);
}
}

相关文章

  • linux下php上传文件注意事项

    linux下php上传文件注意事项

    这篇文章主要为大家详细介绍了linux下php上传文件注意事项,希望对大家安装php有所帮助,感兴趣的朋友可以参考一下
    2016-06-06
  • PHP实现提取一个图像文件并在浏览器上显示的代码

    PHP实现提取一个图像文件并在浏览器上显示的代码

    去年做过一个项目,要把用户上传的图像文件列出文字清单,当用户点击一个文件名后,就可以显示这个图像.今天有机会重新考虑这个功能,在php手册中发现几行代码,简洁明快,完全能实现我要的功能,还不需要GD库
    2012-10-10
  • 深入理解PHP之源码目录结构与功能说明

    深入理解PHP之源码目录结构与功能说明

    这篇文章主要介绍了深入理解PHP之源码目录结构与功能说明,简单分析了php源码的主要目录及相应的功能,需要的朋友可以参考下
    2016-06-06
  • PHP实现的简单操作SQLite数据库类与用法示例

    PHP实现的简单操作SQLite数据库类与用法示例

    这篇文章主要介绍了PHP实现的简单操作SQLite数据库类与用法,结合具体实例形式分析了php封装的针对SQLite数据库相关增删改查操作技巧与使用方法,需要的朋友可以参考下
    2017-06-06
  • 利用PHP内置SERVER开启web服务(本地开发使用)

    利用PHP内置SERVER开启web服务(本地开发使用)

    PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器,这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境,URI请求会被发送到PHP所在的的工作目录Working Directory进行处理,除非你使用了-t参数来自定义不同的目录
    2020-01-01
  • PHP中通过语义URL防止网站被攻击的方法分享

    PHP中通过语义URL防止网站被攻击的方法分享

    好奇心是很多攻击者的主要动机,语义URL 攻击就是一个很好的例子。此类攻击主要包括对URL 进行编辑以期发现一些有趣的事情。
    2011-09-09
  • PHP开发的一些注意点总结

    PHP开发的一些注意点总结

    技术平台的不同,导致了实现方式的不同,同样是PHP,小公司往往选择的是WIN平台而大公司选择的是类unix平台(Linux,FreeBSD and Other) ,现在就最近这段时间的学习,这好乘国庆长假这段时间好好的总结下的了.
    2010-10-10
  • PHP获取和操作配置文件php.ini的几个函数介绍

    PHP获取和操作配置文件php.ini的几个函数介绍

    当你没办法修改php.ini配置文件怎么办,没事,php有一套设置和获取配置信息的函数
    2013-06-06
  • PHP 日期加减的类,很不错

    PHP 日期加减的类,很不错

    PHP中对日期操作的函数功能强大,下面的代码是PHP对日期加减的类,很不错,有需要的朋友可以用一下。
    2009-10-10
  • 深入分析PHP设计模式

    深入分析PHP设计模式

    这篇文章主要介绍了PHP设计模式的相关知识,文中讲解非常细致,代码帮助大家更好的理解学习,感兴趣的朋友可以参考下
    2020-06-06

最新评论