php中實(shí)現(xiàn)記住密碼下次自動(dòng)登錄的例子
Jun 06, 2016 pm 08:18 PM這篇文章主要介紹了php中實(shí)現(xiàn)記住密碼下次自動(dòng)登錄的例子,本文使用cookie實(shí)現(xiàn)記住密碼和自動(dòng)登錄功能,需要的朋友可以參考下
做網(wǎng)站的時(shí)候經(jīng)常會(huì)碰到要實(shí)現(xiàn)記住密碼,下次自動(dòng)登錄,,一周內(nèi)免登陸,一個(gè)月內(nèi)免登陸這種需求。這種功能一般都是通過cookie來實(shí)現(xiàn)的。本篇文章將簡(jiǎn)單說一下如何使用php實(shí)現(xiàn)該需求的。當(dāng)然實(shí)現(xiàn)該需求的方法有N多種。
整個(gè)過程就是用戶在登陸的時(shí)候,如果選擇了記住密碼或者一周內(nèi)免登陸等這個(gè)選項(xiàng)的時(shí)候,則在用戶成功登陸操作完成之后,存儲(chǔ)一個(gè)實(shí)現(xiàn)自動(dòng)登錄的cookie的數(shù)據(jù)到數(shù)據(jù)庫的用戶表里面,作為下次自動(dòng)登錄時(shí)驗(yàn)證用。驗(yàn)證通過則自動(dòng)登錄,否則需要輸入用戶名,密碼進(jìn)行登錄。保存的這個(gè)cookie值則可以取一個(gè)隨機(jī)碼。
具體示例代碼如下:
復(fù)制代碼 代碼如下:
$username=trim($_POST['username']);
$password=md5(trim($_POST['password']));
$ref_url=$_GET['req_url'];
$remember=$_POST['remember'];//是否自動(dòng)登錄標(biāo)示
$err_msg='';
if($username==''||$password==''){
?$err_msg="用戶名和密碼都不能為空";
}else{
?$row=getUserInfo($username,$password);
?if(empty($row)){
??$err_msg="用戶名和密碼都不正確";
?}else{
??$_SESSION['user_info']=$row;
??if(!empty($remember)){//如果用戶選擇了,記錄登錄狀態(tài)就把用戶名和加了密的密碼放到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");
??}
?}
}
另外在訪問網(wǎng)站的每個(gè)頁面時(shí),都要先進(jìn)行一遍如下函數(shù)的檢查。
復(fù)制代碼 代碼如下:
//檢查用戶是否登錄
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']);//轉(zhuǎn)到登錄頁面,記錄請(qǐng)求的url,登錄后跳轉(zhuǎn)過去,用戶體驗(yàn)好。
??}else{//用戶選擇了記住登錄狀態(tài)
???$user=getUserInfo($_COOKIE['username'],$_COOKIE['password']);//去取用戶的個(gè)人資料
??if(empty($user)){//用戶名密碼不對(duì)沒到取到信息,轉(zhuǎn)到登錄頁面
???header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);
??}else{
???$_SESSION['user_info']=$user;//用戶名和密碼對(duì)了,把用戶的個(gè)人資料放到session里面
??}
??}
?}
}

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The method to get the current session ID in PHP is to use the session_id() function, but you must call session_start() to successfully obtain it. 1. Call session_start() to start the session; 2. Use session_id() to read the session ID and output a string similar to abc123def456ghi789; 3. If the return is empty, check whether session_start() is missing, whether the user accesses for the first time, or whether the session is destroyed; 4. The session ID can be used for logging, security verification and cross-request communication, but security needs to be paid attention to. Make sure that the session is correctly enabled and the ID can be obtained successfully.

To extract substrings from PHP strings, you can use the substr() function, which is syntax substr(string$string,int$start,?int$length=null), and if the length is not specified, it will be intercepted to the end; when processing multi-byte characters such as Chinese, you should use the mb_substr() function to avoid garbled code; if you need to intercept the string according to a specific separator, you can use exploit() or combine strpos() and substr() to implement it, such as extracting file name extensions or domain names.

In PHP, the most common method is to split the string into an array using the exploit() function. This function divides the string into multiple parts through the specified delimiter and returns an array. The syntax is exploit(separator, string, limit), where separator is the separator, string is the original string, and limit is an optional parameter to control the maximum number of segments. For example $str="apple,banana,orange";$arr=explode(",",$str); The result is ["apple","bana

std::chrono is used in C to process time, including obtaining the current time, measuring execution time, operation time point and duration, and formatting analysis time. 1. Use std::chrono::system_clock::now() to obtain the current time, which can be converted into a readable string, but the system clock may not be monotonous; 2. Use std::chrono::steady_clock to measure the execution time to ensure monotony, and convert it into milliseconds, seconds and other units through duration_cast; 3. Time point (time_point) and duration (duration) can be interoperable, but attention should be paid to unit compatibility and clock epoch (epoch)

ToaccessenvironmentvariablesinPHP,usegetenv()orthe$_ENVsuperglobal.1.getenv('VAR_NAME')retrievesaspecificvariable.2.$_ENV['VAR_NAME']accessesvariablesifvariables_orderinphp.iniincludes"E".SetvariablesviaCLIwithVAR=valuephpscript.php,inApach

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

Reasons and solutions for the header function jump failure: 1. There is output before the header, and all pre-outputs need to be checked and removed or ob_start() buffer is used; 2. The failure to add exit causes subsequent code interference, and exit or die should be added immediately after the jump; 3. The path error should be used to ensure correctness by using absolute paths or dynamic splicing; 4. Server configuration or cache interference can be tried to clear the cache or replace the environment test.

The method of using preprocessing statements to obtain database query results in PHP varies from extension. 1. When using mysqli, you can obtain the associative array through get_result() and fetch_assoc(), which is suitable for modern environments; 2. You can also use bind_result() to bind variables, which is suitable for situations where there are few fields and fixed structures, and it is good compatibility but there are many fields when there are many fields; 3. When using PDO, you can obtain the associative array through fetch (PDO::FETCH_ASSOC), or use fetchAll() to obtain all data at once, so the interface is unified and the error handling is clearer; in addition, you need to pay attention to parameter type matching, execution of execute(), timely release of resources and enable error reports.
