php寫session
① php如何把數據存入session
$_SESSION["參數"]=value;
舉個例子:
你打算把登陸用戶的信息,我們這里用$info來代替所有信息,也就是要加入到session中的內容,這里$_SESSION["參數"]裡面的參數是可以自定義的,我們自力亦用info,那麼放入session就是:$_SESSION[info] = $info;
當然要加入session裡面,php代碼的開始不要忘記session_strat()這個函數
② 關於PHP里SESSION的問題
session是在用戶登錄伺服器後,伺服器給每個用戶一個sessionID,這個是唯一的,通常我寫程序會在session裡面記錄一下登錄用戶的信息,你在A機器上面訪問那個給session賦值的頁面,這個時候那個賦值已經這個A機器的sessionID對應的session了,而跑到B機器上面的話,你只訪問那個輸出的頁面,因為沒有賦值,肯定不會顯示,就是先訪問了賦值的頁面,輸出來了,也和A機器的是不一樣的sessionID
③ php session是怎樣生成的
session是在伺服器端保持用戶會話數據的一種方法,對應的cookie是在客戶端保持用戶數據。HTTP協議是一種無狀態協議,伺服器響應完之後就失去了與瀏覽器的聯系,最早,Netscape將cookie引入瀏覽器,使得數據可以客戶端跨頁面交換,那麼伺服器是如何記住眾多用戶的會話數據呢?
首先要將客戶端和伺服器端建立一一聯系,每個客戶端都得有一個唯一標識,這樣伺服器才能識別出來。建議唯一標識的方法有兩種:cookie或者通過GET方式指定。默認配置的PHP使用session的時會建立一個名叫」PHPSESSID」的cookie(可以通過php.ini修改session.name值指定),如果客戶端禁用cookie,你也可以指定通過GET方式把session id傳到伺服器(修改php.ini中session.use_trans_sid等參數)。
我們查看伺服器端session.save_path目錄會發現很多類似sess_vv9lpgf0nmkurgvkba1vbvj915這樣的文件,這個其實就是session id 「vv9lpgf0nmkurgvkba1vbvj915″對應的數據。真相就在這里,客戶端將session id傳遞到伺服器,伺服器根據session id找到對應的文件,讀取的時候對文件內容進行反序列化就得到session的值,保存的時候先序列化再寫入。
事實就是這樣,所以如果伺服器不支持session或者你想自定義session,完全可以DIY,通過PHP的uniqid生成永不重復的session id,然後找個地方存儲session的內容即可,你也可以學flickr把session存儲在MySQL資料庫中。
④ php中如何使用SESSION
1、在php中使用session,首先要啟動session會話,啟動session會話要使用php內置函數session_start(),如圖所示。
⑤ 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 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的用法
在使用上是為了能夠在伺服器端保存一個能夠跨頁面使用的變數
//直接在index頁面使用,並給出變數名
$_SESSION['username']='張三';//將張三保存到名為username的session中
//在你的userInfo直接輸出
echo$_SESSION['username'];//輸出名為username的session
在沒有使用框架的時候請在頁首加上session_start()
⑧ php登錄後生成session怎麼弄
登陸頁index.php
<?PHP
if(isset($_POST['submit'])&&isset($_POST['submit'])=='確定')
{
if($_POST['user']=='user'&&$_POST['pwd']=='pwd')
{
session_start();//打開session
$_SESSION["user"]=$_POST['user'];//新建一個session
echo'登陸成功';
}
else
echo'用戶名或密碼錯誤!';
}
else
{
echo'<formact=""method="post">';
echo'用戶名:<inputname="user"type="text"/>';
echo'密碼:<inputname="pwd"type="password"/>';
echo'<inputtype="submit"name="submit"value="確定"/>';
echo'</form>';
}
?>
判斷是否登陸頁add.php
<?php
session_start();
if($_SESSION["user"]==null)
{
echo"請登陸";
echo"<script>location.href='index.php';</SCRIPT>";
returnfalse;
}
else
{
echo"以登陸";
echo"<ahref='esc.php'>點擊退出</a>";
}
?>
退出頁esc.php
<?php
session_start();
session_destroy();
echo"<script>alert('退出成功!');this.location.href='index.php';</SCRIPT>";
?>
⑨ php如何將驗證碼寫入session
session
可以翻譯成會話
瀏覽器跟php伺服器連接成功後就是一個會話,再此會話中的session只對此瀏覽器進程有效
對其他均無效。
舉個例子
A
刷新了一下驗證碼
此時$_SESSION["abc"]
=
1234
B
在同一時間也刷新了驗證碼,此時B的$_SESSION["abc"]
=
4567
這兩個session是同時存在的,但是佔用的是不同的兩塊內存空間
但是他們互相獨立,沒有任何關系。
只要瀏覽器關閉或者長時間沒有相應,對應的session就會自動釋放
刷新時重新生成的驗證碼會覆蓋到之前的,不會一直增加的
⑩ 編程語言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 還有很多優點,比如控制容易,可以按照用戶自定義存儲等(存儲於資料庫)。我這里就不多說了。