導航:首頁 > 編程語言 > php設置sessionid

php設置sessionid

發布時間:2022-07-25 11:09:46

『壹』 php 怎麼設置session 的值永不過期

把sessionID存到客戶端cookie里試試呢

<?php
session_start();//啟動Session
$_SESSION['count'];//注冊Session變數Count
isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID=session_id();
//如果設置了$PHPSESSID,就將SessionID賦值為$PHPSESSID,否則生成SessionID
$_SESSION['count']++;//變數count加1
setcookie('PHPSESSID',$PHPSESSID,time()+3156000);//儲存SessionID到Cookie中
//echo$count;//顯示Session變數count的值
?>

『貳』 php網站的session 在伺服器端是如何給客戶端分配sessionid的

在PHP.INI裡面有一項session.save_path,就是設置session保存位置的。
session是通過cookie來實現的,當瀏覽器訪問一個頁面時,php發現在cookie裡面沒有sessionid這個值,就會產生一個sessionid出來,同時對應一個伺服器裡面的session文件。然後通過cookie傳給瀏覽器(通過cookie),下次瀏覽器再訪問頁面的時候,就會把這個sessionid給帶上(也是cookie),然後php通過這個cookie找到對應的session文件,讀取session的值。
也就是說如果用戶關了cookie那session就用不了了。

以上就是session的原理,不過一般來說你也不需要了解它。

『叄』 php Session 設置問題

使用到session時,取值還是賦值都要開啟session_start()的
time()>$_SESSION['name'] + 1200這是什麼意思,是想要當時間超過session保存的數據的時間嗎,
不用了吧 如果只是文件session寫入的話可以在伺服器配置的session.gc_probability = 1
session.gc_divisor = 1
session.gc_maxlifetime = 10
這幾個參改寫中

你的session_id 是通過cookie傳遞的吧 如果打開一新頁面沒有得到已注冊的值,session賦值失敗,還有一種可能就是session.cookie_lifetime = 0問題 這值為0的話瀏覽器被重啟cookie保存的session_id丟失

『肆』 php中「session_id()」是什麼意思

session_id()

session_id() 存取目前 session 代號。

語法: string session_id(string [id]);

本函數可取得或者重新配置目前存放 Session 的代號。若無參數 id 則表示只有取得目前 Session 的代號,加上參數則表示將 Session 代號設成新指定的 id。輸入及返回均為字元串。

輸出 session_id()
<?php
session_start();
echo session_id();
// 輸出 dqr58dnuqj2gufvg4o3tmjb9v4
?>

設置 session_id()
<?php
session_id("NowaMagic");
session_start();

echo session_id();
// 輸出 NowaMagic
?>

『伍』 php 如何設置sessionid的有效期

ini_set('session.gc_maxlifetime',20);//20s

用session.gc_maxlifetime來設置

『陸』 用PHP怎麼在session里存多個id

這個你不用擔心,每個session都有唯一的session_id,每次生成session,php都會自動生成1條唯一的session

session_id是不會列印出來的

只能另行輸出 echo session_id()
或者可以:
Session 的工作機制是:為每個訪問者創建一個唯一的 id (UID),並基於這個 UID 來存儲變數。UID 存儲在 cookie 中,亦或通過 URL 進行傳導。

前序:

首先要明白PHPSESSID看似多次刷新都不會改變其實是沒有刪除本地相關聯的cookie,刪除的方法

session_destroy();//刪除伺服器端的session文件

setcookie(session_name(),'',time()-3600,'/');//刪除本地相關聯的cookie

session_unset();//清空內存中的cookie或者是$_SESSION = array();

然後再刷新相應的頁面你就會看到PHPSESSID會發生變化了,根據此可以得:如果session文件已經創建則不重新生成PHPSESSID,否則需要重新生成,生成規則,就看下邊嘍……!

--------------------------------------------------------------------------------------------------------------------------------------

現在經過測試應該是不是檢測session文件是否存在,而是檢測PHPSESSID的cookie是否存在並且是否未過期!特此更正!

------------------------------------------------------------------------------------------------

可能PHP開發者心中多少都思考過這么兩個問題:

種植在客戶端瀏覽器中的PHPSESSIONID會出現重復嗎?
PHPSESSIONID安全性如何,有沒可能被黑客輕易的仿造呢?
帶上這個問題,我稍微注意了一下PHP的源碼後,疑問也就有了答案。

PHP在使用默認的 session.save_handler = files 方式時,PHPSESSIONID的生產演算法原理如下:

hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客戶端IP + 當前時間(秒)+ 當前時間(微妙)+ PHP自帶的隨機數生產器)

從以上hash_func(*)中的數據采樣值的內容分析,多個用戶在同一台伺服器時所生產的PHPSESSIONID重復的概率極低(至少為百萬份之一),設想,但台動態Web Server能到2000/rps已經很強悍了。

