如何在 Perl 的 CGI 中使用 Cookie?
HTTP 協議是一種無狀態協議。但對於商業網站,需要在不同頁面之間維護會話資訊。例如,一個使用者註冊會在跨越多個頁面的交易後結束。但是如何跨所有網頁維護使用者的會話資訊呢?
在許多情況下,使用 Cookie 是記住和跟蹤偏好、購買、佣金以及其他改善訪客體驗或網站統計資訊所需資訊的最有效方法。
工作原理
您的伺服器以 Cookie 的形式向訪客的瀏覽器傳送一些資料。瀏覽器可能會接受 Cookie。如果接受,它將作為純文字記錄儲存在訪客的硬碟驅動器上。現在,當訪客訪問您網站上的另一個頁面時,Cookie 可供檢索。檢索後,您的伺服器就知道/記住儲存的內容。
Cookie 是 5 個可變長度欄位的純文字資料記錄 -
- **Expires** - Cookie 將過期的日期。如果為空,則 Cookie 將在訪客退出瀏覽器時過期。
- **Domain** - 您網站的域名。
- **Path** - 設定 Cookie 的目錄或網頁的路徑。如果您想從任何目錄或頁面檢索 Cookie,則可以為空。
- **Secure** - 如果此欄位包含單詞“secure”,則 Cookie 只能透過安全伺服器檢索。如果此欄位為空,則不存在此類限制。
- **Name = Value** - Cookie 以鍵值對的形式設定和檢索。
設定 Cookie
向瀏覽器傳送 Cookie 非常容易。這些 Cookie 將與 HTTP 標頭一起傳送。假設您想將 UserID 和 Password 作為 Cookie 設定。因此,它將按如下方式完成 -
#!/usr/bin/perl print "Set-Cookie:UserID = XYZ;\n"; print "Set-Cookie:Password = XYZ123;\n"; print "Set-Cookie:Expires = Tuesday, 31-Dec-2007 23:12:40 GMT";\n"; print "Set-Cookie:Domain = www.tutorialspoint.com;\n"; print "Set-Cookie:Path = /perl;\n"; print "Content-type:text/html\r\n\r\n"; ...........Rest of the HTML Content goes here....
這裡我們使用 **Set-Cookie** HTTP 標頭來設定 Cookie。可選設定 Cookie 屬性,例如 Expires、Domain 和 Path。需要注意的是,Cookie 在傳送神奇行 **"Content-type:text/html\r\n\r\n"** 之前設定。
檢索 Cookie
檢索所有已設定的 Cookie 非常容易。Cookie 儲存在 CGI 環境變數 HTTP_COOKIE 中,它們將具有以下形式。
key1 = value1;key2 = value2;key3 = value3....
以下是如何檢索 Cookie 的示例。
#!/usr/bin/perl
$rcvd_cookies = $ENV{'HTTP_COOKIE'};
@cookies = split /;/, $rcvd_cookies;
foreach $cookie ( @cookies ) {
($key, $val) = split(/=/, $cookie); # splits on the first =.
$key =~ s/^\s+//;
$val =~ s/^\s+//;
$key =~ s/\s+$//;
$val =~ s/\s+$//;
if( $key eq "UserID" ) {
$user_id = $val;
} elsif($key eq "Password") {
$password = $val;
}
}
print "User ID = $user_id\n";
print "Password = $password\n";這將產生以下結果,前提是上述 Cookie 在呼叫檢索 Cookie 指令碼之前已設定。
User ID = XYZ Password = XYZ123
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP