设为首页
加入收藏
联系站长
您现在的位置: 网贝 >> 建站学院 >> 数据库 >> 在线书籍教程 >> 文章正文 用户登录 新用户注册
[组图]大型CMS数据库端封装一例         ★★★★
大型CMS数据库端封装一例
相关网站:
作者:Xinsoft 文章来源:bbs.dvbbs.net 点击数: 更新时间:2005-4-14

注:

Xinsoft CMS 0.9版 是一个正在开发中的强大的内容管理系统。
支持无限级文章频道、专题,支持 Blog ,支持用户私有文章频道与站点公有文章频道之间的映射,初步支持Wiki,允许一篇文章存在多个版本和一个主版本,允许在一台服务器上基于一套CMS架设多个站点,支持对管理员的权限设置按照 GACL 列表进行,权限可向下继承和从中间截断。不仅仅支持树状拓扑的信息结构,也支持网状拓扑的信息结点。文字、附件、多媒体文件、RichText、定义值,通过一个统一的信息节点结构去处理、归类。

其中体现了一些本人对知识管理、社会化软件的设计理念。


面向高端应用,初显知识管理理念端倪

以下代码涉及到的是管理员权限设置。

这些代码可以作为学习触发器、存储过程、用户自定义函数的绝佳教程:)

表:

CREATE TABLE [Administrator] (
      [uid] [int] NOT NULL ,
      [uname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
      [pwd] [char] (32) COLLATE Chinese_PRC_CI_AS NULL ,
      [echoname] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
      [Flag] [int] NULL CONSTRAINT [DF_Administrator_Flag] DEFAULT (1),
      [comment] [nvarchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,
       [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,
      [RegTime] [datetime] NULL CONSTRAINT [DF_Administrator_RegTime] DEFAULT (getdate()),
      [LogTime] [datetime] NULL ,
      [LogCount] [int] NULL CONSTRAINT [DF_Administrator_LogCount] DEFAULT (0),
      CONSTRAINT [PK_Administrator] PRIMARY KEY  CLUSTERED
      (
            [uid]
      )  ON [PRIMARY]
) ON [PRIMARY]
GO




CREATE TABLE [XcmsOpt] (
      [ID] [int] NOT NULL ,
      [schemaname] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_XcmsOpt_schemaname] DEFAULT ('catalog'),
      [cname] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
      CONSTRAINT [PK_XcmsOpt] PRIMARY KEY  CLUSTERED
      (
            [ID]
      )  ON [PRIMARY]
) ON [PRIMARY]
GO


CREATE TABLE [XcmsOptItem] (
      [OptID] [int] NULL ,
      [ID] [int] NOT NULL ,
      [MaskPos] [tinyint] NULL CONSTRAINT [DF_XcmsOptItem_MaskPos] DEFAULT (1),
      [cname] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
      CONSTRAINT [PK_XcmsOptItem] PRIMARY KEY  CLUSTERED
      (
            [ID]
      )  ON [PRIMARY]
) ON [PRIMARY]
GO


存储过程:

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE PROCEDURE  dbo.Proc_Administrator_AddUser
      @uname varchar(20),
      @upass varchar(250),
      @echoname nvarchar(40),
      @email varchar(250),
      @comment nvarchar(250),
      @flag int
AS
Begin
      Declare @pwd char(32)
      Declare @N int
      Declare @uid int
      
      set @uname=Lower( @uname )
      select @N=Count(uid) from Administrator where uname=@uname

      If @N<1
      select @N=Count(uid) from Administrator where echoname=@echoname

      If @N<1
      Begin
            Select top 1 @N=uid from Administrator order by uid desc
            If @@RowCount>0
                  set @N=@N+1
            Else
                  set @N=1

            set @uid=@N

      End
      Else
            set @uid=0


      
      If @uid>0
      Begin
            Set @pwd=dbo.Xmd5( @upass )
            insert into Administrator ( [uid] , [uname] , [pwd] , [echoname] , [flag] , [comment] , ) values( @uid , @uname , @pwd , @echoname , @flag , @comment , @email )
      End

      Return( @uid )
End
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO

CREATE Proc Proc_Administrator_CheckLogin

      @uname      varchar(20)
,       @upass            varchar(80)

,      @uid            int            output
,      @echoname      nvarchar(40)      output
,       @flag            int            output

As
Begin

      -- Return:
      -- -1      Uname Not Found
      --  0      Uname is Locked
      -- -2      Upass is Error
      --  1      Success

      Declare @N int
      Declare @pwd char(32)

      Set @uname=dbo.Secu_InputFilter_LevA ( @uname )
      
      Select @uid=uid , @pwd=pwd , @echoname=echoname , @flag=flag from Administrator where uname=@uname
      
      If @uid is null
            Set @N=-1
      Else
            If @flag<1
                  Set @N=0
            Else
                  Set @N=1


      If @N=1
      If dbo.Xmd5( @upass ) = @pwd
            Set @N=1
      Else
            Set @N=-2


      If @N=1
            Update Administrator set LogTime=getdate() , LogCount=LogCount+1 where uid=@uid

      Return( @N )
End
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE PROCEDURE Proc_Administrator_RegTestCode
      @uid int
,      @RegTestCode char(32)
AS
Begin
      Declare @uname varchar(20)
      Declare @Comment nvarchar(250)
      Declare @Flag int

      select @uname=uname , @Comment=Comment  , @Flag=Flag  from Administrator where uid=@uid

      If @Flag=0
      If dbo.Xmd5( 'uname=' + @uname + ';RegTestCode=' + @RegTestCode + ';' ) = @Comment
      Begin
            Set @Flag=1
            Update Administrator set Comment='' where uid=@uid
      End
      Else
            Set @Flag=0
                  
      
      Update Administrator set Flag=@Flag where uid=@uid
      Return( @Flag )
End
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

[1] [2] [3] 下一页  

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    相关网站:

    文章 下载 图片
    普通文章[组图]大型CMS数据库
    普通文章数据库设计规范V2.0
    普通文章SQL语言快速入门
    普通文章精通数据库系列之入
    普通文章精通数据库系列之入
    普通文章SQL语言入门教程
  • 此栏目下没有推荐文章
  • 普通文章把手教你写私服列表
    普通文章WEB标准
    普通文章GOOGLE sitemap官方
    普通文章用php定制404错误页
    普通文章WAP(wml)开发问答
    普通文章[组图]PS教程系列:快
    普通文章时使用apache和IIS,
    普通文章[组图]2005年的第一
    推荐文章[组图]彻底掌握IIS6
    推荐文章[组图]CSS 全攻略
    推荐文章各种脚本错误详解!
    推荐文章直接生成XML的Googl
    推荐文章九个常见的错误原因
    推荐文章Win XP家用版也能装
    推荐文章JSP入门初级教程之J
    推荐文章ASP入门及提高
    没有相关文章

    没有任何图片文章
    (只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    Copyright © 2003-2005 NetBei.com All rights reserved.