phpsession作用,phpsession原理

本文目錄一覽:

php中session有什麼用?怎麼使用

原生態php的session簡單使用如下:

sesstion_start();                // 首先開啟session

$_SESSION[‘user’] = ‘username’;  // 把username存在$_SESSION[‘user’] 裡面

echo $_SESSION[‘user’];          // 直接輸出 username

session_destroy();               // 銷毀session

php的session 有什麼用

session是什麼,剛開始我也不明白,非專業詞典翻譯為會議,會議期。直到接觸asp後才知道session是幹什麼的,有什麼用。

作個不太恰當的比喻吧(雖然不恰當,但意義卻是一樣的),session就好象你和你女友(或妻子)之間的感情似的,session是你和網站之間的感情。

session在WEB技術中佔有非常重要的份量。由於網頁是一種無狀態的連接程序,因此你無法得知用戶的瀏覽狀態。因此我們必須

通過session記錄用戶的有關信息,以供用戶再次以此身份對web伺服器提供要求時作確認,例如,我們在某些網站中常常要求用戶登錄,

但我們怎麼知道用戶已經登錄了呢,如果沒有session的話,登錄信息是無法保留的,那豈不要讓用戶在每一頁網頁中都要提供

用戶名和密碼。

當然,session不光用於用戶身份認證功能,還可能用於其它方面,以後我們會提到的。

session用中文來解釋就是會話期。一個會話期開始於用戶輸入一個站點的網址時,結束於他離開這個站點時。

session最早出現在動態腳本語言Active Server Pages中,它的功能之強大,是一句話無法說清楚的。

當php還在3.0版本時,session是它永遠的痛。雖然php具有執行速度快,使用靈活,功能強大等優點,但因為session的問題,使很多站點的開發放棄了php,至少我的老闆是這樣認為的。當時有很多php免費函數庫提供在php3上實現session的方案,但都讓人感覺不正宗。

就好象你花好幾千大洋買的手機卻配置一個很粗糙的草作的袋子一樣,雖然功能是一樣的,但總讓人覺得彆扭。php4的出現讓php在session問題上

有了翻身的機會。雖然它的session實現還不是很理想(主要是效率問題),但畢竟是它自己實現的,而且可以實際使用了。

那我們用session幹什麼呢,你說了半天,我用不上的話,你豈不有賣紙張之嫌。OK,我們來看看session有什麼用:作過網站的人都有這樣的體會,在一頁頁面中的變數(在本章都指伺服器端變數,下同)是不能在下一頁中用的,雖然有一些辦法可以實現,比如用form,urlstring等等

但有些對於用戶來說是不方便的,即使讓form自動提交,但其中的延時在現今的網路狀況下足以讓人窒息,而這兩種方法都明顯加大程序員的負擔。如果你正在開發一個大型項目,那這些額外的負擔是不能忽略的。而有了session就好辦了,session中註冊的變數可以作為全局變數使用。什麼,全局變數?

好極了。這樣一來,你知道有什麼用了吧:最主要的用於用戶身份認證,程序狀態記錄,頁面之間參數傳遞。

說了它這麼半天的好處,你已經動心了吧,先別高興,它還有缺點呢:它是用文件保存的變數(當然效率不高了,雖然可以用別的方式,但

很麻煩的),不能保存對象。與之相對的是,asp中的session可以保存對象變數,用內存變數來保存session變數。但為什麼我們還選用php呢,呵呵,

為什麼,你能從本書的開始看到這章,想必你也應該明白了吧,你還不明白,Faint,你再從頭看起吧,我保證你成為PHP專家^_^。

session是怎樣實現的呢?呵呵,你一定以為很高深吧,我來告訴你它的秘密。如果說只保存變數的話,很多讀者都明白,這是很簡單的,

但前面我們說過,http協議是一種無狀態的連接,你怎麼知道那個變數是誰的,這個變數又是誰的呢?在session實現中用cookie實現的。cookie

存在於客戶端,也就是用戶的機器中,裡面保存著用戶的session ID,也就是session號碼,當用戶的瀏覽器請求伺服器時把session ID也一起送到

伺服器,這樣伺服器就可以識別你是誰,也就可以把變數識別開了。這樣我們就不難理解了,為什麼有時session會失效了。不信的話,你可以試試:

