生活随笔
收集整理的這篇文章主要介紹了
PHP学习总结(会话控制)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近剛做完一個簡易的登陸注冊小項目,當(dāng)時做的時候匆忙,現(xiàn)在來詳細(xì)的了解一下PHP會話控制這方面的知識。
cookie和seesion技術(shù)出現(xiàn)的原因:
當(dāng)一個用戶請求一個頁面時,再請求同一個網(wǎng)站上的另外一個頁面時,HTTP協(xié)議不能告訴我們兩個請求是否來自同一個用戶,也不能將兩次訪問聯(lián)系到一起!所有出現(xiàn)了cookie和seesion.
一、cookie
cookie是用來將網(wǎng)站的資料記錄在客戶端的技術(shù),讓web服務(wù)器將一些資料存放在客戶端(用戶的電腦中)。
1、向客戶端電腦中設(shè)置cookie
setcookie();
2、在服務(wù)器端上讀取cookie內(nèi)容
$_COOKIE
3、將多維數(shù)組應(yīng)用于cookie中
例如:
setcookie("member[name]",'www',time()+3600);
setcookie("member[email]",'1111',time()+3600);
4、刪除cookie
例如:
setcookie("member[name]",'',time()-3600);
setcookie("member[email]",'',time()-3600);
foreach ($_COOKIE['member'] as $key=>$val){var_dump(setcookie("member[{$key}]",'',time()-3600));}
使用setcookie刪除cookie的時候,需要與當(dāng)初設(shè)置cookie的時候參數(shù)一致!
二、session
session與cookie最大的不同就是,session是把具體信息保存在服務(wù)器端。
1、開啟session
例如:
session_start();$_SESSION['name']='www';$_SESSION['email']='sss';$_SESSION['url']='zzz';/再另一個
PHP文件中訪問的時候必須加上
2、打開已存在的seesion
session_start();
var_dump($_SESSION);/注意打開之前一定要先開啟seesion
3、注銷變量與銷毀session
先開啟session
session_start();session_unset();/釋放所有變量
session_destroy();/銷毀一個會話中的所有數(shù)據(jù)
setcookie('')/名字可以在設(shè)置session時,使用
var_dump($_COOKIE)來獲取cookie的名字
/也可以使用這樣的方法
setcookie(session_name(),'',time()-3600);/但這樣的方法刪除的不干凈
/可以采用這樣的方法刪除干凈
setcookie(session_name(),'',time()+3600,'/');'/'表示設(shè)置cookie的根目錄
三、基于session和cookie的登陸模塊
簡易的用cookie來判斷登陸
login.php(登陸文件)
<?phpheader('Content-type:text/html;charset=utf-8');if (isset($_COOKIE['username']) && $_COOKIE['username']==='QTFY') {exit('您已經(jīng)登錄請不要重復(fù)登錄');}if(isset($_POST['submit'])){if(isset($_POST['username'])&& isset($_POST['password']) && $_POST['username']==='QTFY' && $_POST['password']==='123'){if(setcookie('username',$_POST['username'],time()+3600)){header('Location:login.php');}else{echo 'cookie設(shè)置失敗!';}}else{header('Location:skip.php?url=login.php&info=用戶名或密碼輸入錯誤');}}?><!DOCTYPE html
><html lang
="zh-CN"><head
><meta charset
="utf-8" /><title
>請登錄
</title
></head
><body
><form method
="post" action
="login.php">姓名:
<input type
="text" name
="username" />密碼:
<input type
="password" name
="password" /><input type
="submit" name
="submit" value
="登錄" /></form
></body
></html
>
index.php(判斷是否有cookie以此來進(jìn)行識別用戶身份)
<?phpheader('Content-type:text/html;charset=utf-8');if(isset($_COOKIE['username']) && $_COOKIE['username']==='QTFY'){echo "{$_COOKIE['username']}你好,歡迎回來!";}else{echo "<a href='login.php'>請重新登陸</a>";?>
這樣就可以做一個簡易的登陸頁面(帶判斷)
skip.php(簡單的跳轉(zhuǎn)頁面)
<?phpheader('Content-type:text/html;charset=utf-8');if(!isset($_GET['url'])|| !isset($_GET['info'])){exit();}}?><!DOCTYPE html
><html lang
="zh-CN"><head
><meta charset
="utf-8" /><meta http
-equiv
="refresh" content
="3;URL=<?php echo $_GET['url']?>"/><title
>正在跳轉(zhuǎn)
</title
></head
><body
><div style
="text-align:center;font-size:20px;"><?php echo $_GET['info'] ?>,三秒后自動跳轉(zhuǎn)
</div
>/info提示信息
</body
></html
>
loginout(注銷功能頁面)
<?php header('Content-type:text/html;charset=utf-8');if (isset($_COOKIE['username']) && $_COOKIE['username']==='QTFY') {if(setcookie('username',$_POST['username'],time()-3600)){header('Location:skip.php?url=index.php&info=注銷成功,正在跳轉(zhuǎn)中!');}else{header('Location:skip.php?url=index.php&info=注銷失敗,請稍后重試!');}}
?>
這樣基于cookie的登陸頁面就基本實現(xiàn)了
session與cookie基本相同
要注意:用session時,首先開啟session。
這里就不演示了,具體的看之前做的登陸注冊頁面。這里又學(xué)到了一個跳轉(zhuǎn)頁面,之前都不知道如何用。
總結(jié)
以上是生活随笔為你收集整理的PHP学习总结(会话控制)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。