>  기사  >  백엔드 개발  >  PHP는 쿠키를 사용하여 로그인 상태 코드 예제를 기억합니다.

PHP는 쿠키를 사용하여 로그인 상태 코드 예제를 기억합니다.

怪我咯
怪我咯원래의
2017-07-10 10:08:061483검색

이 글에서는 로그인 상태를 기억하기 위해 PHP에서 cookie를 사용하는 방법을 주로 소개합니다. 이 글에서는 가장 독창적인 방법을 사용하여 로그인 상태를 기억하는 방법을 설명하고 필요한 3단계와 구체적인 구현 코드를 제공합니다.

비밀번호를 기억하고 자동으로 로그인하는 기능을 실현하기 위해 대부분의 데이터는 클라이언트 측에서 쿠키를 사용하여 구현됩니다. PHP 사용도 예외는 아닙니다. 비밀번호를 기억하고 자동으로 로그인하는

php의 솔루션은 실제로 session, 쿠키

의 동작입니다. 1. 사용자가 로그인되어 있는지 확인하세요.

코드는 다음과 같습니다.

//检查用户是否登录 
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里面  
     }  
     }  
     }  
}

2. The 사용자가 로그인 정보를 제출합니다

코드는 다음과 같습니다.

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");  
}  
}  
}

3, 사용자가 Exit를 클릭하면 로그인 상태 기록을 지웁니다

코드는 다음과 같습니다.

//退出登录 
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. 버전 예시

코드는 다음과 같습니다

<?
//读取COOKIE的用户名和密码的值即可
if($_COOKIE[&#39;uname&#39;]!=&#39;&#39;){$CKUNAME =  $_COOKIE[&#39;uname&#39;];}
if($_COOKIE[&#39;pwd&#39;]!=&#39;&#39;){$CKPWD =  $_COOKIE[&#39;pwd&#39;];}
echo $CKUNAME;
echo &#39;<br>&#39;;
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!=&#39;&#39;){?>
       checked="checked" <? } ?> /> 记住我! <input type="submit" name="button"
       id="button" value="登录" />
</form>
<?
//登录,将用户名和密码存入到COOKIE
if($_POST[&#39;button&#39;]!=&#39;&#39;){
    $uname = $_POST[&#39;uname&#39;];
    $pwd = $_POST[&#39;pwd&#39;];
    //如果输入的加密密码和COOKIE中不一样,那么就加密
    if($pwd!=$CKPWD){$pwd = md5($pwd);}
    $remember = $_POST[&#39;remember&#39;];
    if($remember==1){
       setcookie("uname", $uname, time()+3600*24*30);
       setcookie("pwd", $pwd, time()+3600*24*30);
    }
}
?>

위 내용은 PHP는 쿠키를 사용하여 로그인 상태 코드 예제를 기억합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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