在IE的”工具”菜單上有”Internet選項”菜單,打開後再選”安全”-“自定義級別”,將安全設置中的”允許使用每個對話cookies”設為禁用,再看看

session能不能用。這下明白了吧!不過php4在linux/unix平台上可以自動檢查cookies狀態,當cookies 不可用時,自動會把session ID

附帶在url上進行傳遞。這是它在session方面比asp多的唯一的優點了。

PHP session幹嘛用的?舉個簡單易懂的例子

session是一個會話,以數組形式存在,並且有一定的有效期,存儲在伺服器端,而且,他的最大的特性就是具有唯一性!

所謂的唯一性,就是說,在不同的客戶端訪問,session的值是不相同的。

常用於記錄用戶的個人信息,比如網站的登錄等!

session寫入後,在有效期內,無需其他操作即可在同一網站中的任何一個php文件進行訪問!

比如,在登錄頁面寫入 $_SESSION[‘UserName’] = ‘abc’;

那麼,在其他頁面可以使用 $_SESSION[‘UserName’]取得這個session的值,根據這個值可以判定用戶是否登錄、登錄的是哪個用戶賬戶等!

需要注意的是,在使用session之前,需要開啟session,代碼是session_start();

而且,在寫入session之前,不能向頁面有任何的代碼輸出,包括html、css、js等等

比如:

html

?php

session_start();

$_SESSION[‘abc’] = 123;

?

這樣是錯誤的語法,因為之前輸出了html這個標籤!

php中session重要嗎?

非常重要,能保持變數值在不同頁面間不變,從而能很好的共享頁面間的變數值

session的作用是什麼

簡單說來是識別用戶並保持用戶信息

不能使用session會話可能的原因可分幾方面

如果是服務端不能用,例如PHP有的時候不能用,可能是Session的存儲位置設置有問題或是沒有開啟session支持

如果是asp或.net不能用(IIS6) 有可能是應用程序池回收過於頻繁

如果訪問的用戶有的能用,有的不能用那就是客戶端瀏覽器禁用了Cookie

編程語言php中,session的意思以及詳細的介紹(望語言直白些)謝謝啦!

Session,中文譯為「會話」,它的主要用途在於實現對客戶端調用狀態的保持。

要理解這個意思,可以考慮以下的情況:

你訪問某個網站,然後這個網站是需要以會員身份登錄的,那麼當你輸入用戶名、密碼正確登錄後,這個信息怎麼讓下面的網頁得知這個呢?

我們知道,網頁是無狀態的,這句話的意思是:如果你訪問 a 網頁,再訪問 b 網頁,從實質上說,兩個網頁之間如果沒有特別的手段是完全互不相干的(唯一的聯繫可能是這兩個文件都存在一個伺服器上)。

php里的session是超全局數組(php 5以上版本),從這個角度來說,你可以把session看成是保存在內存里,供所有php腳本的訪問的數據塊。

請參看以下相關資料:

關於session

我們知道,用戶訪問一個網站時往往需要瀏覽許多網頁。對於一個通過PHP構築的網站來說,用戶在訪問的過程中需要執行許多的PHP腳本。然而由於HTTP協議自身的特點,用戶每執行一個PHP腳本都需要和Web伺服器重新建立連接。

又由於無狀態記憶的特點,此次連接無法得到上次連接的狀態。這樣,用戶在一個PHP腳本中對一個變數進行了賦值操作,而在另外一個PHP腳本中卻無法得到這個變數的值。例如,用戶在負責登錄的PHP腳本中設置了$user=”wind”,卻無法在另一個PHP腳本中通過調用$user來獲得「wind」這個值。也就是說,在PHP中無法設置全局變數。每個PHP腳本中所定義的變數都是只在這個腳本內有效的局部變數。

Session解決方案,就是要提供在PHP腳本中定義全局變數的方法,使得這個全局變數在同一個Session中對於所有的PHP腳本都有效。上面我們提到了,Session不是一個簡單的時間概念,一個Session中還包括了特定的用戶和伺服器。因此更詳細地講,在一個Session定義的全局變數的作用範圍,是指這個Session所對應的用戶所訪問的所有PHP。

例如A用戶通過Session定義了一個全局變數$user=「wind」中,而B用戶通過Session定義的全局變數$user=「jane」。那麼在A用戶所訪問的PHP腳本中,$user的值就是wind。

php中的Session與Cookie

