>백엔드 개발 >PHP 튜토리얼 >PHP는 비밀번호를 기억하고 자동으로 로그인하는 기능을 구현합니다.

PHP는 비밀번호를 기억하고 자동으로 로그인하는 기능을 구현합니다.

WBOY
WBOY원래의
2016-07-25 09:04:261780검색
  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实现记住密码、自动登录的方法介绍完了,希望你有所收获。 脚本学堂,专心为您。



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.