phpsessionid
1. php中的sessionId是干什麼的
SESSION_ID會話ID。
session_data是編碼會話數據。這個數據是在PHP內部編碼$_SESSION超全局,以序列化字元串,並把它當作這個參數的結果。
請注意會話使用替代序列化方法。
返回值
會話存儲的返回值(通常成功返回 0,失敗返回 1)。
2. 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
?>
3. php 如何獲取所有的 sessionid
session的高級用法,
把session寫到memcache或資料庫里,就可以實現了
您也可以向我們團隊發出請求,會有更專業的人來為您解答。
如果我的回答沒能幫助您,請繼續追問。
4. 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
?>
5. php怎麼根據sessionid找session呢
例如:某session的id名為:session_id
可用下面訪問:
$_SESSION['session_id'];
6. 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值後作為後門,長期登錄。
7. php sessionid怎麼獲取
用session_id()函數獲取
示例:
<?php
session_start();
echosession_id();
?>
8. 用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;
}
9. php怎麼通過sessionid獲取session-CSDN論壇
t.php文件代碼:
<?php
OB_START();
@Session_start();
$sessionId = session_id();
echo $sessionId;
$_SESSION['abc']=123;
?>
<a href=t2.php?SESSIONID=<?= $sessionId;?>>獲取session</a>
t2.php文件代碼:
<?php
var_mp(session_id($_GET['SESSIONID']));
?>
t2.php也需要開啟session:
<?php
@Session_start();
var_mp(session_id($_GET['SESSIONID']));
?> 《session_name() 返回當前session的名稱》
CSDN創立於1999年,是中國最大的IT社區和服務平台,為中國的軟體開發者和IT從業者提供知識傳播、職業發展、軟體開發等全生命周期服務,滿足他們在職業發展中學習及共享知識和信息、建立職業發展社交圈、通過軟體開發實現技術商業化等剛性需求。擁有超過3000萬注冊會員(其中活躍會員800萬)、50萬注冊企業及合作夥伴。
10. php,通過提交的sessionid,查看sessionid是否失效/存在
session_start();
//if(isset($_SESSION['abc'])&&$SESSION['abc']){//判斷變數存在,且變數值為真
if(isset($_SESSION['abc'])){//判斷變數已經被設置,也就是存在
echo'存在';
}else{
echo'不存在';
}
LS的代碼,首先判斷 這個SESSION變數是否存在要用 isset(),直接用
if($_SESSION['abc']){ 的話,
如果事先給$SESSION['abc'] 賦值了一個空字元串,實際上這個變數是存在的,只是沒有值,
是過不了你的判斷的,