另外,黑客如果要猜出某一用戶的PHPSESSIONID,則他也必須知道「客戶端IP、當前時間(秒、微妙)、隨機數」等數據方可模擬。

以下是截取PHP源碼中PHPSESSIONID實現片段:

gettimeofday(&tv, NULL);

if (
zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &array) == SUCCESS &&
Z_TYPE_PP(array) == IS_ARRAY && zend_hash_find(Z_ARRVAL_PP(array), "REMOTE_ADDR", sizeof("REMOTE_ADDR"), (void **) &token) == SUCCESS)
{
remote_addr = Z_STRVAL_PP(token);
}

spprintf(&buf, 0, "%.15s%ld%ld%0.8F", remote_addr ? remote_addr : "", tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);

switch (PS(hash_func))
{
case PS_HASH_FUNC_MD5:
PHP_MD5Init(&md5_context);
PHP_MD5Update(&md5_context, (unsigned char *) buf, strlen(buf));
digest_len = 16;
break;
case PS_HASH_FUNC_SHA1:
PHP_SHA1Init(&sha1_context);
PHP_SHA1Update(&sha1_context, (unsigned char *) buf, strlen(buf));
digest_len = 20;
break;
default:
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid session hash function");
efree(buf);
return NULL;
}

『柒』 php 如何使用cookie安全的保存登錄狀態sessionid

同樣還是將用戶的認證信息保證在一個cookie中,具體如下:
1.cookie名:uid。推薦進行加密,比如MD5('站點名稱'+userid)。
2.cookie值:登錄名|有效時間Expires|hash值。hash值可以由"登錄名+有效時間Expires+用戶密碼(加密後的)的前幾位+salt",salt是保證在伺服器端站點配置文件中的隨機數。
這樣子設計有以下幾個優點:
1.即使資料庫被盜了,盜用者還是無法登錄到系統,因為組成cookie值的salt是保證在伺服器站點配置文件中而非資料庫。
2.如果賬戶被盜了,用戶修改密碼,可以使盜用者的cookie值無效。
3.如果伺服器端的資料庫被盜了,通過修改salt值可以使所有用戶的cookie值無效,迫使用戶重新登錄系統。
4.有效時間Expires可以設置為當前時間+過去時間(比如2天),這樣可以保證每次登錄的cookie值都不一樣,防止盜用者窺探到自己的cookie值後作為後門,長期登錄。

『捌』 php 當瀏覽器禁用cookie怎麼設置session

我們可以拋開cookie使用session,即假定用戶關閉cookie的情況下使用session,其實現途徑有以下幾種:

1、設置php.ini中的session.use_trans_sid = 1或者編譯時打開打開了--enable-trans-sid選項,讓PHP自動跨頁傳遞session id。
2、手動通過URL傳值、隱藏表單傳遞session id。
3、用文件、資料庫等形式保存session_id,在跨頁過程中手動調用。

途徑1舉例說明:

s1.php

<?php
session_start();
$_SESSION[』var1』]="中華人民共和國";
$url="<a href=".""s2.php">下一頁</a>";
echo $url;
?>

s2.php

<?php
session_start();
echo "傳遞的session變數var1的值為:".$_SESSION[』var1』];
?>

『玖』 php中的sessionId是干什麼的

SESSION_ID會話ID。

session_data是編碼會話數據。這個數據是在PHP內部編碼$_SESSION超全局,以序列化字元串,並把它當作這個參數的結果。

請注意會話使用替代序列化方法。

返回值

會話存儲的返回值(通常成功返回 0,失敗返回 1)。

閱讀全文

與php設置sessionid相關的資料

熱點內容
dota2怎麼設置國服伺服器地址 瀏覽:212
單片機高電平驅動 瀏覽:115
ios多選文件夾 瀏覽:909
加強行車調度命令管理 瀏覽:243
伺服器已禁用什麼意思 瀏覽:150
部隊命令回復 瀏覽:755
神奇寶貝伺服器地圖怎麼設置 瀏覽:382
加密演算法輸出固定長度 瀏覽:862
程序員去重慶還是武漢 瀏覽:121
伺服器如何撤銷網頁登錄限制 瀏覽:980
微信公眾平台php開發視頻教程 瀏覽:628
怎麼看蘋果授權綁定的app 瀏覽:255
壓縮機單級壓縮比 瀏覽:380
linux測試php 瀏覽:971
什麼時候梁旁邊需要加密箍筋 瀏覽:40
微信清粉軟體源碼 瀏覽:717
matlabdoc命令 瀏覽:550
如何去ping伺服器 瀏覽:75
ecshop安裝php55 瀏覽:817
javaword庫 瀏覽:958