PHP中利用cookie实现自动登录(案例)
思路:用户登录时,是否选中自动登录,如果选中,在php处理时,将用户信息也保存在cookie中。
判断用户是否登录,先从session读取,没有的话,再试着去读cookie。
代码:
login.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>登录</title> </head> <body> <form action="do_login.php" method="post"> username <input type="text" name="username" /><br> password <input type="password" name="password" /><br> remember <input type="checkbox" name="remember" value="1" /><br> <input type="submit" value="Login" /> </form> </body> </html> |
do_login.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $key="88888"; session_start(); if($_POST['username']=='admin' && $_POST['password']=='123456'){ //登录成功 $user['id']=1314; //用户id $user['name']='phperblog.cn'; //用户显示名称 $_SESSION['user']=$user; //如果选中记住我,就将登录信息放入Cookie中 if($_POST['remember'] == '1'){ //将登录信息,存放在Cookie中 $value=serialize($user); $md5str=md5($value.$key); setcookie('autoLogin', $md5str . $value ,time()+60*60*24*30,'/'); } header('Location: index.php'); }else{ echo '用户名或密码不匹配'; } |
index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php $key="88888"; //开启Session session_start(); //如果Session中没有登录信息,尝试从Cookie中加载用户信息 if(empty($_SESSION['user']['id'])){ $value=$_COOKIE['autoLogin']; // 去掉魔术引号 if (get_magic_quotes_gpc()) { $value=stripslashes($value); } $md5str=substr($value,0,32); $value=substr($value,32); //校验 if(md5($value . $key) == $md5str){ $user=unserialize($value); $_SESSION['user']=$user; } } ?><!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>首页</title> </head> <body> <div class="top">欢迎您 <?php if(isset($_SESSION['user']['id'])){ echo $_SESSION['user']['name']; echo ' <a href="logout.php">注销</a>'; }else{ echo ' <a href="login.php">请登录</a>'; } ?> </div> </body> </html> |
logout.php
1 2 3 4 5 6 |
<?php //注销 session_start(); unset($_SESSION['user']); setcookie('autoLogin','',time()-1,'/'); header('Location: index.php'); |
- Linux中shell脚本案例(三)
- PHP操作csv文件