php伺服器session
㈠ php伺服器端怎樣獲得session
你可以按下面的步驟試一下:
一、首先確認你在首頁上對session已經正確賦值(測試的方法是在首頁賦值一個session後再取出並顯示,看看結果是否能夠輸出)
二、你確認你在子頁面中取出的session就是首頁所賦值的session,沒有寫錯字元,是否把0看成了O,把1看成了L
三、session_start()函數不但在賦值頁需要打開,在取值頁面也是要開的,而且你確認session_start位於所有輸出之前開啟的嗎?(也就是說,在session_start()函數之前,不能存在什麼echo
/print/print_r/var_mp/之類的能夠在網頁上列印文本的語句!)
四、你是否確定你測試你自己網站所使用的瀏覽器開啟了cookie,是否因為防止廣告跟蹤等關閉了瀏覽器的cookie(因為session基於cookie)
五、如果還是不行,你打開你的php.ini文件,查找到[Session],然後在裡面看一下session到底有沒有開啟、目錄設置在哪裡,PHP是否對所設置的目錄擁有讀寫許可權(Linux)、是否使用了資料庫存儲等等
如果你確認了以上這幾條,還是沒辦法解決這個問題,你可以簡訊我,我給你我的Q之後遠程幫你調試。
㈡ php中$_session[]是什麼意思
用戶會話保存變數
1.php文件
<?php
session_start();
$_SESSION["str"]="我是中國人!!!";
?>
2.php文件
<?php
session_start();
echo $_SESSION["str"];
?>
先執行1.php,,再執行2.php,,會看到在1.php裡面設置的變數被輸出了,,就這作用,,用來保存跨域的變數
樓上說的不對,,session雖說是保存在伺服器端,,但對客戶端仍有數據發送,並且是以cookie的方式,,如果客戶端禁用了cookie,,session也是用不了的.....還有,,session也是可以造假的...並不一定百分之一百安全
㈢ php中如何使用SESSION
1、在php中使用session,首先要啟動session會話,啟動session會話要使用php內置函數session_start(),如圖所示。
㈣ php在伺服器中獲取不到session的值
確定一下幾點
1之前的代碼邏輯是否已經給session賦值,使用
var_mp
($_SESSION)來查看
2請求中是否回傳了PHPSESSID,如果沒有,則可能導致獲取session失敗
3是否在操作時清除了瀏覽器的cookie?
㈤ php 怎麼使用session
PHP session用法其實很簡單它可以把用戶提交的數據以全局變數形式保存在一個session中並且會生成一個唯一的session_id,這樣就是為了多了不會產生混亂了,並且session中同一瀏覽器同一站點只能有一個session_id,下面我們一起來看看關於session使用方法。
如何使用session,凡是與session有關的,之前必須調用函數session_start();
為session賦值很簡單,如:
<?php
Session_start();
$Name = "這是一個Session例子";
Session_Register("Name");//注意,不要寫成:Session_Register("$Name");
Echo $_SESSION["Name"];
//之後$_SESSION["Name"]為"這是一個Session例子"
?>
在php4.2之後,可以為session直接賦值:
復制代碼 代碼如下:
<?PHP
Session_Start();
$_SESSION["name"]="value";
?>
㈥ 編程語言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 還有很多優點,比如控制容易,可以按照用戶自定義存儲等(存儲於資料庫)。我這里就不多說了。
㈦ PHP中,兩個伺服器如何傳遞SESSION
最好的辦法是把SESSION寫進資料庫,又安全,資料庫開啟遠程訪問,也就是在一台電腦上可以訪問另一台電腦的資料庫,這樣兩個伺服器的SESSION都把數據寫進這一個資料庫里,又可以相互讀取,資料庫也就是做了一個橋梁。
㈧ php中session問題
因為session是保存伺服器
端的,
其實cookie也應該是一樣的,你不將數據提交
就相當於沒給變數負直,
刷新後
因為
之前給復直過了,這樣
就能夠獲取到那個值了,
㈨ PHP(或其他語言) 的Session 運行機制是
session實現與工作原理
瀏覽器和伺服器採用http無狀態的通訊,為了保持客戶端的狀態,使用session來達到這個目的。然而服務端是怎麼樣標示不同的客戶端或用戶呢?
假如你參加一個晚會,認識了很多人,你會採取什麼方式來區分不同的人呢!你可能根據臉型,也有可能根據用戶的名字,或者人的身份證,即採用一個獨一無二的標示。在session機制中,也採用了這樣的一個唯一的session_id來標示不同的用戶,不同的是:瀏覽器每次請求都會帶上由伺服器為它生成的session_id.
簡單介紹一下流程:當客戶端訪問伺服器時,伺服器根據需求設置session,將會話信息保存在伺服器上,同時將標示session的session_id傳遞給客戶端瀏覽器,
瀏覽器將這個session_id保存在內存中(還有其他的存儲方式,例如寫在url中),我們稱之為無過期時間的cookie。瀏覽器關閉後,這個cookie就清掉了,它不會存在用戶的cookie臨時文件。
以後瀏覽器每次請求都會額外加上這個參數值,再伺服器根據這個session_id,就能取得客戶端的數據狀態。
如果客戶端瀏覽器意外關閉,伺服器保存的session數據不是立即釋放,此時數據還會存在,只要我們知道那個session_id,就可以繼續通過請求獲得此session的信息;但是這個時候後台的session還存在,但是session的保存有一個過期
時間,一旦超過規定時間沒有客戶端請求時,他就會清除這個session。
下面介紹一下session的存儲機制,默認的session是保存在files中,即以文件的方式保存session數據。在php中主要根據php.ini的配置session.save_handler來選擇保存session的方式。如果要做伺服器的lvs,即多台server的話,我們一般使用memcached的方式session,否則會導致一些請求找不到session。
一個簡單的memcache配置:
session.save_handler = memcache
session.save_path = "tcp://12.8.1.8:1000"
當然如果一定要使用files文件緩存,我們可以將文件作nfs,將所有的保存session文件定位到一個地方。返回給用戶的session-id最終保存在內存中,這里我們也可以設置參數將其保存在用戶的url中。
㈩ php中session存在了哪裡
當然是在伺服器端,但不是保存在內存中,而是保存在文件或資料庫中。 默認情況下,php.ini 中設置的 SESSION 保存方式是 files(session.save_handler = files),即使用讀寫文件的方式保存 SESSION 數據,而 SESSION 文件保存的目錄由