分类 网页与编程 中的文章

One Explorer V1.0 beta

最近准备写一个CMS系统,也刚好在学一些PHP框架,结果花一个晚上把那个 MooPHP 框架给看透了,简单的很,但是做的真的很好,现在刚起步,应该有很大发展潜力的吧,于是想用这个框架来做一个CMS,因为在 Apache 服务器打开默认根目录如果里面没有默认文件的话会显示一个文件列表,这个很实用,调试网站和众多文件的时候就不需要输入地址了,但是如果有缺省文件就打开的是主页了,于是又准务用 MooPHP 做一个小的在线文件浏览器,做倒是做出来了,用了 MooTemplate 也就是模板,这是我第一次使用模板引擎,感觉蛮好的,但因为这个小在线文件浏览器功能甚小,学得搞一个 PHP 框架太浪费了,完全可以用一个文件来写,就删呀删,减啊减,做了一个小的在线文件浏览器,类似于 Apache 的文件列表功能,但是没有文件的详细信息,我给它取个名叫 One Explorer,代码公布出来大家一起研究研究,其实也没什么技术可言,无非就是读读目录而已,但是本调试网站的时候,一会儿访问这个文件,一会儿访问那个文件用这个可方便多了,只有一个文件,把下面的代码保存为 PHP 文件就行了,放在根目录。这个只适合本地调试的时候用哦,不要放在自己网站里,不然被人家知道地址把你网站里的东西看了个遍可就不好了哦...

下载:oneexplorer1.zip

PHP代码

<?php   
/*  
    One Explorer V1.0 beta PHP  
    Copyright (c) 2008 VGOT.CN  
*/  
  
function getRelativePath($path) {   
    $realpath = realpath($path);   
    $realpath = str_replace("\\","/",$realpath);  
    return $realpath;  
}  
 
function getUpDir($path){  
    $path = rtrim($path,'/');  
    $path = explode('/',$path);  
    $pathLast = sizeof($path) - 1;  
    unset($path[$pathLast]);  
    $path = join('/',$path);  
    return $path;  
}  
 
function getDirList($folder, $isSubDir = false) {  
    $dirList = array();  
    if(is_dir($folder)) {  
        $handle = opendir($folder);  
        while(false !== ($myFile = readdir($handle))) {  
            if($myFile != '.' && $myFile != '..') {  
                $dirList[] = $myFile;  
                if($isSubDir && is_dir($folder.'/'.$myFile)) {  
                    getDirList($folder.'/'.$myFile, $isSubDir);  
                }  
            }  
        }  
        closedir($handle);  
        unset($folder, $isSubDir);  
        return $dirList;  
    }  
    return $dirList;  
}  
 
function footer(){  
?>  
    <hr />  
    <address>One Explorer V1.0 beta & </address><? echo $_SERVER['SERVER_SIGNATURE']; ?>  
<?php  
}  
 
$dir = $_GET['dir'];  
$dir = (empty($dir)) ? './' : $dir.'/';  
$rpath = getRelativePath($dir);  
$upDir = getUpDir($dir);  
 
if(!file_exists($rpath)) {  
    echo '<h1>目录不存在</h1>';  
    footer();  
    die();  
}  
 
$allList = getDirList($rpath);  
$dirlist = array();  
$dirlist['dir'] = array();  
$dirlist['file'] = array();  
 
foreach($allList as $name){  
    if(is_dir($rpath.'/'.$name)){  
        $dirlist['dir'][] = $name;  
    }else{  
        $dirlist['file'][] = $name;  
    }  
}  
 
$title = ltrim($dir,'.');  
$title = (empty($title) or $title == '/') ? 'ROOT' : $title;  
 
$dirQuantity = count($dirlist['dir']);  
$fileQuantity = count($dirlist['file']);  
 
header("programa:no-cache");  //没有缓存  
 
