O-blog 2.6 自建模板 转 3.0 模板方法
2008-02-18
由于 O-blog 3.0 增加了 静态页面ajax方式调用动态数据 和 防垃圾评论的功能。原来 2.6 的模板需要按照下面的方式转换方能在 O-blog 3.0 中使用。
  1. 首先把所有页面的编码 改成 UTF-8, 很多编辑软件都有这个功能。
  2. 然后把所有页面里的 rss2.php 换成 rss.php(一般在sort.htm header.htm里面)
  3. header.htm 在 <head> 与 </head> 之间增加:
    
    
    
    此外,导航按钮可以使用动态的数据(admin/config/navigator.php),原来的静态导航按钮不变也可以 <ul> <!-- BEGIN navi --> <li><a href="{url}"  target="{target}">{name}</a></li> <!-- END navi --> </ul>
  4. articleList.htm 显示阅读次数的地方用 <span id="count_{id}">0</span>
  5. bo.htm 在统计的代码(如果有的话)之前,加上。这样有些缓慢的统计代码就不会影响页面数据加载的时间了。 <script type="text/javascript"> on_load(); </script>
  6. remark.htm 这里增加了一个模板变量 allow_trackback (是否开启trackback ping),可以把原来显示 引用的部分用 <!-- IF allow_trackback --> <!-- ENDIF --> 括起来 另外,还有非常重要的 评论表单 关键部分像这样: <form name="自定义" method="post" action="自定义" id="blog_form" onsubmit="return checkform(this)"> <input type="text" name="username" value="自定义" size="自定义" /> <p id='email_c'><input type="text" name="email" value="" size="自定义" /> E-mail </p> (注意,email的 那行请用一个 id='email_c' 的元素包起来,不一定非要用 p ) <textarea rows="自定义" cols="自定义" name="content" ></textarea> <input type="hidden" name="inblog" value="{inblog}" /> <input type="submit" value="提交评论" /> </form>
  7. guestbook.htm 这里的 form 要求和 remark.htm 基本一样。唯一不同的是 email 的那行不需要 一个 id='email_c' 的元素包围。因为 留言本的 email 是必填项。
  8. show_article.htm 请确保有下面的代码 <script type="text/javascript" src="{blogurl}count.php?do=add&id={id}"></script>
AJAX方式调用动态数据的方法:
在页面任何地方,只需要写 <div id='lastblog'></div> 即可调用最新发表的数据。此外id还可以是: previousblog 上一篇文章 nextblog 下一篇文章 lastblog 最新发表 lastremark 最新评论 hotestblog 最热文章 archive 文章归档 calendar 日历
还有后台可以设置“自定义变量”,这些变量都是全局变量,在任何一个模板文件都可以调用。 比如我在自定义变量里面设置了一个 header_ad (值为广告代码),那么可以在 header.htm中用 {header_ad} 来显示此变量。 暂时就这么多。希望大家升级愉快!

完。

阅读:4866 评论: 2 💬
PHPCMS文件管理器v4.02测试版发布!
2007-07-10
4.03版请点击这里 http://www.longbill.cn/blog/index.php?id=75


演示地址 http://cn5.cn/test

下载地址 http://down.chinaz.com/s/19274.asp

PHPCMS 文件管理器 v4.02 测试版 
Copyright (c) 2005-2007 phpcms.cn

作者: Longbill
地址: http://www.longbill.cn
Mail: longbill.cn@gmail.com
Q  Q: 5939793

默认管理员:admin   密码:admin 

安装方法:  无需安装,上传后直接使用。

功能特点:


1.可以远程管理服务器上的文件,包括上传,下载,新建,编辑,复制,粘贴,删除,远程下载等文件操作。
2.采用 PHP + AJAX 的方式构建。客户端采用缓存技术,不仅反应迅速,而且能减轻服务器的负担。
3.实现了远程 ZIP文件打包/解压。
4.多用户,权限管理,可以分配用户各自的操作目录和可操作的文件类型。
5.两种浏览方式:列表模式和图标模式。
6.在图标模式下可以预览图片文件的缩略图。
7.强大的编辑器可以实现自动缩进,显示行号 和 字符替换等功能。
8.自定义风格模板。内置6套模板。

