PHP服务器文件管理器开发小结(四):利用SESSION响应文件夹导航
书接上回,在首文件夹(HOME)图标的旁边是回到上级文件夹(UP)和刷新当前文件夹(REFRESH)两个图标,对应的图片链接为:
<li><a href="#" title="up" onClick="onUp()"><img src="images/upfolder48.png" class="topmenu" /></a></li> <li><a href="#" title="refresh" onClick="onRefresh()"><img src="images/listrefresh48.png" class="topmenu" /></a></li>
对应的事件代码为:
function onRefresh() { var strDirName = "refresh"; var strEncodedName = escape(strDirName); $.post("query.php", {act:strEncodedName}, function (data) { $(‘#spanDirTable‘).html(data); }); } function onUp() { var strDirName = "back"; var strEncodedName = escape(strDirName); $.post("query.php", {act:strEncodedName}, function (data) { $(‘#spanDirTable‘).html(data); }); }
可以看出,这里在POST时并没有提交需要跳转的文件夹路径,需要根据具体浏览上下文环境获取对应的文件夹。因此,服务器端需要有能力获取当前浏览的文件夹路径。幸好,PHP为我们准备了SESSION。PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 <html> 标签之前:
<?php session_start(); ?> <html> <head>
需要注意的是,如果部署了多个网页并且需要共享PHP,则各个网页都需要在开始处使用session_start()。
PHP中使用$_SESSION存取SESSION变量。在上一节输出文件夹内容列表后保存当前浏览的文件夹:
if ($isDirContentView) { echo createDirContentTable($strDirName); $_SESSION["currDir"] = $strDirName; }
这样,就将$strDirName保存到$_SESSION["currDir"]中。
下面这段代码响应刷新文件夹内容的操作:
case "refresh": $isDirContentView = true; if (isset($_SESSION["currDir"])) { $strDirName = $_SESSION["currDir"]; } else $strDirName = "/home"; break;
如果当前文件夹已保存,则导航至当前文件夹,否则跳转至预设的首文件夹"/home"
下面这段代码则响应回到上一级文件夹的操作:
case "back": $isDirContentView = true; if (isset($_SESSION["currDir"])) { $strDirName = $_SESSION["currDir"]; $strDirName = rtrim($strDirName, "/"); $listDir = explode("/", $strDirName); $nBackLength = strlen(end($listDir)); $strDirName = substr($strDirName, 0, 0-$nBackLength); if ($strDirName == "") $strDirName = "/home"; } else $strDirName = "/home"; break;
上一级目录名是通过分析字符串得到的,并且限制在/home下。
另外,前端可以通过jQuery实现网页打开时预加载首文件夹内容:
$(document).ready(function(){ onHome(); });
即当页面加载完成后,执行onHome()函数。
本文出自 “Accplayer的小地方” 博客,请务必保留此出处http://accplaystation.blog.51cto.com/9917407/1614658
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。