?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
<html>   
<head>   
<meta http-equiv="Pragma" content="no-cache">  
<meta http-equiv="Cache-Control" content="no-cache">  
<meta http-equiv="Expires" content="-1">  
<title><?php echo $title; ?></title>  
<style type="text/css">  
<!--  
body{  
    font-size:11pt;  
    margin:0px;  
    background-color:#F7F7F7;  
}  
a:link{color:#0000FF; text-decoration:underline;}  
a:visited{color:#810081;}  
.padContent{padding:10px;}  
.path{background-color:#F2FFA5; padding:5px; border-bottom:1px solid #FFAFB2;}  
li a{line-height:17px; voice-family:inherit; display:block;}  
.folder li a:hover{background-color:#F2FFA5; font-style:italic; font-weight:bold; color:black;}  
.file li a:hover{background-color:#BFFAFF; font-style:italic; font-weight:bold; color:black;}  
address{text-align:right;}  
-->  
</style>  
</head>  
<body>  
<div class="path"><!-- 绝对:<?php echo $rpath;?>       --> 相对 <?php echo $dir;?> </div>  
<div class="padContent">  
<p class="tools">  
    <?php if($dir != './'){ ?><a href="?">ROOT</a> <a href="?dir=<?php echo $upDir; ?>">UP向上</a> <?php } ?><a href="javascript:location.reload();">刷新</a>   
    当前目录下<?php echo ($dirQuantity  >=1) ? '有'.$dirQuantity.'个文件夹' : '没有文件夹'; echo ','; echo ($fileQuantity  >=1) ? $fileQuantity.'个文件' : '没有文件'; ?>  
</p>  
<div class="list">  
<?php if($dirQuantity  >= 1){ ?>  
文件夹列表:  
<ul class="folder">  
<?php foreach($dirlist['dir'] as $dirName) {?>  
<li><a href="?dir=<?php echo $dir.$dirName; ?>" title="点击浏览此目录下的内容"><span><?php echo $dirName;?></span></a></li>  
<?php } ?>  
</ul>  
<?php } ?>  
 
<?php if($fileQuantity >= 1){ ?>  
文件列表:  
<ul class="file">  
<?php foreach($dirlist['file'] as $fileName) {?>  
<li><a href="<?php echo $dir.$fileName; ?>" target="_blank" title="点击访问此文件"><span><?php echo $fileName;?></span></a></li>   
<?php } ?>   
</ul>   
</div>   
<?php } footer(); ?>   
</div>   
</body>   
</html>


Pader 2008-11-23 2

做了个 404 页面

把原首页换了,虽然 AJAX 的载入和 jQuery 的显示效果很酷,可是搜索引擎是识别不出来 AJAX 载入的页面,看看统计,我的网站只有来自搜索引擎的屈指可数的流量,所以再三考虑,还是把首页给换了,现在搜索引擎应该能收录一点了吧,至于内容,首页上的近期暂时没什么时间搞,以后也许会用 PHP 搞一个模块化的首页,哇哈哈,不过现在只是想法~~

因为首页跟据传递的 QUERY_STRING 字符串判断载入的页面,如果数据库里没有就会转到 404 页面,所以就做了个 404 页面,目前空间也支持 404 错误定位,可是好像不是很有用,呵呵,现在的网站出现 404 错误的机率已经是越来越少了,做个只能当是娱乐娱乐。

 

Pader 2008-11-2 0

便签2-PHP版也出炉啦!

跟 ASP 功能都一样,不过最终我还是屈服于了 PHP 的 iconv 函数,难道就没有什么办法把 utf-8 编码的内容完全的转为 gb2312 或 gbk 的?
还是在对主要内容的 POST 使用了伪 AJAX,只有一处使用了伪 AJAX,创建标签和修改标签内容还是使用 AJAX,这点比 ASP 要好一点,ASP 这玩意儿到现在还不知道怎么转换编码,不过毕竟我的主攻方向是 PHP 嘛。
现在还不提供演示,虽然整体功能都有了,但是还是有很多细节需要完善,完善之后会提供源码下载,如果要看界面就去看以前布局的时候做的页面吧:
http://www.vgot.net/design1/newSticker/layer.html

算了,先来几张图:

 

Pader 2008-11-1 0

便签2-无刷新ASP版严重出炉!

经过本人来重考虑,终于做了第二版本的便签程序,与第一个版本不同之处如下:

 1)界面布局不同,标签全部左栏竖形布局,现在的屏幕是越来越宽,但在高度上还是有一点紧张,所在标签列表不再横着挤从上往下排了。
 2)所有的载入数据使用AJAX无刷新的方式,POST数据包函中文的使用伪AJAX无刷新的方式,这就是第二版本最大的改变,所有的操作都是在一个页面,无刷新。
 3)在页面上大量使用了 jQuery,有很多的小细节等待你去发现哦。。
 4)加入了自动保存的功能,如果你在写带有大量文字的内容的话,点保存时一不小心超时了或者断网了等意外的事故怎么办,虽然第一个版本在点保存数据时会自动把内容复制一份到剪切板,但那也并不是万全之策,现在只要点一下下方工具栏上的“自动保存”按钮,默认就会每 30 秒自动保存一次,再配上保存时自动将内容到剪切板,岂不是更Safe~~

虽然已经可以使用了,但是很多细节上还是有待改善,包括一些个性化设置还没有加入,下方工具栏右边的“设置”按钮只是一个假的东东,点了是没有任何反应滴~~~~

目前完成的是 ASP+Access 版本,原本准备先完成的是 PHP+MySQL 版,因为不想使用伪AJAX技术,也就是在 PHP 版上想使用纯的 AJAX 技术,碰到一些转码的问题,在AJAX把数据发送到服务器端的时候,转换编码时总是有内容从后面意外的丢失,这应该是 PHP iconv 函数从 tf-8 转 gb2312 的一个BUG,郁闷啊~~
不过相信很快就会搞捏的,敬请期待。。。

因为本人没有ASP的空间,所以没办法提供演示了,郁闷啊~~

Pader 2008-10-30 0

新的便签程序

以前写的那个便签程序因为在某此情况下获取用户 Cookies 似乎有些问题无法登陆上去,最近又突发想法把这个便签程序改成无刷新的,当然使用到了 Jquery,我发现我似乎有一点爱上 Jquery 了,但是做网站的时候还是得尽量避免使用它呀,昨天一下午边想边做,把基本的布局和一些界面功能做了出来,下看。

[attach=93]

预览地址:ttp://www.vgot.cn/design1/newSticker/layer.html
因为某些关系,我会做 ASP+Access 和 PHP+MySQL 两种,功能是一样的。

Pader 2008-10-23 0