📄 在线访客的制作方法.txt
字号:
【原创】“在线访客”的制作方法。
=============用户在线的制作方法===============
如果你要转载的话(写得那么菜,应该没人看中吧!),请保留以下信息.
作者:旭旭(07idea)
时间:2003-01-30
E-Mail:kgd1999@21cn.com
网站:http://www.07idea.com
======制作原理======
方法就是当用户访问网页时将用户的信息添加进数据库里
在添加的同时,检查数据库里是否有该用户的在线记录,如
果有,则更新该记录,如果没有就把他添加进数据库.
并删除在指定时间内没有活动的在线记录.(大概就是这样吧!)
======数据表设计=======
新建一个数据表,名为"Online"
删除自动编号字段
建立以下字段
字段名:ID 类型:数字
字段名:GUESTNAME 类型:文本
字段名:STATS 类型:文本
字段名:VISITIME 类型:日期/时间
字段名:OUTIME 类型:日期/时间
=======================以下部分源码,供参考,如果写得不好,欢迎指正=======================
<%
sub activeonline()
dim ip
'////删除180秒内不活动的在线记录.
sql="Delete FROM online WHERE DATEDIFF('s',outime,now())>180"
Conn.Execute sql
if stats="" then'//如果stats的值为空,则显示为
stats="不知在做什么?"
else
stats=stats
end if
IP=replace(Request.ServerVariables("REMOTE_HOST"),".","")'////获取IP并消去IP中的"."
'////检查Online表中是否已有这个IP的记录
sql="select id from online where id='"&ip&"'"
set rs=conn.execute(sql)
if rs.eof or rs.bof then'////如果没有该IP记录则添加在线记录
sql="insert into online(id,guestname,stats,visitime,outime) values ("&ip&",'游客','"&stats&"',Now(),Now())"
else'////如果Online表中已有该IP记录则更新该记录
sql="update online set outime=Now(),stats='"&stats&"',guestname='游客' where id='"&ip&"'"
end if
conn.execute(sql)
end sub
%>
==========================实例===========================
将以上代码修改并保存为"Online.asp"嵌入在各网页的尾部
<%
dim conn
dim connstr
on error resume next
connstr="DBQ="+server.mappath("数据库名称.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
'保存为conn.asp文件
%>
<!--#INCLUDE FILE="conn.asp" -->
<%
dim stats
stats="查看在线"
call activeonline()
Set rs = Server.CreateObject("ADODB.Recordset")
sql="SELECT Id,GuestName,Stats,Visitime,Outime FROM Online ORDER BY Visitime Desc"
rs.open sql,conn,1,3
total=rs.RecordCount
%>
<table border="1" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="53">
<tr>
<td width="20%" height="16" align="center">昵称</td>
<td width="20%" height="16" align="center">动作</td>
<td width="20%" height="16" align="center">来访</td>
<td width="20%" height="16" align="center">最后活动</td>
</tr>
<%do while not rs.eof%>
<tr>
<td width="20%" height="28" align="center"><%=rs(1)%></td>
<td width="20%" height="28" align="center"><%=rs(2)%></td>
<td width="20%" height="28" align="center"><%=rs(3)%></td>
<td width="20%" height="28" align="center"><%=rs(4)%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
在线人数:<%=total%>
<%
rs.close
set rs=nothing
%><!--#INCLUDE FILE="Online.asp" -->
写得不好,见笑了.如果你有更好的方法就献上来吧,大家互相学习嘛!
=====================完工===================
客户端脚本验证码总结涵盖大部分表单验证
function Jtrim(str) //去空隔函数
{
var i = 0;
var len = str.length;
if ( str == "" ) return( str );
j = len -1;
flagbegin = true;
flagend = true;
while ( flagbegin == true && i< len)
{
if ( str.charAt(i) == " " )
{
i=i+1;
flagbegin=true;
}
else
{
flagbegin=false;
}
}
while (flagend== true && j>=0)
{
if (str.charAt(j)==" ")
{
j=j-1;
flagend=true;
}
else
{
flagend=false;
}
}
if ( i > j ) return ("")
trimstr = str.substring(i,j+1);
return trimstr;
}
function isNumber(s) //数字判断函数
{
var digits = "0123456789";
var i = 0;
var sLength = s.length;
while ((i < sLength))
{
var c = s.charAt(i);
if (digits.indexOf(c) == -1) return false;
i++;
}
return true;
}
function isemail (s)//验证E-MAIL格式函数
{
if (s.length > 100)
{
window.alert("email地址长度不能超过100位!");
return false;
}
var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$"
var re = new RegExp(regu);
if (s.search(re) != -1) {
return true;
} else {
window.alert ("请输入有效合法的E-mail地址 !")
return false;
}
}
//判断是否中文函数
function ischinese(s){
var ret=true;
for(var i=0;i<s.length;i++)
ret=ret && (s.charCodeAt(i)>=10000);
return ret;
}
//--------------------------------------------------------------------------------
function ismit()//判断radio是否没有选择函数
{
var count=0;
for (ii=0;ii<myform.elements.length;ii++)
{
if (myform.elements[ii].type=="radio" && myform.elements[ii].checked==true)
{
count++;
}
}
if (Jtrim(document.myform.user_name.value)=='') {
window.alert ("请输入您的队员名 !")
myform.user_name.focus();
return false;
}
if(ischinese(document.myform.user_name.value)){
window.alert("请输入英文队员名")
myform.user_name.focus();
return false;
}
}
if (Jtrim(myform.user_pass1.value)=="" || myform.user_pass1.value.length < 4)
{
alert("您的密码不能为空且不能少于4位数!");
myform.user_pass1.focus();
myform.user_pass1.select();
return false;
}
if (Jtrim(myform.user_pass2.value)=="" || myform.user_pass2.value.length < 4)
{
alert("您的确认密码不能为空且不能少于4位数!");
myform.user_pass2.focus();
myform.user_pass2.select();
return false;
}
if (myform.user_pass1.value!=myform.user_pass2.value)
{
alert("您两次输入的密码不相同,请重新输入!");
myform.user_pass1.value="";
myform.user_pass2.value="";
myform.user_pass2.focus();
return false;
}
if (!isNumber(document.myform.user_qq.value))
{
window.alert ("QQ号码应该是数字,请重新输入!");
myform.user_qq.focus();
myform.user_qq.value='';
return false;
}
if (Jtrim(document.myform.user_email.value)==''){
window.alert("请填写您经常使用的一个邮箱!");
myform.user_email.focus();
return false;
}
if (!isemail(document.myform.user_email.value))
{
myform.user_email.focus();
return false;
}
if (myform.user_question.value==0)
{
alert("请选择一个密码提示问题");
myform.user_question.focus();
return false;
}
return true;
}
自动保存,转载自无忧脚本。。。
<html>
<body>
<iframe name=hideframe width=0 height=0></iframe>
<script language=javascript>
function autoSubmit() {
var tmp_target=document.forms[0].target;
document.forms[0].target="hideframe";
document.forms[0].submit.click();
document.forms[0].target=tmp_target;
alert("自动保存");
setTimeout(autoSubmit,5000);
}
setTimeout(autoSubmit,5000);
</script>
<form>
<input type=text name=a value=""><br>
<input type=submit name=submit value="Submit">
</form>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -