最近問無限分類的類樹問題比較多,所以一高興自己寫了一個,我剛寫完的,大家用用看,看看怎麼實現起來更快,更簡單,把你的樹也貼出來(要只查詢一次資料庫的)
這是一棵分類列表的類樹, 支援無限分類
一個分類下面可以同時有"包含子類的分類"和"最終分類";
唯一的優點是*****只需要進行一次的資料庫*****查詢.
樣子不是很好看,不過可以自訂修改,可以自己定義css加裡面
快取方面還沒有作,可以自己補上
下面例子的目錄結構是這樣的。
▪--Catagory.php
▪--images----treeopen.gif ----treeclose.gif
▪--圖片----line.gif 🎜>
/****************tree.jsp*********************/
函數Expand( id){
節點= document.all('節點' id);
if(node.style.display==''){
document.images('img' id).src = imgopen;
}其他{
document.images('img' id).src = imgclose;
}
}
/****************目錄.php*********************/
define('CATAGORY_TREE_EXPEND_NONE',0);
define('CATAGORY_T_3EXPf;
class Catagory{
//基礎分類資料
var $Data
var $treePList = array();
//自我分類對應上級類別的關係
var $treeCList 這是大型分類的範本
*
* __id__ 分類的編號
__image__ 分類前面顯示的圖片名稱 $imgOpen or $imgClose
* __open__ 分類顯示的位置
* 樣式可以依照自己的需求任意修改 ,但無法刪除現有的元素
*/
var $blockTpl =T 'pad >
"0" width="15" height="15" id="img__id__">
name;
';
*
* see $blockTpl
*/
white">__name__
';
/*
* * see $blockTpl
*/
var $currentTpl = '__name__';
";
var $imgOpen = 'images/treeopen.gif';
gLine = 'images/line.gif';
var $cachFile = '';
var $exp = 🎜>var $treeStr = '';
var $currentStr = '';
/*
* 默認,預設值
*
*param $data array()
*/ function Catagory(&$data){
$this-> ;_init($資料);
}
function _init($tmpData){
$plevel = $clevel = $plevel = $clevel = $treeData = array(); foreach($tmpData as $value){
$treeData[$value['id']] = $value;
$plevel[$value['pid']][$value['id']] = 'END';
$clevel[$value['id']] = $value['pid'];
}
$this->treeData = &$treeData;
$this ->treePList = &$plevel;
$this->treeCList = &$clevel;
}
/*
* 設定目錄
*
*param $cataId int 配置返回關鍵字
*/
function parseNode($cataId=0 ){
$this->結果= $this->treePList[$cataId];
if($this->result== null) die("類別ID 錯誤");
$this->treeStr = $this->_doNode($this->result);
$this->treeStr .= $this->_jsParse() ;
}
函數 &_doNode(&$result){
foreach($result as $key=>$value){
treePList[$key])){
[$鍵];
可能
在 $nstr .
}else{ _parseElementTpl($key);
}
return $nstr.$estr;
}
function &_parseNodeT($cataId, treeData[$cataId];
$str = preg_replace(' __id__ ', $data['id'], $this->blockTpl);
$str = preg_replace(' __name__ ', $data['name'], $str);
$str = preg_replace(' __image__ ', ($this->expand.
$str = preg_replace(' __open__ ', ($this->expand?'':'none'), $strstr);
$str = preg_replace(' __inner__ ', $inner, $str);
return $str;
}
function _parseElementTpl($cataId){ $str = preg_replace(' __id__ ', $data['id'], $this->elementTpl);
$str = preg_replace(' __name__ ', $data['name'], $str);
$str = preg_replace(' __image__ ', $this->imgLine, $str);
return $str;
} function _jsParse(){
$str = "";
🎜> * 展開分類$cataId
*
*param $cataId int 要展開的分類的編號 * $cataId){
$str = '';
this->_parseCurrentTpl($cataId);
while(isset($this->treeCList[$cataId] $cataId = $this- >treeCList[$cataId];
$str = $ }
$this->currentStr = &$str; }
function _parseCurrentTpl($cataId){
🎜> $str = preg_replace(' ¦__id__ ¦', $data['id '], $this->currentTpl);
$str = preg_replace(' return $str;
}
/*
* 分析目前分類中的路徑
分類的編號
*/
function expand($cataId){
;
if(isset($this->treePList[$cataId])) $str .= "expand($cataId) ;";
while(isset($this->treeCList[$cataId]) && $this->treeCList[$cataId]!=0){ $str .= "expand(".$this- >treeCList[$cataId].");";
}
$this->treeStr .= "";
}
/*
function getCurrentStr(){ return $this->currentStr;
}
/*
function getTreeStr(){
return $this->treeStr;
}
function setTpl($blockTpl, $elementTpl, $currentTpl, = $blockTpl;
$this->elementTpl = $elementTplpl;
$this->currentTpl = $currentTpl;
🎜>
function setImage($open, $close, $line){
->imgOpen = $open;
$this->imgCl $this->imgLine = $line;
}
function setExpend($expand){ function setExpend($expand){ 🜠 > $this->expand = $expand;
}
}
//分類的基礎資料的樣子如下:
$data = array(array('id'=>1, 'name'=>'name1', 'pid'=>0, ' order'=>1),
array('id '=>3, 'name'=>'name3', 'pid'=>0, 'order'=>1),
'pid'=>3, 'order'=>1),
,
array('id'=>6, 'name'=>'name6, array('id'=>7, ' name'=>'name7', 'pid'=>6, 'order'=>1),
, 'order'=>1),
array( 'id'=>10, 'name'=>'name10', 'pid'=>0, 'order'=>1),
', 'pid'=>10, 'order'=>1),
1),
array('id'=>13, 'name'=>,name13', 'pid'=10,id'=> array('id'=>14 , 'name'=>'name14', 'pid'=>12, 'order'=>1),
>12, 'order'=>4),
); echo "";
$tree = new Catagory($data);
echo "
下面是目前分類的類別樹
";
// $tree->setExpend(1);
$tree->parseNode(0);
//$tree->parseNode(1);
//$tree->expand(9);
echo $tree->getTreeStr();
echo "
以下是目前分類(分類的編號是9)的路徑
";
$tree->parseCurrent(9 );
echo $tree->getCurrentStr();

絕對會話超時從會話創建時開始計時,閒置會話超時則從用戶無操作時開始計時。絕對會話超時適用於需要嚴格控制會話生命週期的場景,如金融應用;閒置會話超時適合希望用戶長時間保持會話活躍的應用,如社交媒體。

服務器會話失效可以通過以下步驟解決:1.檢查服務器配置,確保會話設置正確。 2.驗證客戶端cookies,確認瀏覽器支持並正確發送。 3.檢查會話存儲服務,如Redis,確保其正常運行。 4.審查應用代碼,確保會話邏輯正確。通過這些步驟,可以有效診斷和修復會話問題,提升用戶體驗。

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

設置httponly標誌對會話cookie至關重要,因為它能有效防止XSS攻擊,保護用戶會話信息。具體來說,1)httponly標誌阻止JavaScript訪問cookie,2)在PHP和Flask中可以通過setcookie和make_response設置該標誌,3)儘管不能防範所有攻擊,但應作為整體安全策略的一部分。

phpsessions solvathepromblymaintainingStateAcrossMultipleHttpRequestsbyStoringDataTaNthEserVerAndAssociatingItwithaIniquesestionId.1)他們儲存了AtoredAtaserver side,通常是Infilesordatabases,InseasessessionIdStoreDistordStoredStoredStoredStoredStoredStoredStoreDoreToreTeReTrestaa.2)

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器