php使用cookie实现记住登录状态

要实现记住密码自动登录的功能我们大多数据都是利用了客户端的cookies来实现,我们利用php也不例外,有需要的朋友可以参考一下。

php制作记住密码自动登录的解决思路,其实也就是对session,cookies的操作

一、检查用户是否登录,代码如下:

  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. username = trim($_POST['username']);
  2. $password = md5(trim($_POST['password']));
  3. $validatecode = $_POST['validateCode'];
  4. $ref_url = $_GET['req_url'];
  5. $remember = $_POST['remember'];
  6. $err_msg = '';
  7. if($validatecode!=$_SESSION['checksum']){
  8. $err_msg = "验证码不正确";
  9. }elseif($username=='' || $password==''){
  10. $err_msg = "用户名和密码都不能为空";
  11. }else{
  12. $row = getUserInfo($username,$password);
  13. if(emptyempty($row)){
  14. $err_msg = "用户名和密码都不正确";
  15. }else{
  16. $_SESSION['user_info'] = $row;
  17. if(!emptyempty($remember)){ //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面
  18. setcookie("username", $username, time()+3600*24*365);
  19. setcookie("password", $password, time()+3600*24*365);
  20. }
  21. if(strpos($ref_url,"login.php") === false){
  22. header("location:".$ref_url);
  23. }else{
  24. header("location:main_user.php");
  25. }
  26. }
  27. }

三,当用户点退出时,清出记录登录状态,代码如下:

  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. }

四、简洁版实例,代码如下:

  1. <?
  2. //读取COOKIE的用户名和密码的值即可
  3. if($_COOKIE['uname']!=''){$CKUNAME = $_COOKIE['uname'];}
  4. if($_COOKIE['pwd']!=''){$CKPWD = $_COOKIE['pwd'];}
  5. echo $CKUNAME;
  6. echo '<br>';
  7. echo $CKPWD;
  8. ?>
  9. <form name="form1" method="post" action="">
  10. <input type="text" name="uname" value="<?=$CKUNAME;?>" /> <input
  11. type="password" name="pwd" value="<?=$CKPWD;?>" /> <input
  12. name="remember" type="checkbox" value="1" <? if($CKUNAME!=''){?>
  13. checked="checked" <? } ?> /> 记住我! <input type="submit" name="button"
  14. value="登录" />
  15. </form>
  16. <?
  17. //登录,将用户名和密码存入到COOKIE
  18. if($_POST['button']!=''){
  19. $uname = $_POST['uname'];
  20. $pwd = $_POST['pwd'];
  21. //如果输入的加密密码和COOKIE中不一样,那么就加密
  22. if($pwd!=$CKPWD){$pwd = md5($pwd);}
  23. $remember = $_POST['remember'];
  24. if($remember==1){
  25. setcookie("uname", $uname, time()+3600*24*30);
  26. setcookie("pwd", $pwd, time()+3600*24*30);
  27. }
  28. }
  29. ?>