网络编程
位置:首页>> 网络编程>> Asp编程>> 如何在社区建立一个寻呼台?

如何在社区建立一个寻呼台?

 来源:asp之家 发布时间:2009-11-08 18:59:00 

标签:社区,寻呼台,asp

bbssend.asp

'寻呼台页面,向在线网友发送寻呼信息

<%@ Language=VBScript %>
<%
users=split(application("OnlineUser"),",")
' 分割得到当前在线用户的列表,保存到一个数组中
If trim(request("act"))="wantsend" then
' 判断操作状态
who=trim(Request.Form("who")) 
' 获取被寻呼网友昵称 
content=trim(Request.Form("content")) 
' 呼叫内容 
meme=trim(request("userid")) 
' 获取发送寻呼的网友昵称 
If who="" or content="" then
Response.Redirect "error.asp?msg=噢,姓名或者讯息内容不能为空,请重新输入!"
' error.asp为错误信息提示页面,可自己定制
end if
' 以下将发送信息送到寻呼信息队列
If trim(application("Message"))="" then
Application.Lock
application("Message")=who & "$" & content & "$" & meme 
' 放置到寻呼信息队列当中
Application.UnLock
else
Application.Lock 
' 放置到寻呼信息队列当中
application("Message")=application("message") & "&" & who & "$" & content & "$" & meme
Application.UnLock
end if
Response.Write "<script language=javascript>self.close();</script>"
' 发送完毕,关闭页面
end if
%>
<html>
<title>精彩春风之网络寻呼我的宝贝</title>
<head>
<script language="javascript">
function check()
{
if(document.send.content.value.length<1)
{
alert("您必须说两句哦!");
return;
}
document.send.action="bbsSendBegin.asp?act=wantsend&userid=<%=trim(request ("userid"))%>";
document.send.submit();
}
</script>
</head>
<body bgcolor=GhostWhite >
<br>
<center>精彩春风之寻呼机</center>
<br>
<%If Ubound(users)>=2 then%>
<center>
<form name="send" method="post">
<table>
<tr>
<td>我想给发送讯息:</td>
<!-- 得到当前在线用户的列表,并放到下拉列表框中 -->
<td>
<select name="who">
<%For i=0 to ubound(users)%>
<%If trim(users(i))<>trim(meme) then%>
<%if i>1 then%>
<%if users(i)<>users(i-1) then%>
<option><%=users(i)%>
<%end if%>
<%else%>
<%if users(i)<>meme then%>
<option><%=users(i)%>
<%end if%>
<%end if%>
<%end if%>
<%Next%>
</select>
</td>
</tr>
<tr>
<td>讯息内容:</td>
<td>
<input type="text" name="content" size="20" maxlength="50">
</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
<tr>
<td colspan="2">
<a href="javascript:check()"><img src="images/sendinfo.jpg” ></a>
<a href="javascript:document.send.reset()"><img src="images/rewrite.jpg" ></a>
<a href="javascript:self.close()"><img src="images/close.jpg" ></a>
</td>
</tr>
</table>
</form>
</center>
<%else%>
<br>
<br>
<br>
<center>嘿嘿,寻呼谁呀?这会儿社区就您一个人!</center>
<center>
<a href="javascript:self.close()"><img src="images/close.jpg" ></a>
</center>
<%end if%>
</body>
</html>
bbssendinfo.asp页面在有人寻呼时,弹出来显示寻呼内容,并可选择即时回复、稍候回复、删除这条信息。
通过分析寻呼信息队列,提取出来发送到Request.QueryString ("userid")的信息,这样就得到了寻呼信息。在回复方式上,依靠了传递过来的参数:
Request.QueryString("act")
这个参数的值有三个:1、send:即时回复 ;
2、closeme:关闭当前寻呼机;
3、wait:稍后回复。
如果选择了回复,在代码中是使用Replace()函数替换为空格,在功能上表现出来就是将寻呼信息队列里的该寻呼信息区清除掉。
我们还使用了一个隐藏的Input框,用于保存发送寻呼的用户名称,以便在同一个页面当中进行处理。
bbssendinfo.asp
<%@ Language=VBScript %>
<%
id=trim(Request.QueryString("userid")) 
' 得到当前的网友昵称,当然就是你自己了,等于Session (" UserID")
if Request.QueryString("act")="send" then
' 获取当前操作状态
who=trim(Request.Form("who")) 
' 如果是发送状态,就获取发送到的网友昵称
content=trim(Request.Form("content")) 
' 获取发送的内容
if who="" or content="" then
Response.Redirect "error.asp?msg=噢,姓名或者讯息内容不能为空,请重新输入!"
end if
if instr(1,who,"&")>=1 or instr(1,who,"$")>=1 or instr(1,content,"&")>=1 or instr(1,content,"$")>=1 then
' 过滤掉用户输入的&、$,因为这是寻呼信息区的分割符号
Response.Redirect "error.asp?msg=噢,姓名或者讯息内容包含非法字符 ($/&),不能发送!"
end if
 
