一直想找个代码高亮的插件,都不是很满意。对于代码的着色方案,比较满意geshi,只不过是php的,用在pjblog上不是很方便。不过办法是有的,那就是用ajax实现。
原计划是用geshi通过ajax在生成缓存的时候,把代码着色。这样的话数据库里面存储的是原始代码,缓存文件里面的是着色后的代码,用UBB编辑器修改起来也方便,不过这种想法没有实现。后来就想,纯粹的用ajax实现代码着色。在生成缓存的过程中加入几个javascript代码,然后实现无刷新进行代码着色。
原始显示:
高亮显示:
网上注册时经常发现在输入用户名后就可以立即知道该用户名是否可用,自己简单做了个,php+sqlite的,很简单可以演示一下原理
注册文件zc.html
注册验证
数据库操作文件zc.php
$name=$_GET['us'];
$dbh=new PDO('sqlite:./db');
$dbh->beginTransaction();
$sth = $dbh->prepare("Select * FROM user where username='".$name."'");
$sth->execute();
if ($result = $sth->fetch(PDO::FETCH_OBJ)){
echo "NO";
}else{
echo "OK";
}
?>
本程序前台发放部分的数据库结构非常简单,只需要一张表。
table: sn_list
字段
id 自动编号
sn 文本
in_time 日期/时间
sta 是/否
out_time 日期/时间
ip 文本
下面是获取序列号的程序gsn.asp
<!-- #include file = "gl/conn.inc" -->
<%
if Session("GetSN") <> "" then
response.write "EORROR"
else
Ip_address=Request.ServerVariables ("HTTP_X_FORWARDED_FOR")
If Ip_address="" Then
Ip_address= Request.ServerVariables ("REMOTE_ADDR")
end if
sql="select top 1 * from sn_list where sta=0"
set rs=conn.execute(sql)
if rs.eof then
response.write "EMPTY"
else
response.write rs("sn")
squ="Update sn_list SET sta = '-1',out_time=now(),ip='" & Ip_address & "'Where (((id)=" & rs("id")& "))"
Session("GetSN") = 1
conn.execute(squ)
end if
end if
conn.Close
Set conn = Nothing
%>