[TOC]
## HTTP無狀態
>[success]無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果 后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
無狀態性客戶端和服務器端連接通信運行速度快,服務器應答也快。因為無狀態,協議對事務處理是沒有記憶性的是獨立的。所以為了滿足后面事務需要前面的事務有關信息,所以事務有關的信息要在協議外發送。
## Cookies
>[success]cookie 常用于識別用戶。
Cookie是利用了網頁代碼中的HTTP頭信息進行傳遞的,瀏覽器的每一次網頁請求,都可以伴隨Cookie傳遞。 服務器將Cookie添加到網頁的HTTP頭信息中,伴隨網頁數據傳回到你的瀏覽器,瀏覽器會根據你電腦中的Cookie設置選擇是否保存這些數據。如果瀏覽器不允許Cookie保存,則關掉瀏覽器后,這些數據就消失。
### 如何創建 cookie
**語法**
~~~
setcookie(name, value, expire, path, domain);
~~~
實例
~~~
<?php
setcookie("user", "Alex Porter", time()+3600);
echo $_COOKIE["user"];
//$_COOKIE 變量用于取回 cookie 的值。
?>
~~~
### COOKIE生命周期
Cookie有一個Expires(有效期)屬性,這個屬性決定了Cookie的保存時間,服務器可以通過設定Expires字段的數值,來改變Cookie的保存時間。如果不設置該屬性,或設為0,那么Cookie只在瀏覽網頁期間有效,關閉瀏覽器,這些Cookie自動消失。
### COOKIE數量不大小
#### 數量
各個瀏覽器中會不同,同一瀏覽器版本也不同 IE8允許每個域保存50個cookie,Firefox允許每個域保存50個cookie
#### 大小
一般來說允許4Kb,不同瀏覽器,不同版本略有不同
### COOKIE儲存數組或對象
#### serialize(序列化)
~~~
string serialize ( mixed $value )
~~~
serialize() 返回字符串,此字符串包含了表示 value 的字節流,可以存儲于任何地方。反函數:unserialize
#### json_encode(轉json)
~~~
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
~~~
json_encode()成功則返回 JSON 編碼的 string 或者在失敗時返回 FALSE 。 反函數:json_decode(對 JSON 格式的字符串進行解碼)
## SESSION
session從用戶訪問頁面開始,到斷開和網站連接為止,形成一個會話的生命周期。在會話期間,分配客戶唯一的一個UID,用來UID標識當前用戶,和其他用戶進行區分。
session會話時,sessionid會分別保存在客戶端和服務器端兩個位置,對于客戶端使用臨時的Cookie保存(Cookie名稱為PHPSESSID)或者通過URL字符串傳遞,服務器端也以文本文件形式保存在指定的 Session目錄中。
session通過UID接受每一個訪問請求,從而識別當前用戶、跟蹤和保持用戶具體資料,以及Session變量(在Session活動期間,可在 Session中存儲數字或文字資料),比如session_name等等,這些變量信息保存在服務器端。
### 開始 PHP Session
在您把用戶信息存儲到 PHP session 中之前,首先必須啟動會話。
~~~
<?php
session_start();
?>
~~~
### Session的使用
存儲和取回 session 變量的正確方法是使用 PHP $_SESSION 變量:跟數組的使用方法相同
~~~
<?php
session_start();
//開啟session
$_SESSION["views"]=1;
//往session存儲數據
echo $_SESSION["views"];
//讀取session里面的數據
unset($_SESSION["views"]);
//刪除session變量
$_SESSION=array();//刪除所有session變量,不刪除session文件
session_unset();
//釋放當前在內存中已經創建的所有$_SESSION變量,但不刪除session文件以及不釋放對應的session id
session_destroy();
//刪除當前用戶對應的session文件以及釋放session id,內存中的$_SESSION變量內容依然保留
?>
~~~
### SESSION垃圾回收
修改php.ini配置可以進行session垃圾回收機制的配置
session.gc_probability = 1(session清除基數 )
session.gc_divisor = 100(定義在每次初始化會話時,啟動垃圾回收程序的概率。這個收集概率計算公式如下:session.gc_probability/session.gc_divisor; 對會話頁面訪問越頻繁,概率就應當越小。建議值為1/1000~5000。)
session.gc_maxlifetime = 1440(超過此參數所指的秒數后,保存的數據將被視為'垃圾'并由垃圾回收 程序清理。)
>[danger] 練習:給留言系統增加登錄注冊功能
- 序言
- 第一章:準備工作
- 寫在學習之前的話
- web應用開發結構
- 開發工具/環境
- 第二章:展現層面(HTML/CSS)
- HTML簡介
- HTML基礎
- HTML編碼
- HTML鏈接
- HTML圖像
- HTML列表
- HTML表單
- HTML表格(分水嶺)
- HTML 實體
- HTML框架
- CSS層疊樣式表
- CSS選擇器
- CSS文本/字體
- CSS繼承和疊加
- CSS框模型
- CSS浮動(分水嶺)
- CSS定位
- CSS背景
- CSS圖標字體
- CSS補充
- 開發技巧
- 第三章:展現層面(Javascript)
- JS簡介
- JS實現
- JS輸出交互
- JS變量
- JS數據類型
- JS運算符
- JS流程控制(分水嶺)
- JS函數
- JS數組
- JS對象(分水嶺)
- JS數組對象
- JS字符串對象
- JS數學對象
- JS日期對象
- JS BOM對象(分水嶺)
- JS DOM對象
- JS事件對象
- JS元素對象
- JS DOM節點
- 第四章:展現層面(Jquery)
- JQ簡介
- JQ使用
- JQ選擇器
- JQ篩選
- JQ屬性
- JQ-CSS
- JQ事件
- JQ文檔處理
- JQ效果
- JQ-ajax
- 第五章:邏輯/業務層面(PHP)
- PHP簡介
- PHP變量
- PHP數據類型
- PHP常量
- PHP運算符
- PHP流程控制
- PHP函數(分水嶺)
- PHP日期
- PHP數學
- PHP數組
- PHP字符串
- PHP正則表達式(分水嶺)
- PHP目錄操作
- PHP文件
- PHP上傳/下載
- PHP面向對象(分水嶺)
- PHP圖像處理
- PHP會話控制
- Ajax異步處理
- PHPMysql擴展
- PHPMysqli擴展
- PHPPdo擴展
- PHP接口
- PHP命名空間
- 第六章:邏輯/業務層面(框架設計)
- 第七章:存儲層面(mysql)
- Mysql基礎
- Mysql Sql簡介
- Mysql數據庫
- Mysql數據類型
- Mysql數據表
- Mysql操作記錄
- Mysql查詢
- Mysql修改表結構
- Mysql日期與時間
- Mysql分組統計
- Mysql多表查詢
- Mysql安全
- Mysql存儲引擎
- Mysql事務
- Mysql視圖
- Mysql觸發器
- Mysql存儲過程
- Mysql存儲函數
- Mysql優化
- 第八章:服務器(Linux)
- Linux介紹與安裝
- Shell
- 目錄與文件操作
- VIM編輯器使用
- 帳號管理
- SUDO
- 權限控制
- 壓縮與打包
- 軟件安裝
- 計劃任務
- 進程管理
- 寶塔Linux面板