亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

php使用Cookie實現和用戶會話的方法

2024-05-04 23:30:18
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了php使用Cookie實現和用戶會話的方法,分析了Cookie的原理、設置與使用技巧,需要的朋友可以參考下
 

本文實例講述了php使用Cookie實現和用戶會話的方法。分享給大家供大家參考。具體分析如下:

PHP 包含了很多的函數,可以用來管理和記錄用戶信息,包括簡單的 cookie 和全方位的用戶會話。會話使用 PHP 語言內建的技術,使得保存狀態就像是引用超全局變量那樣簡單。

1.Cookie 簡介

我們可以和 PHP 腳本一起使用 cookie 來存儲一些關于用戶的較小的信息。 Cookie 是由用戶瀏覽器存儲的少量數據,它和一個來自服務器或腳本的請求一致。通過一個用戶的瀏覽器,一個單個的主機可以請求保存 20 個 cookie 。每個 cookie 包含一個名字、值和過期日期,以及主機和路徑信息。一個單個的 cookie 的大小限制是 4KB 。

在設置了 cookie 之后,只有發出請求的主機能夠讀取數據,這就保證了用戶隱私得到尊重。另外,用戶可以配置自己的瀏覽器通過他接受或是拒絕所有 cookie 的請求。因此, cookie 應該適度地使用,并且在沒有設計實現警告用戶的一個環境中,不應該作為一個基本元素而依賴。

如果 Web 瀏覽器配置為存儲 cookie ,它將保持基于 cookie 的信息直到過期日期。如果用戶使用瀏覽器瀏覽符合 cookie 的路徑和域的任何頁面,它將會把 cookie 重新發送給服務器。隨后,一個 PHP 腳本能夠訪問 cookie , cookie 在環境變量 HTTP_COOKIE 中或者作為 $COOKIE 超全局變量的一部分,我們可以用 3 種方式來訪問它們:

復制代碼代碼如下:
echo $_SERVER["HTTP_COOKIE"]; 
echo getenv("HTTP_COOKIE");
echo $_COOKIE["vegetable"];

 

2.使用 PHP 設置一個 cookie

我們可以用兩種方法在一個 PHP 腳本中設置一個 cookie 。首先,用 header() 函數來設置 SetCookie 標頭。 Header() 函數需要一個字符串,該字符串隨后將包含到服務器響應的標頭部分。由于標頭會為你自動發送, header() 必須在發送給瀏覽器的熱河輸出之前調用。

復制代碼代碼如下:
head("Set Cookie:vegetable=artichoke; expires=Tue,07-Mar-06 14:39:58 GMT;path=/;domain=yourmain.com");

盡管沒什么困難,這種設置 cookie 的方法還是需要我們編寫一個函數來構建標頭字符串。像這個例子那樣格式化日期并對名 / 值對進行 URL 編碼并不是特別艱難的任務,但它還是一項重復性的工作,因為 PHP 提供了一個函數來做到這些,這就是 setcookie() 。

 

Setcookie() 函數所做的事情就像它的名字所顯示的那樣,它輸出一個 Set-Cookie 標頭。因此,它應該在任何其他內容發送給瀏覽器之前調用。這個函數接受 cookie 名字、 cookie 值、 UNIX 時間戳格式的過期日期、路徑、域,以及一個整數,如果 cookie 僅通過一個安全的連接發送的話,這個整數的值設置為 1. 除了第一個參數以外,這個函數的所有參數都是可選的。

復制代碼代碼如下:
<?php
setcookie ( "vegetable" , "artichoke" , time ()+3600, "/" , ".yourdomain.com" , 0);
 
if ( isset ( $_COOKIE [ "vegetable" ])){
    echo "<p>Hello again, you have chosen: " . $_COOKIE [ "vegetable" ]. ".</p>" ;
}
else {
    echo "<p>Hello you. This may be your first visit.</p>" ;
}
?>

即便我們在腳本第一次運行的時候設置 cookie , $_COOKIE["vegetable"] 變量也不會在這時候創建。由于只有當瀏覽器將一個 cookie 發送到服務器的時候,才會讀取它,因此,直到用戶重新訪問這個域內的一個頁面的時候,我們才能夠讀取它。
正式地講,要刪除一個 cookie ,只需要調用帶有 cookie 名字參數的 setcookies():
setcookie("vegetable");
然而,這種方法并不總是奏效,并且不能依賴這種方法。相反,要刪除一個 cookie ,使用一個確定已經過期的時間來設置 cookie ,這種方法是最安全的:
Setcookie("vegetable", "", time()-60, "/", "yourdomain.com", 0);
還要確保傳遞給 setcookie() 與最初設置 cookie 時候所使用的是相同的路徑、域和安全參數。

 

3.會話函數概覽

當一個訪客訪問一個支持會話的頁面,要么分配一個新的標識符,要么這個用戶和之前的訪問已經建立的一個標識符重新關聯。任何已經和會話相關聯的變量,都通過 $_SESSION 超全局變量可供你的代碼使用。
會話狀態通常存儲在一個臨時文件中,盡管你可以使用一個名為 session_set_save_handler() 的函數實現數據庫存儲。

4.開始一個會話

復制代碼代碼如下:
<?php
session_start ();
echo "<p>Your session ID is " . session_id (). "</p>" ;
?>

5.使用會話變量

 

在每一個 PHP 文檔中訪問一個唯一的會話標識符只是會話功能的開始。當一個會話啟動后,我們可以在超全局變量 $_SESSION 中存儲任意多個變量,然后在任何支持會話的頁面上訪問它們。

下面程序向超全局變量 $_SESSION 添加了兩個變量:

復制代碼代碼如下:
<?php
session_start ();
$_SESSION [ "product1" ] = "Sonic Screwdriver" ;
$_SESSION [ "product2" ] = "HAL 2000" ;
echo "The products have been registered." ;
?>

在用戶移動到一個新的頁面之前,上面程序的神奇之處不會體現出來。下面的程序創建了一個單獨的 PHP 腳本,這個腳本訪問存儲在超全局變量 $_SESSION 中的變量。
復制代碼代碼如下:
<?php
session_start ();
echo "Your chosen products are:" ;
echo "<ul>" ;
echo "<li>" . $_SESSION [ "product1" ]. "</li>" ;
echo "<li>" . $_SESSION [ "product2" ]. "</li>" ;
echo "</ul>" ;
?>

下列程序清單創建一個表單,它允許一個用戶來選擇多個產品。我們可以使用會話變量來創建一個基本的購物車。
arraysession.php:
復制代碼代碼如下:
<?php
session_start ();
?>
<html>
<head>
<title> Storing an array with a session </title>
</head>
<body>
<h1> Product Choice Page </h1>
<?php
if ( isset ( $_POST [ "form_products" ])){
    if (! empty ( $_SESSION [ "products" ])){
       $products = array_unique (
       array_merge ( unserialize ( $_SESSION [ "products" ]),
       $_POST [ "form_produces" ]));
    }
    else
    {
       $_SESSION [ "products" ] = serialize ( $_POST [ "form_products" ]);
    }
    echo "<p>Your products have been registered!</p>" ;
}
?>
<form method = "POST" action = " <?php echo $_SERVER [ "PHP_SELF" ]; ?> " >
<p><strong> Select some products: </strong><br>
<select name = "form_product[]" multiple = "multiple" size = "3" >
<option value = "Sonic Screwdriver" > Sonic Screwdriver </option>
<option value = "Hal 2000" > Hal 2000 </option>
<option value = "Tardis" > Tardis </option>
<option value = "ORAC" > ORAC </option>
<option value = "Transporter bracelet" > Transporter bracelet </option>
</select>
<p><input type = "submit" value = "choose" /></p>
</form>
<p><a href = "session1.php" > go to content page </a></p>
</body>
</html>

 
session1.php:
復制代碼代碼如下:
<?php
/*
  * Created on 2011-1-19
  *
  * To change the template for this generated file go to
  * Window - Preferences - PHPeclipse - PHP - Code Templates
  */
  session_start ();
?>
<html>
<head>
<title> Accessing session variables </title>
</head>
<body>
<h1> Content Page </h1>
<?php
if ( isset ( $_SESSION [ "products" ])){
    echo "<strong>Your cart:</strong><ol>" ;
    foreach ( unserialize ( $_SESSION [ "products" ]) as $p ){
       echo "<li>" . $p . "</li>" ;
    }
    echo "</ol>" ;
}
?>
<p><a href = "arraysession.php" > return to product choice page </a></p>
</body>
</html>

6.在查詢字符串中傳遞會話 ID

 

7.銷毀會話和重置變量

8.在一個帶有注冊用戶的環境中使用會話

