Cet article présente principalement comment PHP utilise le cookie pour mémoriser l'état de connexion. Cet article utilise la méthode la plus originale pour expliquer comment mémoriser l'état de connexion, en donnant 3 étapes et le code d'implémentation spécifique nécessaire. Les amis peuvent se référer à
Pour réaliser la fonction de mémorisation des mots de passe et de connexion automatique, la plupart de nos données sont implémentées en utilisant des cookies côté client. Nous utilisons également php. Les amis dans le besoin peuvent s'y référer.
La solution pour que PHP mémorise les mots de passe et se connecte automatiquement est en fait le fonctionnement de la session, des cookies
Vérifiez si l'utilisateur est connecté
//检查用户是否登录 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里面 } } } }
Deuxièmement, l'utilisateur soumet ses informations de connexion
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"); } } }
Troisièmement, lorsque l'utilisateur clique sur pour quitter
, effacez le statut de connexion enregistré
//退出登录 function logout(){ unset($_SESSION['user_info']); if(!empty($_COOKIE['username']) || !empty($_COOKIE['password'])){ setcookie("username", null, time()-3600*24*365); setcookie("password", null, time()-3600*24*365); } }
4. Exemple de version simple
<? //读取COOKIE的用户名和密码的值即可 if($_COOKIE['uname']!=''){$CKUNAME = $_COOKIE['uname'];} if($_COOKIE['pwd']!=''){$CKPWD = $_COOKIE['pwd'];} echo $CKUNAME; echo '<br>'; echo $CKPWD; ?> <form id="form1" name="form1" method="post" action=""> <input type="text" name="uname" id="uname" value="<?=$CKUNAME;?>" /> <input type="password" name="pwd" id="pwd" value="<?=$CKPWD;?>" /> <input name="remember" type="checkbox" value="1" <? if($CKUNAME!=''){?> checked="checked" <? } ?> /> 记住我! <input type="submit" name="button" id="button" value="登录" /> </form> <? //登录,将用户名和密码存入到COOKIE if($_POST['button']!=''){ $uname = $_POST['uname']; $pwd = $_POST['pwd']; //如果输入的加密密码和COOKIE中不一样,那么就加密 if($pwd!=$CKPWD){$pwd = md5($pwd);} $remember = $_POST['remember']; if($remember==1){ setcookie("uname", $uname, time()+3600*24*30); setcookie("pwd", $pwd, time()+3600*24*30); } } ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!