在PHP開發中對比起Cookie,session 是存儲在伺服器端的會話,相對安全,並且不像 Cookie 那樣有存儲長度限制,本文簡單介紹 session 的使用。

由於 Session 是以文本文件形式存儲在伺服器端的,所以不怕客戶端修改 Session 內容。實際上在伺服器端的 Session 文件,PHP 自動修改 session 文件的許可權,只保留了系統讀和寫許可權,而且不能通過 ftp 修改,所以安全得多。

對於 Cookie 來說,假設我們要驗證用戶是否登陸,就必須在 Cookie 中保存用戶名和密碼(可能是 md5 加密後字元串),並在每次請求頁面的時候進行驗證。如果用戶名和密碼存儲在資料庫,每次都要執行一次資料庫查詢,給資料庫造成多餘的負擔。因為我們並不能只做一次驗證。為什麼呢?因為客戶端 Cookie 中的信息是有可能被修改的。假如你存儲 $admin 變數來表示用戶是否登陸,$admin 為 true 的時候表示登陸,為 false 的時候表示未登錄,在第一次通過驗證後將 $admin 等於 true 存儲在 Cookie,下次就不用驗證了,這樣對么?錯了,假如有人偽造一個值為 true 的 $admin 變數那不是就立即取的了管理許可權么?非常的不安全。

而 Session 就不同了,Session 是存儲在伺服器端的,遠程用戶沒辦法修改 session 文件的內容,因此我們可以單純存儲一個 $admin 變數來判斷是否登陸,首次驗證通過後設置 $admin 值為 true,以後判斷該值是否為 true,假如不是,轉入登陸界面,這樣就可以減少很多資料庫操作了。而且可以減少每次為了驗證 Cookie 而傳遞密碼的不安全性了(session 驗證只需要傳遞一次,假如你沒有使用 SSL 安全協議的話)。即使密碼進行了 md5 加密,也是很容易被截獲的。

當然使用 session 還有很多優點,比如控制容易,可以按照用戶自定義存儲等(存儲於資料庫)。我這裡就不多說了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/219819.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 11:01
下一篇 2024-12-09 11:01

相關推薦

  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • Harris角點檢測演算法原理與實現

    本文將從多個方面對Harris角點檢測演算法進行詳細的闡述,包括演算法原理、實現步驟、代碼實現等。 一、Harris角點檢測演算法原理 Harris角點檢測演算法是一種經典的計算機視覺演算法…

    編程 2025-04-29
  • 瘦臉演算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉演算法 Python 實現的原理和方法,包括該演算法的意義、流程、代碼實現、優化等內容。 一、演算法意義 隨著科技的發展,瘦臉演算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網路BP演算法原理

    本文將從多個方面對神經網路BP演算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP演算法簡介 BP演算法是一種常用的神經網路訓練演算法,其全稱為反向傳播演算法。BP演算法的基本思想是通過正…

    編程 2025-04-29
  • @scope("prototype")的作用及應用

    本文將從以下幾個方面進行詳細闡述@scope(“prototype”)在編程開發中的作用和應用。 一、代碼復用 在開發中,往往會有很多地方需要復用同一個類的…

    編程 2025-04-28
  • Python中import sys的作用

    Python是一種非常強大的編程語言,它的標準庫提供了許多有用的模塊和函數。sys模塊是Python標準庫中的一個重要模塊,用於與Python解釋器和操作系統進行交互。它允許開發者…

    編程 2025-04-28
  • Python配置環境變數的作用

    Python配置環境變數是為了讓計算機能夠更方便地找到Python語言及其相關工具的位置,使其可以在任意目錄下使用Python命令。當您安裝Python後,您需要進行環境變數設置,…

    編程 2025-04-28
  • GloVe詞向量:從原理到應用

    本文將從多個方面對GloVe詞向量進行詳細的闡述,包括其原理、優缺點、應用以及代碼實現。如果你對詞向量感興趣,那麼這篇文章將會是一次很好的學習體驗。 一、原理 GloVe(Glob…

    編程 2025-04-27
  • Python的意義和作用

    Python是一種高級語言,它的簡潔易讀和豐富的庫使得它成為了廣泛使用的編程語言之一。Python可以完成諸如數據科學、機器學習、網路編程等各種任務,因此被很多開發人員和研究人員視…

    編程 2025-04-27

發表回復

登錄後才能評論