当前位置: 编程技术>php
本页文章导读:
▪PHP+DBM的同学录程序(4)
8、注册文件reg.php3 <? require("common.php3"); require("mail.php3"); if($submit){ if($id=="")error("请填写您的注册用户名!"); elseif(!eregi("^[0-9a-zA_Z]+$",$id))error("你的用户名不能含有其他字符!"); els.........
▪PHP+DBM的同学录程序(1)
这个同学录原来给我们班级用的,因为服务器没有mysql支持,就选择了dbm 国内还没有什么dbm程序,国外也几乎没有 花了一个晚上,在几乎没有任何参考的情况下写了出来 现在公布出来 是一.........
▪基于mysql的bbs设计(四)
5。版面模块设计 所谓分类,更多的是为telnet服务端考虑的,在cq66模式下,用户可以按 照自己的意愿进行分类,反正最后都是直接以版为基本单位访问的。 对于版面文章的访问,存.........
[1]PHP+DBM的同学录程序(4)
来源: 互联网 发布时间: 2013-11-30
8、注册文件reg.php3
<?
require("common.php3");
require("mail.php3");
if($submit){
if($id=="")error("请填写您的注册用户名!");
elseif(!eregi("^[0-9a-zA_Z]+$",$id))error("你的用户名不能含有其他字符!");
elseif($password=="")error("请填写您的密码!");
elseif($password<>$password1)error("您的密码填写不正确!");
elseif($name=="")error("请填写您的名字!");
elseif($mail=="")error("请填写您的邮件地址!");
else{
$dbm=dbmopen("class","w");
if(dbmexists($dbm,$id))error("这个用户名已经给别人注册了!");
else{
$intro=nl2br($intro);
$data="$name|!:!|$nickname|!:!|$mail|!:!|$home|!:!|$oicq|!:!|$icq|!:!|$add|!:!|$tel|!:!|$birth|!:!|$job|!:!|$intro|!:!|$sex";
dbminsert($dbm,$id,$data);
$pwd=dbmopen("password","w");
dbminsert($pwd,$id,$password);
}
dbmclose($dbm);
$sendmsg="欢迎注册《深圳中学2000届高中(12)班同学录》n";
$sendmsg.="下面是您的注册信息:n";
$sendmsg.="用户名:$idn用户密码;$passwordn";
$sendmsg.="=====================================================";
$sendmsg.="注册姓名:$namen注册昵称:$nicknamen注册邮箱:$mailn主页地址:$homen";
$sendmsg.="您的OICQ:$oicqn您的 ICQ:$icqn联系地址:$addn联系电话:$teln";
$sendmsg.="您的生日:$birthn您的职业:$jobn您的性别;$sexn您的个人介绍:n$intronn";
$sendmsg.="======================================================";
$sendmsg.="欢迎注册《深圳中学2000届高中(12)班同学录》";
$sendmsg.="登陆地址:http://5212.net/class/";
mail2("欢迎注册《深圳中学2000届高中(12)班同学录》",$sendmsg,$mail);
header("Location:index.php3");
}
}else{
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>同学录用户注册</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<link rel="stylesheet" href="/blog_article/style.css">
<META content="MSHTML 5.00.2614.3500" name=GENERATOR>
</HEAD><BODY bgcolor="#FFFFFF" topMargin=0>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%"><BR>
<DIV align=center></DIV><CENTER><TBODY></TBODY></center>
</TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="60%" align="center">
<TBODY> <TR vAlign=top>
<TD bgColor=#000000 width="100%" height="336">
<DIV align=center>
<TABLE border=0 cellPadding=4 cellSpacing=1 height=390 width=586>
<TBODY>
<TR>
<TD align=middle bgColor=#2f5e8c colSpan=2 height=14 vAlign=top><form method="POST" action="/blog_article/reg.html"> <FONT color=#ffffff>注册同学录</FONT></TD>
</TR>
<TR>
<TD align=middle bgColor=#ffffff height=25 width=150>注册用户名: </TD>
<TD align=left bgColor=#ffffff height=25 width=400>
<INPUT password">
*必须填写 </td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>重复密码: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<input type="password" name="password1" size="23" value="">
*必须填写 </td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>NickName: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<input http://">
</td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>您的 ICQ: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<input job">
<option value="学 生">学 生</option>
<option value="老 师">老 师</option>
<option value="其 他">其 他</option>
</select>
</td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>您的性别: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<select name="sex">
<option value="俊 男">俊 男</option>
<option value="靓 女">靓 女</option>
<option value="其 他">其 他</option>
</select>
</td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>个人简介: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<textarea name="intro" cols="40" rows="4"></textarea>
</td>
</tr>
<TR bgColor=#ffedc8>
<TD bgColor=#ffffff colSpan=2>
<div align="center">
<input type="submit" name="submit" value="确认申请" >
<input type="reset" name="reset" value="注册重置" >
</div></form>
</TD>
</TR>
</TBODY>
</TABLE>
</DIV></TR></TBODY></TABLE><BR><TR><TD></TD></TR>
</BODY>
</HTML>
<?
}
?>
9、建立数据库的文件run.php3
<?
$dbm=dbmopen("class","c");
dbmclose($dbm);
$dbm=dbmopen("password","c");
dbmclose($dbm);
?>
<?
require("common.php3");
require("mail.php3");
if($submit){
if($id=="")error("请填写您的注册用户名!");
elseif(!eregi("^[0-9a-zA_Z]+$",$id))error("你的用户名不能含有其他字符!");
elseif($password=="")error("请填写您的密码!");
elseif($password<>$password1)error("您的密码填写不正确!");
elseif($name=="")error("请填写您的名字!");
elseif($mail=="")error("请填写您的邮件地址!");
else{
$dbm=dbmopen("class","w");
if(dbmexists($dbm,$id))error("这个用户名已经给别人注册了!");
else{
$intro=nl2br($intro);
$data="$name|!:!|$nickname|!:!|$mail|!:!|$home|!:!|$oicq|!:!|$icq|!:!|$add|!:!|$tel|!:!|$birth|!:!|$job|!:!|$intro|!:!|$sex";
dbminsert($dbm,$id,$data);
$pwd=dbmopen("password","w");
dbminsert($pwd,$id,$password);
}
dbmclose($dbm);
$sendmsg="欢迎注册《深圳中学2000届高中(12)班同学录》n";
$sendmsg.="下面是您的注册信息:n";
$sendmsg.="用户名:$idn用户密码;$passwordn";
$sendmsg.="=====================================================";
$sendmsg.="注册姓名:$namen注册昵称:$nicknamen注册邮箱:$mailn主页地址:$homen";
$sendmsg.="您的OICQ:$oicqn您的 ICQ:$icqn联系地址:$addn联系电话:$teln";
$sendmsg.="您的生日:$birthn您的职业:$jobn您的性别;$sexn您的个人介绍:n$intronn";
$sendmsg.="======================================================";
$sendmsg.="欢迎注册《深圳中学2000届高中(12)班同学录》";
$sendmsg.="登陆地址:http://5212.net/class/";
mail2("欢迎注册《深圳中学2000届高中(12)班同学录》",$sendmsg,$mail);
header("Location:index.php3");
}
}else{
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>同学录用户注册</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<link rel="stylesheet" href="/blog_article/style.css">
<META content="MSHTML 5.00.2614.3500" name=GENERATOR>
</HEAD><BODY bgcolor="#FFFFFF" topMargin=0>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%"><BR>
<DIV align=center></DIV><CENTER><TBODY></TBODY></center>
</TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="60%" align="center">
<TBODY> <TR vAlign=top>
<TD bgColor=#000000 width="100%" height="336">
<DIV align=center>
<TABLE border=0 cellPadding=4 cellSpacing=1 height=390 width=586>
<TBODY>
<TR>
<TD align=middle bgColor=#2f5e8c colSpan=2 height=14 vAlign=top><form method="POST" action="/blog_article/reg.html"> <FONT color=#ffffff>注册同学录</FONT></TD>
</TR>
<TR>
<TD align=middle bgColor=#ffffff height=25 width=150>注册用户名: </TD>
<TD align=left bgColor=#ffffff height=25 width=400>
<INPUT password">
*必须填写 </td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>重复密码: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<input type="password" name="password1" size="23" value="">
*必须填写 </td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>NickName: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<input http://">
</td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>您的 ICQ: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<input job">
<option value="学 生">学 生</option>
<option value="老 师">老 师</option>
<option value="其 他">其 他</option>
</select>
</td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>您的性别: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<select name="sex">
<option value="俊 男">俊 男</option>
<option value="靓 女">靓 女</option>
<option value="其 他">其 他</option>
</select>
</td>
</tr>
<tr>
<td align=middle bgcolor=#ffffff height=25 width=121>个人简介: </td>
<td align=left bgcolor=#ffffff height=25 width=486>
<textarea name="intro" cols="40" rows="4"></textarea>
</td>
</tr>
<TR bgColor=#ffedc8>
<TD bgColor=#ffffff colSpan=2>
<div align="center">
<input type="submit" name="submit" value="确认申请" >
<input type="reset" name="reset" value="注册重置" >
</div></form>
</TD>
</TR>
</TBODY>
</TABLE>
</DIV></TR></TBODY></TABLE><BR><TR><TD></TD></TR>
</BODY>
</HTML>
<?
}
?>
9、建立数据库的文件run.php3
<?
$dbm=dbmopen("class","c");
dbmclose($dbm);
$dbm=dbmopen("password","c");
dbmclose($dbm);
?>
[2]PHP+DBM的同学录程序(1)
来源: 互联网 发布时间: 2013-11-30
这个同学录原来给我们班级用的,因为服务器没有mysql支持,就选择了dbm
国内还没有什么dbm程序,国外也几乎没有
花了一个晚上,在几乎没有任何参考的情况下写了出来
现在公布出来
是一个非常好的dbm使用范例
1、index.php3
<?
if($login){
?>
<HTML>
<HEAD>
<TITLE>深圳中学2000届高中(12)班同学录</TITLE>
<style type="text/css">
A {text-decoration: none; color: #336699; font-family: "宋体"; font-size: 9pt}
A:hover {text-decoration: underline; color: #FF0000; font-family: "宋体"; font-size: 9pt}
body {font-family: "宋体", "serif"; font-size: 9pt}
td {font-family: "宋体", "serif"; font-size: 9pt}
input {font-size: 9pt}
p {font-size: 9pt}
br {font-size: 9pt}
tr {font-size: 9pt}
table {font-size: 9pt}
INPUT { FONT-FAMILY: arial,宋体; FONT-SIZE: 9pt; PADDING-TOP: 3px }
INPUT.text {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
INPUT.file {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
SELECT {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
TEXTAREA {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
.stedit { font-size: 9pt; border-left: 1px solid #4a3163;
border-right: 1px solid #4a3163; border-top: 1px solid #4a3163;
border-bottom: 1px solid #000066 }
.stbtm { background-color: #cococo; color: #000000; font-size: 9pt; height: 20px;
border-left: 1px solid #ffffff; border-right: 1px solid #665b8e;
border-top: 1px solid #ffffff; border-bottom: 1px solid #665b8e }
.ddd {COLOR: #ffffff; FILTER: glow(color=black,strength=1); FONT-SIZE: 9pt; LINE-HEIGHT: 13pt; POSITION: relative; WIDTH: 100%}
</style>
</HEAD>
<body bgcolor="#FFFFFF">
<p 0" width="80%" cellpadding="2" cellspacing="1" bgcolor="#000000" align="center">
<tr align=center>
<td width=19% bgcolor="#336699"><font color="#FFFFFF">姓名</FONT></td>
<td width=17% bgcolor="#336699"><font color="#FFFFFF">NickName</font></td>
<td width=18% bgcolor="#336699"><font color="#FFFFFF">OICQ</FONT></td>
<td width=27% bgcolor="#336699"><font color="#FFFFFF">邮件地址</font></td>
<td width=19% bgcolor="#336699"><font color="#FFFFFF">详细信息</font></td>
</tr>
<?
$dbm=dbmopen("class","r");
$key = dbmfirstkey($dbm);
while ($key) {
$data=dbmfetch($dbm, $key);
$info=explode("|!:!|",$data);
echo "<tr BGCOLOR=\"#FFF5E1\" align=\"center\"><td width=19%><a href=/blog_article/show/id/$key/gt;$info[0]/lt;/a/gt;/lt;/td/gt;/lt;td.html width=17%>$info[1]</td><td width=18%>$info[4]</td><td width=27%>$info[2]</td><td width=19%><a href=/index.html"show.php3?id=$key\">点击查看</a></td></tr>";
$key = dbmnextkey($dbm, $key);
}
?>
<tr BGCOLOR="#336699" align="center">
<td colspan="5"><font color=#FFFFFF><a href="/blog_article/modify.html"><font color=#FFFFFF>修改资料</font></a>||<a href="/blog_article/changepwd.html"><font color=#FFFFFF>修改密码</font></a>||<a href="/blog_article/logout.html"><font color=#FFFFFF>点击退出</font></a></font></td>
</tr>
</table>
<p align="center"> Ex同学录v1.0版本程序制作:<a href="mailto:y10k@963.net">y10k</a><br>
欢迎访问:<a href="http://www.best4cn.com" target="_blank">http://www.best4cn.com</a> </p>
</body></html>
<?
}else header("location:login.php3");
?>
2、更改密码的changepwd.php3
<?
require("common.php3");
if($submit){
$id=$login;
if($id==false)error("请登陆后再修改密码");
else{
$data=dbmopen("password","w");
$pass=dbmfetch($data,$login);
if($password==$pass){
if($password2==$password1){
dbmreplace($data,$id,$password2);
header("location:index.php3");
}else error("您两次输入的密码不一样啊!");
}else error("对不起,您输入的原来的密码错误,不能修改密码!");
}
}else{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK
href="/blog_article/style.css" rel=stylesheet>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<FORM action=changepwd.php3 method=post>
<CENTER>
<TABLE bgColor=#000000 border=0 cellSpacing=1>
<TBODY>
<TR align=middle>
<TD align=middle bgColor=#336699 colSpan=4><FONT
color=#ffffff>用户修改密码</FONT></TD>
</TR>
<TR align=middle>
<TD align=middle bgColor=#f7f7f7 width="122">
<P align=center>老的密码</P>
</TD>
<TD align=middle bgColor=#f7f7f7 colspan="3" width="205">
<INPUT
122">
<p align=center>新的密码</p>
</td>
<td align=middle bgcolor=#f7f7f7 colspan="3" width="205">
<input
122">
<p align=center>重复密码</p>
</td>
<td align=middle bgcolor=#f7f7f7 colspan="3" width="205">
<input
reset">
</P>
</DIV>
</TD>
</TR>
</TBODY>
</TABLE>
</CENTER></FORM></BODY></HTML>
<?
}
?>
国内还没有什么dbm程序,国外也几乎没有
花了一个晚上,在几乎没有任何参考的情况下写了出来
现在公布出来
是一个非常好的dbm使用范例
1、index.php3
<?
if($login){
?>
<HTML>
<HEAD>
<TITLE>深圳中学2000届高中(12)班同学录</TITLE>
<style type="text/css">
A {text-decoration: none; color: #336699; font-family: "宋体"; font-size: 9pt}
A:hover {text-decoration: underline; color: #FF0000; font-family: "宋体"; font-size: 9pt}
body {font-family: "宋体", "serif"; font-size: 9pt}
td {font-family: "宋体", "serif"; font-size: 9pt}
input {font-size: 9pt}
p {font-size: 9pt}
br {font-size: 9pt}
tr {font-size: 9pt}
table {font-size: 9pt}
INPUT { FONT-FAMILY: arial,宋体; FONT-SIZE: 9pt; PADDING-TOP: 3px }
INPUT.text {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
INPUT.file {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
SELECT {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
TEXTAREA {
BACKGROUND-COLOR: #f0f0f0; BORDER-BOTTOM: #101010 1px solid; BORDER-LEFT: #101010 1px solid; BORDER-RIGHT: #101010 1px solid; BORDER-TOP: #101010 1px solid; COLOR: #000000
}
.stedit { font-size: 9pt; border-left: 1px solid #4a3163;
border-right: 1px solid #4a3163; border-top: 1px solid #4a3163;
border-bottom: 1px solid #000066 }
.stbtm { background-color: #cococo; color: #000000; font-size: 9pt; height: 20px;
border-left: 1px solid #ffffff; border-right: 1px solid #665b8e;
border-top: 1px solid #ffffff; border-bottom: 1px solid #665b8e }
.ddd {COLOR: #ffffff; FILTER: glow(color=black,strength=1); FONT-SIZE: 9pt; LINE-HEIGHT: 13pt; POSITION: relative; WIDTH: 100%}
</style>
</HEAD>
<body bgcolor="#FFFFFF">
<p 0" width="80%" cellpadding="2" cellspacing="1" bgcolor="#000000" align="center">
<tr align=center>
<td width=19% bgcolor="#336699"><font color="#FFFFFF">姓名</FONT></td>
<td width=17% bgcolor="#336699"><font color="#FFFFFF">NickName</font></td>
<td width=18% bgcolor="#336699"><font color="#FFFFFF">OICQ</FONT></td>
<td width=27% bgcolor="#336699"><font color="#FFFFFF">邮件地址</font></td>
<td width=19% bgcolor="#336699"><font color="#FFFFFF">详细信息</font></td>
</tr>
<?
$dbm=dbmopen("class","r");
$key = dbmfirstkey($dbm);
while ($key) {
$data=dbmfetch($dbm, $key);
$info=explode("|!:!|",$data);
echo "<tr BGCOLOR=\"#FFF5E1\" align=\"center\"><td width=19%><a href=/blog_article/show/id/$key/gt;$info[0]/lt;/a/gt;/lt;/td/gt;/lt;td.html width=17%>$info[1]</td><td width=18%>$info[4]</td><td width=27%>$info[2]</td><td width=19%><a href=/index.html"show.php3?id=$key\">点击查看</a></td></tr>";
$key = dbmnextkey($dbm, $key);
}
?>
<tr BGCOLOR="#336699" align="center">
<td colspan="5"><font color=#FFFFFF><a href="/blog_article/modify.html"><font color=#FFFFFF>修改资料</font></a>||<a href="/blog_article/changepwd.html"><font color=#FFFFFF>修改密码</font></a>||<a href="/blog_article/logout.html"><font color=#FFFFFF>点击退出</font></a></font></td>
</tr>
</table>
<p align="center"> Ex同学录v1.0版本程序制作:<a href="mailto:y10k@963.net">y10k</a><br>
欢迎访问:<a href="http://www.best4cn.com" target="_blank">http://www.best4cn.com</a> </p>
</body></html>
<?
}else header("location:login.php3");
?>
2、更改密码的changepwd.php3
<?
require("common.php3");
if($submit){
$id=$login;
if($id==false)error("请登陆后再修改密码");
else{
$data=dbmopen("password","w");
$pass=dbmfetch($data,$login);
if($password==$pass){
if($password2==$password1){
dbmreplace($data,$id,$password2);
header("location:index.php3");
}else error("您两次输入的密码不一样啊!");
}else error("对不起,您输入的原来的密码错误,不能修改密码!");
}
}else{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK
href="/blog_article/style.css" rel=stylesheet>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<FORM action=changepwd.php3 method=post>
<CENTER>
<TABLE bgColor=#000000 border=0 cellSpacing=1>
<TBODY>
<TR align=middle>
<TD align=middle bgColor=#336699 colSpan=4><FONT
color=#ffffff>用户修改密码</FONT></TD>
</TR>
<TR align=middle>
<TD align=middle bgColor=#f7f7f7 width="122">
<P align=center>老的密码</P>
</TD>
<TD align=middle bgColor=#f7f7f7 colspan="3" width="205">
<INPUT
122">
<p align=center>新的密码</p>
</td>
<td align=middle bgcolor=#f7f7f7 colspan="3" width="205">
<input
122">
<p align=center>重复密码</p>
</td>
<td align=middle bgcolor=#f7f7f7 colspan="3" width="205">
<input
reset">
</P>
</DIV>
</TD>
</TR>
</TBODY>
</TABLE>
</CENTER></FORM></BODY></HTML>
<?
}
?>
[3]基于mysql的bbs设计(四)
来源: 互联网 发布时间: 2013-11-30
5。版面模块设计
所谓分类,更多的是为telnet服务端考虑的,在cq66模式下,用户可以按
照自己的意愿进行分类,反正最后都是直接以版为基本单位访问的。
对于版面文章的访问,存放的时候以整篇文章为参数,文章的分块由本层
完成,如果上层以块为单位传送,则在上层全部传完,组合后,再传参到本层
分解;在读取 的时候,本层则以块为单位访问,如果上层要以全文为单位访问
,则在上层做合并 工作,本层不管。
至于要不要独立出索引,不影响上层的操作,主要和下层的数据库构造有
关, 主要考虑可行性,效率需求等。
权限的检查放在哪里进行呢?还是放在上层吧,其实就telnet服务器端,
和cq66 的客户端,根本不会给一般用户显示特殊指令的菜单,当然,用户可
以直接发送cq66 的指令,服务器方还是要检查的。但应该不用在它下面的功
能模块层再检查一次吧
。 Class BoardManage {
private:
public:
// 有关分类的操作
int GetClassNameInfo( int maxclass, char **classid,
char ** classname );
返回分类的信息,中英文名。
int GetBoardName( int maxboards, char *classid,
char **boardname );
返回某分类中的版面信息,一般分类,直接select ..
from sboard
where boardclass == .... 特殊分类则查相应的表。。。。
// 修改需要版面管理员以上的特权
int NewClass( char * newclassname, int type );
新建分类,普通分类还是特殊分类,
int DeleteClass( char *newclassname );
删除分类,但不cascade,即本层不负责一致性,由上层负责将
相应的版面的分类信息改为别的。分类改名也是先删再建,
int AddClassBoard( const char *classname, char *newboardname );
将已建好的版加入某分类中,专门针对特殊分类,对一般分类,其
效果和modifyboardinfo一样,
int DeleteClassBoard( const char *classname, char *boardname );
从分类中删除某个版,也是针对特殊分类,对一般分类,效果也
是和modifyboardinfo一样,一个版的分类属性可以为空,即不属
于任何分类。
// 有关版的信息的操作。
int NewBoard( const char *boardid,char *boardname);
新建一个版,建立对应的表。其他参数取默认值。
int DeleteBoard( const char *boardid );
删除一个版,删除对应的表。
int GetBoardInfo( const char *boardid, char *boardname,
int& numposts, char *masters, char *class,
long &level );
取的版面的信息。
int ModifyBoardId( const char *oldid, char *newid );
改变版的英文id,对应table的名称也要改变,
int ModifyBoardInfo( const char *boardid, char *boardname,
int numposts, char *masters, char *class,
long level );
修改版面信息,需要特权。
// 有关版面文章的操作。
int AddText( char *boardid, char *title, char *writer,
char *text );
往版面中增加文章,内部将长文章分割成2k的块。
int DeleteText( char *boardid, int num );
删除文章,只是做一个标记,并不立刻修改对应的table。
int FlushTable( char *boardid );
刷新版面,删除被删文章的对应的记录。
int MarkText( char *boardid, int num, char mark );
给文章做标记。
int ModifyTitle( char *boardid, int num, char *newtitle );
修改文章的标题。
int ModifyText( char *boardid, int num, char *newtext );
修改文章内容,不是自己的文章需要特权。
int GetTextInfo( const char *boardid, int num, char *title,
char *writer, char& mark );
取得文章的标题信息。
int GetText( const char *boardid, int num, int block,
char *text );
读取文章的内容,以块为单位。
// 文章和作者的查询
// 一次将查询的结果全部返回?
int QueryWriter( const char *boardid, char *writer,
char **result );
查询版面上,某作者的文章。
int QueryTitle( const char *boardid, char *title,
char **result );
查询版面上,标题中包含指定内容的文章。
}
参数的传递是一件比较讨厌的事,从抽象的角度,希望返回的数据与
底层无关,所以应该加以处理,但从效率的角度,又不希望数据进行多次
复制,另一方面,空间的申请释放,究竟是在上层中完成还是在本层中完成
呢?一不小心,很容易有内存错误。
所谓分类,更多的是为telnet服务端考虑的,在cq66模式下,用户可以按
照自己的意愿进行分类,反正最后都是直接以版为基本单位访问的。
对于版面文章的访问,存放的时候以整篇文章为参数,文章的分块由本层
完成,如果上层以块为单位传送,则在上层全部传完,组合后,再传参到本层
分解;在读取 的时候,本层则以块为单位访问,如果上层要以全文为单位访问
,则在上层做合并 工作,本层不管。
至于要不要独立出索引,不影响上层的操作,主要和下层的数据库构造有
关, 主要考虑可行性,效率需求等。
权限的检查放在哪里进行呢?还是放在上层吧,其实就telnet服务器端,
和cq66 的客户端,根本不会给一般用户显示特殊指令的菜单,当然,用户可
以直接发送cq66 的指令,服务器方还是要检查的。但应该不用在它下面的功
能模块层再检查一次吧
。 Class BoardManage {
private:
public:
// 有关分类的操作
int GetClassNameInfo( int maxclass, char **classid,
char ** classname );
返回分类的信息,中英文名。
int GetBoardName( int maxboards, char *classid,
char **boardname );
返回某分类中的版面信息,一般分类,直接select ..
from sboard
where boardclass == .... 特殊分类则查相应的表。。。。
// 修改需要版面管理员以上的特权
int NewClass( char * newclassname, int type );
新建分类,普通分类还是特殊分类,
int DeleteClass( char *newclassname );
删除分类,但不cascade,即本层不负责一致性,由上层负责将
相应的版面的分类信息改为别的。分类改名也是先删再建,
int AddClassBoard( const char *classname, char *newboardname );
将已建好的版加入某分类中,专门针对特殊分类,对一般分类,其
效果和modifyboardinfo一样,
int DeleteClassBoard( const char *classname, char *boardname );
从分类中删除某个版,也是针对特殊分类,对一般分类,效果也
是和modifyboardinfo一样,一个版的分类属性可以为空,即不属
于任何分类。
// 有关版的信息的操作。
int NewBoard( const char *boardid,char *boardname);
新建一个版,建立对应的表。其他参数取默认值。
int DeleteBoard( const char *boardid );
删除一个版,删除对应的表。
int GetBoardInfo( const char *boardid, char *boardname,
int& numposts, char *masters, char *class,
long &level );
取的版面的信息。
int ModifyBoardId( const char *oldid, char *newid );
改变版的英文id,对应table的名称也要改变,
int ModifyBoardInfo( const char *boardid, char *boardname,
int numposts, char *masters, char *class,
long level );
修改版面信息,需要特权。
// 有关版面文章的操作。
int AddText( char *boardid, char *title, char *writer,
char *text );
往版面中增加文章,内部将长文章分割成2k的块。
int DeleteText( char *boardid, int num );
删除文章,只是做一个标记,并不立刻修改对应的table。
int FlushTable( char *boardid );
刷新版面,删除被删文章的对应的记录。
int MarkText( char *boardid, int num, char mark );
给文章做标记。
int ModifyTitle( char *boardid, int num, char *newtitle );
修改文章的标题。
int ModifyText( char *boardid, int num, char *newtext );
修改文章内容,不是自己的文章需要特权。
int GetTextInfo( const char *boardid, int num, char *title,
char *writer, char& mark );
取得文章的标题信息。
int GetText( const char *boardid, int num, int block,
char *text );
读取文章的内容,以块为单位。
// 文章和作者的查询
// 一次将查询的结果全部返回?
int QueryWriter( const char *boardid, char *writer,
char **result );
查询版面上,某作者的文章。
int QueryTitle( const char *boardid, char *title,
char **result );
查询版面上,标题中包含指定内容的文章。
}
参数的传递是一件比较讨厌的事,从抽象的角度,希望返回的数据与
底层无关,所以应该加以处理,但从效率的角度,又不希望数据进行多次
复制,另一方面,空间的申请释放,究竟是在上层中完成还是在本层中完成
呢?一不小心,很容易有内存错误。
最新技术文章: