亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在php中利用Cookie實現一個用戶會話功能

發布時間:2020-12-11 16:54:56 來源:億速云 閱讀:160 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關如何在php中利用Cookie實現一個用戶會話功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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>
<h2> Product Choice Page </h2>
<?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>
<h2> Content Page </h2>
<?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中利用Cookie實現一個用戶會話功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙坪坝区| 麟游县| 富顺县| 自治县| 年辖:市辖区| 乌拉特中旗| 克东县| 成武县| 衡阳县| 正定县| 错那县| 广昌县| 江华| 名山县| 惠安县| 富宁县| 兴国县| 西安市| 阜平县| 邓州市| 北流市| 富川| 平江县| 湘潭市| 宁德市| 乐山市| 民勤县| 阿拉善左旗| 郧西县| 金山区| 寻乌县| 榆社县| 平顺县| 怀柔区| 台东市| 左贡县| 冕宁县| 桦甸市| 永清县| 思南县| 和龙市|