if trim(application("Message"))="" then
Application.Lock
application("Message")=who & "$" & content & "$" & trim(Request.QueryString("userid"))
' 将寻呼信息放到寻呼信息队列当中
Application.UnLock
else
Application.Lock
application("Message")="&" & who & "$" & content & "$" & trim(Request.QueryString("userid"))
' 将寻呼信息放到寻呼信息队列当中
Application.UnLock
end if
 
Response.Write "<script language=javascript>self.close()</script>"
Response.End
else
' 下面处理寻呼信息队列,以取得属于网友自己的寻呼信息
if trim(application("Message"))<>"" then
msg=split(application("Message"),"&") 
' 分割得到寻呼信息区,并保存到数组
for i=0 to ubound(msg)
if instr(1,trim(msg(i)),trim(Request.QueryString("userid")))>=1 then
mymsg=split(msg(i),"$") 
' 分割得到每个寻呼信息区的详细信息 
if trim(mymsg(0))=trim(Request.QueryString("userid")) then 
' 发给自己的寻呼信息
msgok=1
' 其他网友呼叫自己的表记置为1
from=trim(mymsg(2))
' 获得寻呼的详细内容
content=trim(mymsg(1))
sendto=trim(mymsg(0))
end if
end if
next
end if
end if
%>
<html>
<title>精彩春风之寻呼机</title>
<head>
<script language="javascript">
function nosend()
{
document.frmmail.action="bbssendinfo.asp?act=wait&userid=<%=trim(Request.QueryString ("userid"))%>"
document.frmmail.submit();
}
function meclose()
{
document.frmmail.action="bbssendinfo.asp?act=closeme&userid=<%=trim (Request.QueryString("userid"))%>"
document.frmmail.submit();
}
function destory()
{
<% if trim(request("act"))="closeme" then
cancelme=trim(Request.QueryString("userid")) & "$" & content & "$" & trim(from)
application.lock
application("Message")=replace(application("Message"),cancelme,"") 
application.unlock %>
self.close()
<% end if%>
}
function chkok()
{
if (document.frmmail.content.value=="")
{
alert("嘿嘿,您还没发言呢!");
return;
}
document.frmmail.submit();
}
</script>
</head>
<body bgcolor="GhostWhite" onload="javascript:destory();" topmargin="0">
<br>
<form name="frmmail" action="bbssendinfo.asp?act=send&userid=<%=trim (Request.QueryString("userid"))%>" method="post">
<table border="0" width="200" align="center" cellspacing="1" cellpadding="1">
<tr>
<td colspan="2" align="center">嗨,可有人呼你了……
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td nowrap><%=from%>说:</td>
<td><%=content%></td>
</tr>
<tr>
<td nowrap>回复内容:</td>
<td><input name="content" size="34" maxlength="35"></td>
</tr>
</table>
<br><br>
<center>
<a href="javascript:chkok();"><img src="images/sendinfo.jpg"></a>
<a href="javascript:document.frmmail.reset()"><img src="images/rewrite.jpg"></a>
<a href="javascript:self.close();"><img src="images/waitsend.jpg"></a>
<a href="javascript:meclose();"><img src="images/close.jpg"></a>
<input name="who" type="hidden" value="<%=from%>">
</center>
</body>
</html>
bbsautosearch.asp页面与寻呼信息显示(bbssendinfo.asp)页面关联。只有在bbsautosearch.asp页面中分析“寻呼信息队列”,捕捉到了属于网友自己的寻呼信息后,才会调用bbssendinfo.asp页面显示。
显然,bbsautosearch.asp 页面是一直运行的,这我们可用一个 META标签来实现,,我们将当前用户的名称保存在一个Session变量里:
Session(“UserID”)
然后利用META标签实现随时刷新,语句如下:
<meta HTTP-EQUIV="refresh" CONTENT="60;URL=bbsautosearch.asp" >
表示每隔 60秒重复刷新自身页面,我们将这个页面放置到一个隐藏的帧里面,就可以实现随时分析和处理属于我们的信息了。代码和说明如下:
bbsautosearch.asp
' 在线接收页面
<%@ Language=VBScript %>
<%
user=split(application("OnlineUser"),",") 
' 获得在线用户列表
for i=0 to ubound(user)
' 获得非空的在线用户列表
if user(i)<>"" then
nowcount=nowcount+1 
' 统计在线人数
if trim(temp)="" then
temp=user(i)
else
temp=temp+","+user(i)
end if
end if
next
if trim(temp)<>"" then
Application.Lock
application("OnlineUser")=temp 
' 重新整理在线用户列表 
Application.UnLock
end if
%>
<%
dim quit
' 下面代码是处理寻呼信息队列中的信息,并分割出来是自己的信息 
if trim(application("Message"))<>"" then
msg=split(application("Message"),"&") 
' 分割得到寻呼信息区,并保存到数组
for i=0 to ubound(msg)
if instr(1,trim(msg(i)),trim(session("userid")))>=1 then
mymsg=split(msg(i),"$") 
' 分割得到每个寻呼信息区的详细信息 
if trim(mymsg(0))=trim(session("userid")) then
' 发给自己的寻呼信息
msgok=1
' 其他网友呼叫自己的表记置为1
from=trim(mymsg(2)) 
' 获得寻呼的详细内容
content=trim(mymsg(1))
sendto=trim(mymsg(0))
end if
end if
next
end if
quit=0
if (trim(session("UserID"))="" or instr(1,application("OnlineUser"),session("UserID"))<1) and trim(session("UserID"))<>"guest" then
quit=1
else
if trim(application("OnlineUser"))="" then
counts=0
else
counts=ubound(split(application("OnlineUser"),","))+1
end if
end if
%>
<HTML>
<HEAD>
<meta HTTP-EQUIV="refresh" CONTENT="60;URL=bbsAutoSearch.asp" charset=gb2312 >
<script language=javascript>
function window_onload()
{
<%if msgok=1 then%>
mail="精彩春风之传呼机\n\n"+"<%=from%>"+"有话和您说:\n\n"+"<%=content%>";
sendinfo=window.open("bbssendinfo.asp?userid=<%=session("UserID")% >","SendInfo","toolbar=no,width=360,height=200,top=0,left=0");
<%end if%>
' 上面语句是调用bbssendinfo.asp(寻呼信息显示)页面显示提示信息
<%if quit=1 then%>
alert("因超时或者操作非法,您被踢出系统了!哈哈…请重新登录哦.");
document.kickout.target="_top";
document.kickout.submit();
<%end if%>
' 以上语句是如果当前用户超时,踢出系统
}
</script>
</HEAD>
<BODY style="BACKGROUND-color:#ccccff" onload="javascript:window_onload() ">
<%if quit=1 then%>
<center>
您已超时或操作非法!
</center>
<%else%>
<%if session("UserID")<>"guest" then%>
<center>
当前共有在线网友<font color=red><b><%=counts%></b></font>人 
</center>
<%else%>
<center>
噢,只有注册用户才能寻呼!
</center>
<%end if%>
<%end if%>
<form name=kickout method=post action="bbslogin.asp"></form>
</BODY>
</HTML>


 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com