4.02新增

1.集成BlueShow图片浏览器
2.集成在线文件阅读器
3.新增载入时Loading效果
4.新增4套风格模板
5.增加许多Web2.0体验
6.优化多文件上传
7.优化代码兼容性,兼容IE,Firefox等主流浏览器
8.许多细节优化


注意事项:

1.本程序所有数据采用文本文件保存,请将 ./class/ 目录权限设为 0777,及./class/下面的所有文件和./info.php文件可写,否则本程序可能无法正常使用。
2.程序默认的管理员根目录为../即程序index.php文件夹所在目录的上级目录。
  如果配置其他用户的根目录请注意带上../
3.如果发现程序由Bug,或者有疑问,建议或意见,请登陆 http://www.longbill.cn 给我留言,我会尽快解决。

完。

阅读:4962 评论: 55 💬
PHP+FLASH实现上传文件进度条!
2007-06-20
PHP之所以很难实现上传进度条是因为在我们上传文件到服务器的时候,要等到文件全部送到服务器之后,才执行相应的php文件。在这之前,文件数据保存在一个临时文件里面,而php无法获得这个文件的路径及大小。
    从Actionscript 2.0开始,Flash支持文件上传及下载了。虽然不能在服务端获得文件上传进度,但我们可以在服务端获得文件的发送进度。根据这个原理,用Flash就能做出上传进度条效果。
    我在网上看到过一些资料,但是感觉有缺陷。于是自己研究了一下,在前人的基础上加强了程序的安全性和健壮性,并且增加了一些可自定义的参数。

    说明:如果你的电脑安装了防火墙软件,那么可能会看到进度条一下就100%的情况。这是因为进度条显示的是flash把文件传给防火墙软件的速度!防火墙还要再将数据传到服务器。
    演示请点击这里


本程序是Longbill 根据网上相关资料改进而成的
http://www.longbill.cn
Email: longbill.cn@gmail.com

调用参数说明(假设本flash名字为 upload.swf):

将flash文件的调用地址写成:
upload.swf?maxsize=[单个文件最大体积]&bgcolor=[进度条颜色]
&limit=[限制上传文件类型]&savefile=[上传对象文件]

[单个文件最大体积]:【可选】【数字】(单位为 KB)
[进度条颜色]: 【可选】【六位十六进制数字】【默认为随机颜色】(没有#的16位颜色值)
[限制上传文件类型]: 【可选】格式如: limit=zip|rar|doc
[上传对象文件]: 【默认为save.php】【字符串】

例如:
upload.swf?maxsize=2048&bgcolor=FF00FF&limit=jpg|gif|png&savefile=upsave.php


点击这里下载

完。

阅读:8859 评论: 87 💬
Javascript拖动效果函数
2007-04-14

自己根据网上的一些代码资料写的拖动网页元素的代码

样例:  点击这里
 

function drag(o,s)
{
	if (typeof o == "string") o = document.getElementById(o);
	o.orig_x = parseInt(o.style.left) - document.body.scrollLeft;
	o.orig_y = parseInt(o.style.top) - document.body.scrollTop;
	o.orig_index = o.style.zIndex;
		
	o.onmousedown = function(a)
	{
		this.style.cursor = "move";
		this.style.zIndex = 10000;
		var d=document;
		if(!a)a=window.event;
		var x = a.clientX+d.body.scrollLeft-o.offsetLeft;
		var y = a.clientY+d.body.scrollTop-o.offsetTop;
		//author: www.longbill.cn
		d.ondragstart = "return false;"
		d.onselectstart = "return false;"
		d.onselect = "document.selection.empty();"
				
		if(o.setCapture)
			o.setCapture();
		else if(window.captureEvents)
			window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

		d.onmousemove = function(a)
		{
			if(!a)a=window.event;
			o.style.left = a.clientX+document.body.scrollLeft-x;
			o.style.top = a.clientY+document.body.scrollTop-y;
			o.orig_x = parseInt(o.style.left) - document.body.scrollLeft;
			o.orig_y = parseInt(o.style.top) - document.body.scrollTop;
		}

		d.onmouseup = function()
		{
			if(o.releaseCapture)
				o.releaseCapture();
			else if(window.captureEvents)
				window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
			d.onmousemove = null;
			d.onmouseup = null;
			d.ondragstart = null;
			d.onselectstart = null;
			d.onselect = null;
			o.style.cursor = "normal";
			o.style.zIndex = o.orig_index;
		}
	}
	
	if (s)
	{
		var orig_scroll = window.onscroll?window.onscroll:function (){};
		window.onscroll = function ()
		{
			orig_scroll();
			o.style.left = o.orig_x + document.body.scrollLeft;
			o.style.top = o.orig_y + document.body.scrollTop;
		}
	}
}

完。

阅读:3515 评论: 7 💬
发布一个迷你AJAX聊天程序[聊天室]
2006-08-16
新版本已经发布
http://www.longbill.cn/blog/archives/2008/03/ajaxchatroom.html

Mini AJAX Chatroom By Longbill
http://www.longbill.cn
Longbill all rights reserved
2006-08-16

演示地址: http://longbill.cn/down/sample/chat.php

打开文件进行具体设置

使用方法,将这个程序传到服务器上,运行就可以了。
默认的数据保存路径为 rooms/ 目录
调用时后加参数 room=房间名 , 比如 chat.php?room=php,此时就程序就会自动创建 rooms/php.php 文件来保存数据

如有疑问,请到 www.longbill.cn 给我留言

下载地址 http://longbill.cn/down/miniajaxchatroom.zip

完。

阅读:4491 评论: 31 💬
[原创]XML的代替者----JSON
2006-08-16
在phpx.com上原载

我个人觉得PHP与Javascript各有长处,如果能完美的结合起来,那将创造出许许多多的奇迹! 我是初次写此类文章,Bug难免,请各位指正~
    现在AJAX应用非常流行,而在AJAX中客户端Javascript和服务端动态脚本的通信是关键。如果传输的信息比较简单,通常我们会直接采用字符串的方式,如果信息结构复杂一点,则通常用XML文档。XML文档虽然应用广泛,但是用php生成和用Javascript处理却不是一件很容易的事情。这里我推荐一种XML文档的比较好简化替代方案:JSON!
    首先我们来了解一下Javascript的基础知识。
    1.创建数组,可以用JS内建的类Array来初始化,也可以用JSON符号"[]"。下面通过两种方式创建的arr1和arr2的实质是一样的:

var arr1 = new Array();
arr1[0] = "apple";
arr1[1] = "google";
arr1[2] = "longbill";

var arr2 = ["apple","google","longbill"];

注意,数组的索引也可以是字符串,如 arr1["name"] = "longbill"; 这时的数组就相当于对象了。。。
    2.创建对象,可以用JS内建的类Object来初始化,也可以用JSON符号"{}"。下面通过两种方式创建的obj1和ob2的实质也是一样的:


var obj1 = new Object();
obj1.name = "longbill";
obj1.age = 18;

var obj2 = { name:"longbill",age:18 };

注意,这里"{"和"}"之间必须写成"键:值"的形式,而且不同的"键:值"之间要用","分割。 "键"中也可以包含空格等特殊字符,此时要用""(引号)来引用,如 "phone number":123456
    其实在JS中,数组的本质是一个对象,对象本身也是一个数组。所以, obj1.name 和 obj1["name"] 是同一个引用。
    我们还可以通过JSON符号的嵌套来定义复杂的S对象:


var people = [
    {
        name:"longbill",
        age:18
    },
    {
        name:"neal",
        age:19
    },
    {
        name:"glocklee",
        age:17
    }
];

//这个应该看的懂吧~~
大部分XML文档都可以用JSON来表达:


<?xml version="1.0"?>
<root>
  <book>
    <name>Ju love</name>
    <price>$15</price>
  </book>
  <book>
    <name>Javascrip</name>
    <price>$25</price>
  </book>
</root>


如果用JSON就可以表达为:

{
root:
[
  {
     name:"Ju love",
     price:"$15"
  },
  {
     name:"Javascript",
     price:"$25"
  }
]}


是不是简化很多?

    而且客户端JS处理起来也很简单,只要用执行字符串函数 "eval" 就可以将JSON信息提取出来,而如果是XML文档,那就不的不用大量的标准DOM操作来提取其中的数据。如:


//已经用AJAX从服务端下载了一个JSON文件(字符串),保存在变量 json 里
eval("var myvar = "+json);
//这样,JSON里的信息就表达在myvar这个变量里了。

缺点:一旦JSON的格式错误,将导致服务端JS系统错误,甚至崩溃。
   解决办法:
   最好在eval之前使用try(试探执行),如


//已经用AJAX从服务端下载了一个JSON文件(字符串),保存在变量 json 里
try {
    eval("var myvar = "+json);
} catch(e) { alert('json syntax error!'); }
//这样,即使JSON格式错误,也只会弹出一个提示框,而不会抛出一个脚本错误!

完。

阅读:3223 评论: 11 💬
[原创]在普通HTTP上安全地传输密码
2006-08-16
在phpx.com上原载,是我的原创
http://www.phpx.com/happy/thread-122499-1-1.html上有很多讨论


    1。理论
    在普通HTTP上,一般表单中的密码都是以明文方式传到服务器进行处理的。这无疑给了坏人以可乘之机!这里我们就说说怎么传输密码才是安全的!
    与其传输密码本身,到不如传输其加密后的形式。MD5是个不错的选择。第一,不同的资源几乎不可能生成相同的MD5摘要,第二,MD5的编码方式是不可逆推的。有了这些特性,我们就可以让MD5摘要公开的在Internet上传输,而不必担心密码被坏人知道。然后在服务端也将密码通过同样的方式加密,最后比较这两个字符串。
    然而,我们不能为了登陆而将密码md5后直接通过Internet传输,因为坏人虽然不会知道我们的密码,但肯定会知道这个特殊的字符串可以授权他们访问我们的网站!
    这就是公匙和私匙要解决的问题,首先由服务器提供一个随机字符串,然后客户端将这个随机字符串和密码相加后再加密!
    每次登陆时,服务器会产生不同的随机字符串,这样你的密码没有变,但是通过上面的方法加密后的MD5摘要却完全不同。这样就算坏人得到了这些MD5摘要,他们也不可能分析出你的密码!
    这种方法中,服务器提供的随机字符串叫做"公匙",寿命很短,并可以被任何人利用;你的密码叫做"私匙",寿命很长,而且永远也不会被人知道。
    2。实现
    客户端Javascript并没有提供现成的md5算法,但我们在 google 上用 "md5 javascript" 搜索,就可以得到很多md5在Javascript上实现的例子。
    在PHP中我就不用多说了,直接用md5()这个函数就可以搞定!随机字符串我们可以用session来存储(PHP就是强啊~~)
    3。注意
    在JS中,中文都是UTF-8格式的,所以如果你的密码是中文,而且存储在服务端的密码的编码方式是GB2312,那么两个密码加密后的字符串是完全不同的!

完。

阅读:3044 评论: 4 💬
phpcms文件管理器 v4.02 开发中....
2006-08-01
4.03版请点击这里 http://www.longbill.cn/blog/index.php?id=75


此日志不断更新中....(06/08/18)

phpcms文件管理器要逐渐向网络硬盘转型了!
抢先体验地址: http://cn5.cn/test1/
欢迎在此提出建议或意见

4.02 已经改进的地方:
完全修改了模板,可以自适应窗口大小
集成BlueShow图片浏览器
修改了限制文件类型的一个bug
修改了zip打包和解压的bug
修改了根目录为../../时的bug

8月13日更新:
彻底征服了IE缓存策略BUG!!!减轻了服务器的负担!

8月18日更新:
才用了json来传输数据,可以传送更多的信息(包括目录简介等)。也可以解决全角字符的Bug

9月23日更新:
晕,进度越来越慢了,不得不跟大家提一下了:
    其实我已经高三了,原来以为高三没什么的了不起的,照样可以抽出时间写程序。但我发现我错了,为了高考,为了我的前程,我不得不全身心地投入到学习中。。。如果没有经历过高三的人肯定不能体会到高三是怎样的一种生活,为了提高成绩,可以说学校方面用尽了一切措施,目的在于挖干我们身上的每一点潜能。甚至还用了起催眠作用的演讲,班会等等,,但我们也是自愿的,,(哎,现在的社会也只能这样了。。)
    其中一着狠毒的就是叫我们把自己的目标大学写出来,做一个大的告示牌挂到教室。。。我们班43个同学,居然就有17个写了清华或北大 ,我则没有那种冲动,填了个浙江大学,我想也不错了吧,而且我相信我一定能考上的。
    就写这么多了,我还要去看书呢。。。

完。

阅读:3692 评论: 29 💬
得到元素真实的背景颜色的函数[javascript]
2006-08-01
这个函数来自Rico,自己改了一下。
说明: 
    传入参数一个,为元素的id值或元素本身,返回为元素的真实背景色值(字符串)。 值得一提的是IE里面返回的是16进制的值,而Mozilla则是rgb值。
演示地址:  http://longbill.cn/down/sample/getbg.htm

function getBg(element)
{//author: Longbill (www.longbill.cn)
if (typeof element == "string") element = document.getElementById(element);
if (!element) return;
cssProperty = "backgroundColor";
mozillaEquivalentCSS = "background-color";
if (element.currentStyle)
var actualColor = element.currentStyle[cssProperty];
else
{
var cs = document.defaultView.getComputedStyle(element, null);
var actualColor = cs.getPropertyValue(mozillaEquivalentCSS);
}
if (actualColor == "transparent" && element.parentNode)
return arguments.callee(element.parentNode);
if (actualColor == null)
return "#ffffff";
else
return actualColor;
}

完。

阅读:3431 评论: 2 💬
用PHP控制用户浏览器缓存!
2006-07-29
前段时间因为补课,所以好久没有发过日志了~ 你写的php程序是否高效?你是否会担心自己的程序太庞杂,执行速度很慢?你是否用过php动态生成图片? 其实每种浏览器都有缓存策略,会暂时将每一个浏览过的文件缓存在一个特殊的文件夹里。我们就可以在用户重复提交页面请求的时候,告诉用户这个页面没有改变,可以调用缓存。 那我们怎么知道用户有没有这个页面的缓存数据呢? 其实浏览器在发送请求的时候会先发送http头,一般象这样:
Date: Sun, 30 Jul 2006 09:18:11 GMT Content-Type: image/gif Last-Modified: Wed, 19 Jul 2006 07:40:06 GMT ETag: "8c55da8d6abc61:2327" Content-Length: 14757
其中Last-Modified: Wed, 19 Jul 2006 07:40:06 GMT ETag: "8c55da8d6abc61:2327"就是有关页面的缓存信息的。然后如果服务器返回的响应代码不是HTTP 200 (OK),而是 304的话,浏览器就会从缓存中读取数据。 根据这个原理,我写了一个函数,这个函数可以用在不经常更新或者需要经常刷新的页面,可以大大减轻服务器的负担,因为它如果发现客户端有缓存,就向客户端发送一个304响应,然后停止程序的执行。 演示地址:http://www.longbill.cn/down/sample/etag.php
cache();
echo date("Y-m-d H:i:s"); 
function cache()
{//author:Longbill ( www.longbill.cn )
  $etag = "eeee";  //标记字符串,可以任意修改
  if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag)
  {
    header('Etag:'.$etag,true,304);
    exit;
  }
  else header('Etag:'.$etag);
}

完。

阅读:3168 评论: 3 💬
上一页 1... 3 4 5 [6] 7 8 下一页
Copyright © Longbill 2008-2026