session+cookie

Session
php

Session 指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所通過的這段時間,也數組

就是用戶瀏覽這個網站所花費的時間。從上述的定義中咱們能夠看到,Session 其實是一瀏覽器

個特定的時間概念。 服務器

通常來講,在網站上某一個頁面中的變量(指服務器端變量,下同)是不能在下一頁中用cookie

的,有了session就好辦了。session中註冊的變量能夠做爲全局變量使用。這樣咱們就能夠session

將session用於用戶身份認證,程序狀態記錄,頁面之間參數傳遞。dom

如何建立SESSIONide

使用session以前不能有任何輸出函數

使用session 必須開啓標誌  代碼爲測試

<?php

Session_start();

?>

在PHP中session 會話是保存在一個全局數組中,這個數組爲$_SESSION,你能夠經過增長數

組索引增長會話元素。看例子

<?php

session_start();//開啓session標誌

$_SESSION['USER'] = 'zppx';//設置一個會話元素USER 值爲zppx

$_SESSION['pass'] = 'password';//設置一個會話元素pass 值爲password

?>

將以上代碼保存爲session_1.php,並瀏覽

同時新建一個文件爲session_2.php

代碼爲

<?php

session_start();//開啓session標誌

//查看設置的結果

print_r($_SESSION);

?>

瀏覽能夠查看輸出的結果:

Array ( [USER] => zppx [pass] => password )

說明咱們的會話已經產生做用


如今咱們來看下一個簡單的使用原理

<?php

//簡單的計數器

session_start();

if(!isset($_SESSION['counter'])){

$_SESSION['counter'] = 1;

}else{

$_SESSION['counter'] ++;

}

echo $_SESSION['counter'];

?>

保存爲session_3.php

不斷的瀏覽刷新這個頁面能夠看到值在不斷的變化

如今須要咱們來解釋幾個問題。

1. 如何修改已經保存的session的值呢?

$_SESSION['NAME'] = 'PHP';

2. 銷燬session

session_unset();

session_destroy();

3. 查看sessionid ,session_id()

echo session_id();

4. session編碼與解碼

$string = session_encode();

echo $string;

session_unset();

session_decode($string);

print_r($_SESSION);

session相關參數的解釋

/* *

* session 用來跟蹤用戶的狀態,默認生成sessionid

* session 配置的相關參數

* session_auto_start 開啓session

* session_name 發送到客戶端得session cookie名稱  默認爲  phpsesionid

* session.cookie_lifetime 生命週期

* session.cookie_path 有效路徑  默認「/」不須要需該

* session.cookie_domain 對什麼域名有效

* session_sava_handler session存儲到什麼文件,默認爲  files文件

* session_save_path 存儲路徑

* session_gc_maxlifetime 過時時間  


* session.use_trans_sid 跟蹤當COOKIE禁用採用url

* 查看當前會話配置

* session_get_cookie_params();

* session_set_cookie_params();

*

*

*

* */

//print_r(session_get_cookie_params());

COOKIE

cookie 是一種在遠程瀏覽器端儲存數據並以此來跟蹤和識別用戶的機制。

PHP 在http 協議的頭信息裏發送cookie,所以  setcookie()     函數必須在其它信息被輸出到瀏覽器

前調用,這和對  header()    函數的限制相似

cookie 是個很小的  文本文件4kb,當用戶訪問網站時,會當即生成個這樣的文件,保存在

用戶的客戶端

一般以username@domainname保存

* cookie技術

* 1.記錄訪客的信息

* 2.頁面之間傳遞變量

設置cookie

使用 setcookie()函數設置cookie

如  setcookie("visit","php",mktime()+86400,"/")

參數祥解:setcooke(name, value, expires, path , domain, secure);

* cookie 屬性

* 1.name 名字(必須)

* 2.value 值

* 3.expires 過時時間(必須)

* 4.path  設置「/」  表示這個域全部數組均可以訪問

* 5.domain 有效的域名

* 6.secure 布爾值  ,若是爲true 表示只有ssl加密鏈接才發送cookie到客戶端

代碼片斷

<?php

$value = 'szzppx';

setcookie("TestCookie", $value); /* 簡單  cookie設置  */

setcookie("TestCookie", $value, time()+3600); /* 有效期  1個小時  */  


setcookie("TestCookie", $value, time()+3600, "/~zppx/",".xxx.com", 1); /*  有效目錄  /~zppx,有

效域名  xxx.com 及其全部子域名  */

?>

Cookie 的讀取:

直接用php  內置超級全局變量$_COOKIE 就能夠讀取瀏覽器端的cookie

以前咱們設置了個visit

如今咱們來讀取

print $_COOKIE[visit];

cookie 的刪除:

只需把有效時間設爲小於當前時間,和把值設置爲空

如:setcookie("visit ", "", time()-1);

常見問題解決:

1) 用 setcookie()時有錯誤提示,多是由於調用setcookie()前面有輸出或空格。也可能你的文

檔是從其餘字符集轉換過來,文檔後面可能帶有 BOM 簽名(就是在文件內容添加一些隱藏

的BOM 字符)。解決的辦法就是使你的文檔不出現這種狀況。還有經過使用ob_start()函數

也能處理一點。

2) $_COOKIE 受magic_quotes_gpc 影響,可能自動轉義。

3) 使用的時候,有必要測試用戶是否支持cookie。

<?php

/* *

error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);//修改錯誤提示信息

ini_set('display_errors',true);//設置PHP錯誤提示

*/

if(!isset($_COOKIE['visit'])){

setcookie("visit","php",mktime()+86400,"/") or die("客戶端禁止cookie");

echo "hellow first";

}else{

echo "second";

}

下面爲一個完成的cookie操做類,供後期參考


<?php

class cookieclass{

private $cookiename;

private $cookievalue;

private $cookieexpiry;

public function __construct(){

$num_args = func_num_args();

if($num_args >0){

$args = func_get_args();

$this->cookiename = $args[0];

$this->cookievalue = $args[1];

$this->cookieexpiry = $args[2];

$this->cookieset();

}

}

//設置cookie

public function cookieset(){

try{

if($this->cookiename  !="" && $this->cookievalue !="" &&

$this->cookieexpiry !=""){

setcookie($this->cookiename,$this->cookievalue,time()+$this->cookieexpiry);

}else{

throw new exception("你必須對cookie設置個名字和過時時間");

}

}catch(exception $e){

echo $e->getmessage();

}

}

//修改cookie中指定的值

public function change($newvalue){

$_COOKIE[$this->cookiename] = $newvalue;

}

//取得須要的值

public function getvalue(){

return $_COOKIE[$this->cookiename];

}

//刪除某個值

public function remove(){

$this->change("");

}

}

?>


//創建個COOKIE

$mycookie = new cookieclass("cookieid","php","60");

echo $mycookie->getvalue();

相關文章
相關標籤/搜索