PHP學習—Cookie&Session


Cookie

Cookie相關概念

  • Cookie:以文件的形式存儲在客戶機上相關數據信息,用來識別和跟蹤用戶的機制
  • Cookie是保存在用戶硬盤上的數據文件,被瀏覽器讀取,當用戶再次訪問瀏覽器時自動讀取這些信息,如上次訪問的時間、位置、用戶名、密碼等,爲用戶提供方便
  • Cookie是用生命週期的,Cookie可以建立也可以刪除

PHP操作Cookie

建立Cookie

  • 語法:bool setcookie(string $name[,string $value[,int $expire=0[,string $path]]])
  • $name是Cookie名
  • $value是Cookie值
  • expire是有效時間不設置保存時間則瀏覽器關閉即刪除Cookie
  • $path是Cookie保存的路徑
setcookie('a','123',time()+3600)  //cookie名爲a,值爲123,保存時間爲1小時
cookie當時設置,不會當時生效

訪問Cookie

  • 通過$_Cookie[‘cookiename’]來訪問Cookie
  • setCookie(‘name’,‘Bad’)則在瀏覽器關閉時刪除Cookie

js操作Cookie

  • javascript中設置Cookie的代碼和PHP的方法類似
    • document.cookie=cookiename+'='+value+';expires='+time

獲取客戶端分辨率的代碼

<script type="text/javascript">
	document.cookie='x='+screen.width;
	document.cookie='y='+screen.height;
</script>

PHP接受

<?php
if (isset($_POST['button'])){
	echo $_COOKIE['x'];
	echo $_COOKIE['y'];
}
?>
  • php運行在服務器端無法獲取客戶端分辨率
  • 可以用於根據分辨率顯示不同大小的界面

顯示分辨率

<script type="text/javascript">
    document.cookie='xx='+screen.width;
    document.cookie='yy='+screen.height;

<form id="form1" name="form1" method="post" action="">
    <input type="submit" name="button" id="button" value="顯示分辨率" />
</form>

<?php
if (isset($_POST['button'])){
    echo $_COOKIE['xx']."<br />";
    echo $_COOKIE['yy']."<br />";
}
?>

總結

  • Cookie保存在客戶端而非服務器
  • Cookie有生命週期
  • 可以設置過去的時間用於刪除Cookie
  • JS可以操作Cookie,用戶獲取客戶端的某些信息,再通過PHP傳給服務器

Session

  • Session會話,是有始有終的一系列動作/消息
  • 在計算機中是指一個終端用戶與交互系統進行通信到退出系統所經歷的過程
  • Session是保存在服務器上的,客戶端每次登陸到服務器,服務器都會爲每個登陸的客戶機生成唯一的一 個Session_ ID ,這個Session_ ID會在服務器中自動註銷。重新登陸時會再重新生成一個Session_ ID
  • 瀏覽器開啓登錄到某網頁,到關閉瀏覽器這是一個會話過程
  • 在PHP中使用session_ start()啓動會話,它的作用就像是在服務器上建立一個臨時文件保存會話信息
  • 也可以在php.ini中將session.auto_start設置爲1來自動啓動會話,默認值是0

下面的代碼註冊會話

<?php
	session_start();  //啓動會話
	$_SESSION['name']='';  //創建會話變量
?>
  • 使用會話
<?php
	session_start();
	if (isset($_SESSION('name')))
		echo $SESSION['name'];
?>
  • SESSION使foreachsessionprintr(_SESSION是數組,可以使用foreach遍歷全部session變量,或`print_r(_SESSION);`
  • 刪除會話變量`unset($_SESSION[‘name’]);
  • 刪除多個會話變量$_SESSION=array();
  • 徹底銷燬Sessionsession_destroy();

總結

  • 比Cookie更安全,保存在服務器端
  • 馬上生效,不會滯後
  • 可以在多個頁面之間傳遞消息,可以用於安全登錄
  • 可以啓動、生成變量、銷燬變量
  • 可以保存到數據庫

無論是SESSION還是Cookie在使用時最好先判斷一下是否存在

以上內容均屬原創,如有不詳或錯誤,敬請指出。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章