欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php实现记住密码自动登录的功能

程序员文章站 2022-06-07 12:57:45
...
  1. //检查用户是否登录
  2. function checklogin(){
  3. if(emptyempty($_SESSION['user_info'])){ //检查一下session是不是为空
  4. if(emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){ //如果session为空,并且用户没有选择记录登录状
  5. header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']); //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
  6. }else{ //用户选择了记住登录状态
  7. $user = getUserInfo($_COOKIE['username'],$_COOKIE['password']); //去取用户的个人资料
  8. if(emptyempty($user)){ //用户名密码不对没到取到信息,转到登录页面
  9. header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']);
  10. }else{
  11. $_SESSION['user_info'] = $user; //用户名和密码对了,把用户的个人资料放到session里面
  12. }
  13. }
  14. }
  15. }
复制代码

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

二、用户提交登录信息 当用户填写用户名和密码后就提交到这里。

  1. /**

  2. 用户提交登录信息的检测
  3. link:http://bbs.it-home.org
  4. */
  5. $username = trim($_POST['username']);
  6. $password = md5(trim($_POST['password']));
  7. $validatecode = $_POST['validateCode'];
  8. $ref_url = $_GET['req_url'];
  9. $remember = $_POST['remember'];
  10. $err_msg = ”;

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

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

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

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

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

三、当用户退出时,清除记录登录状态 当用户点退出时,务必清除当前的登录状态,以免被不怀好意的人利用你的登录信息搞破坏哦。

  1. //退出登录
  2. function logout(){
  3. unset($_SESSION['user_info']);
  4. if(!emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){
  5. setcookie(”username”, null, time()-3600*24*365);
  6. setcookie(”password”, null, time()-3600*24*365);
  7. }
  8. }
  9. ?>
复制代码

好了,关于用php实现记住密码、自动登录的方法介绍完了,希望你有所收获。 脚本学堂,专心为您。