希望本文所述對大家的php程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一二三四五区| 久久久成人的性感天堂| 日韩在线观看免费| 久久香蕉频线观| 色偷偷av一区二区三区乱| 国产精品美腿一区在线看| 久久最新资源网| 日韩精品日韩在线观看| 国产精品视频地址| 国产香蕉一区二区三区在线视频| 欧美精品18videosex性欧美| 亚洲乱码一区av黑人高潮| 一二美女精品欧洲| 欧美性生交大片免网| 欧美日韩亚洲精品内裤| 国内精品一区二区三区四区| 亚洲精品有码在线| 亚洲欧美精品中文字幕在线| 亚洲国产精彩中文乱码av在线播放| 欧美一级淫片videoshd| 亚洲国产精品电影| 国产亚洲一区二区在线| 日韩免费在线播放| 亚洲激情在线观看视频免费| 欧美在线亚洲在线| 欧美亚洲激情视频| 亚洲乱亚洲乱妇无码| 91在线看www| 日韩中文字幕精品| 亚洲国产精品久久久| 精品在线小视频| 亚洲免费一在线| 日韩视频在线观看免费| 久久精品99国产精品酒店日本| 奇米成人av国产一区二区三区| 91视频国产精品| 日韩国产高清污视频在线观看| 亚洲性视频网址| 国产精品女主播视频| 国产99久久精品一区二区 夜夜躁日日躁| 国产91精品黑色丝袜高跟鞋| 日韩在线高清视频| 91高清免费视频| 91天堂在线观看| 欧美日韩国产一区中文午夜| 欧美黑人性生活视频| 欧美日韩第一页| 亚洲最大福利视频网| 91精品久久久久久久久青青| 国产一区二区黄| 久久精品国产一区二区电影| 国产精品啪视频| 久久免费视频网站| 亚洲va欧美va国产综合剧情| 日韩精品中文字幕在线播放| 毛片精品免费在线观看| 高潮白浆女日韩av免费看| 日韩亚洲一区二区| 国产精品99久久久久久久久久久久| 欧美日韩国产页| 毛片精品免费在线观看| 亚洲色图狂野欧美| 亚洲成人久久网| 日韩小视频在线| 日韩欧美亚洲国产一区| 北条麻妃一区二区在线观看| 美女性感视频久久久| 国产一区二区三区在线免费观看| 色婷婷成人综合| 日韩av影视综合网| 国产日韩中文字幕在线| 在线观看欧美成人| 国产精品亚洲一区二区三区| 97av视频在线| 国产成人高潮免费观看精品| 亚洲免费高清视频| 青青在线视频一区二区三区| 国产区精品在线观看| 国产精品成人一区二区三区吃奶| 亚洲午夜av久久乱码| 日本在线精品视频| 中文综合在线观看| 亚洲无限乱码一二三四麻| 亚洲欧美日韩一区二区三区在线| 亚洲伊人成综合成人网| 青青草99啪国产免费| 91精品啪在线观看麻豆免费| 日韩免费在线免费观看| 亚洲综合小说区| 亚洲国产成人精品久久久国产成人一区| 成人久久一区二区三区| 欧美裸体xxxx极品少妇| 国内免费久久久久久久久久久| 日日狠狠久久偷偷四色综合免费| 欧美丝袜一区二区三区| 欧美超级免费视 在线| 欧美日韩福利在线观看| 欧美日韩在线观看视频小说| 青青草原一区二区| 日韩色av导航| 国产精品免费福利| 久久偷看各类女兵18女厕嘘嘘| 国产精品免费久久久| 日本欧美中文字幕| 日韩精品视频免费在线观看| 一本大道久久加勒比香蕉| 伊人久久五月天| 亚洲视频第一页| 久久激情视频久久| 清纯唯美日韩制服另类| 亚洲成人性视频| 91sa在线看| 国产精品久久久亚洲| 国产美女精品视频免费观看| 爽爽爽爽爽爽爽成人免费观看| 欧美激情精品久久久久久免费印度| 久久精品视频网站| 久久久国产精品亚洲一区| 日韩欧美成人免费视频| 亚州欧美日韩中文视频| 久久久久久久91| 懂色av中文一区二区三区天美| 欧美成人午夜激情| 日韩在线观看视频免费| 亚洲va国产va天堂va久久| 欧美一级bbbbb性bbbb喷潮片| 91精品国产自产在线| 欧美激情成人在线视频| 久久99精品视频一区97| 日韩黄色在线免费观看| 欧美在线视频免费观看| 欧美老女人性视频| 九九九久久国产免费| 91香蕉嫩草神马影院在线观看| 亚洲成av人影院在线观看| 精品国产乱码久久久久久天美| 成人av在线天堂| 亚洲视频电影图片偷拍一区| 黄色成人在线免费| 国产欧美日韩精品在线观看| 欧美性猛交xxxx富婆弯腰| 亚洲xxxx妇黄裸体| 欧美性xxxx极品hd满灌| 精品国产网站地址| 午夜免费在线观看精品视频| 中文字幕日韩欧美在线视频| 亚洲2020天天堂在线观看| 最新日韩中文字幕| 91在线视频导航| 欧美精品久久久久| 91在线视频一区| 欧美精品一本久久男人的天堂| 亚洲天堂av在线免费观看| www.国产精品一二区| 久久青草精品视频免费观看| 亚洲欧美日韩第一区| 欧美激情综合色| 成人做爰www免费看视频网站| 成人黄色av网| 欧美黑人又粗大| 国产精品视频免费在线| 亚洲天堂精品在线| 国产精品pans私拍| 日韩欧美在线免费|