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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。