请问哪位大侠帮我修改下这个留言本的源码

fj218 2009-01-04 01:50:09
http://down.chinaz.com/soft/19747.htm
爱萍留言系统
我觉得做的很好很强大,但我现在有个地方想修改一下,该系统有注册用户,普通管理员和超级管理员

当普通管理员和超级管理员登陆后,首页有个进入后台管理的链接,注册用户没有,我现在想修改为只有超级管理员登陆时显示这个进入后台管理的链接,注册用户和普通管理员都没有,我想应该不难吧。谢谢
...全文
168 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fj218 2009-01-09
  • 打赏
  • 举报
回复
我仔细按照你的改动,修改了,还是不行,普通管理员还是看不了加密信息

If (rs("IsPublic")&"" <> "0" Or System.AdminLogin = True) Or System.Power = "2" Then'改动5:或是普通管理员也可查看加密留言

这一句是在这里修改啦

str = re.Replace(str, PostIP)
If (rs("IsPublic")&"" <> "0" Or System.AdminLogin = True) Or System.Power = "2" Then
Content = UBBCode(System.WordFilter(Content))
If Not System.ChkEmpty(KeyWord) Then
fj218 2009-01-09
  • 打赏
  • 举报
回复
终于到达我的要求了,感谢toury,万分感谢!
toury 2009-01-09
  • 打赏
  • 举报
回复
还是心里过意不去,还要公开道歉,我一个小疏忽耽误你好几天时间,对不起!
本来是加个公共变量Power,但过程里以前的dim没去掉,就又变成局部变量了,当然就没作用了,呵呵。
我补充完整了吧:
==========================
1、维持第一次修改;
2、新改动:

1)system/inc/Cls_System.asp修改红字行
Class Cls_System
public Power'改动1:增加一个power公共变量
Public selfname
Public UserCookieName
Public AdminSessionName
Public ShowSaveFileError

Private UserCookieValue
Private LoginDataFilled
Private LoginUserData(3)

Private Sub Class_Initialize()
Power=-100'改动2:赋初值为非管理员
LoginDataFilled = False
ShowSaveFileError = True
UserCookieName = "LOGIN_USER_DATA"
AdminSessionName = "ADMIN_LOGIN_DATA"
UserCookieValue = GetCookies(UserCookieName)
selfname = Request.ServerVariables("SCRIPT_NAME")
End Sub

Public Property Get AdminLogin
Dim AdminSession, Power,sql, i'改动3:去掉局部变量声明
AdminLogin = False

--------------------------------------
2)system/inc/Cls_Manager.asp修改红字行
Public Sub UserLogout(action)
system.Power=-100'改动4:注销登录后恢复power值
System.SetCookies System.UserCookieName, Empty, 0
---------------------------------------------------

3)system/inc/Cls_Page.asp修改红字行
a)
Private Sub Class_Initialize()
UseCache = false'改动5 不使用缓存
MaxIteration = 0
'.........................
b)
找到 Public Function ReplaceWord(ByRef rs, ByRef re, template, nPageSize, sMoveType)这个函数
If (rs("IsPublic")&"" <> "0" Or System.AdminLogin = True) Or System.Power = "2" Then'改动6:或是普通管理员也可查看加密留言
toury 2009-01-07
  • 打赏
  • 举报
回复
1、维持第一次修改;
2、新改动:

1)system/inc/Cls_System.asp修改红字行
Class Cls_System
public Power'改动1:增加一个power公共变量
Public selfname
Public UserCookieName
Public AdminSessionName
Public ShowSaveFileError

Private UserCookieValue
Private LoginDataFilled
Private LoginUserData(3)

Private Sub Class_Initialize()
Power=-100'改动2:赋初值为非管理员
LoginDataFilled = False
ShowSaveFileError = True
UserCookieName = "LOGIN_USER_DATA"
AdminSessionName = "ADMIN_LOGIN_DATA"
UserCookieValue = GetCookies(UserCookieName)
selfname = Request.ServerVariables("SCRIPT_NAME")
End Sub
2)system/inc/Cls_Manager.asp修改红字行
Public Sub UserLogout(action)
system.Power=-100'改动3:注销登录后恢复power值
System.SetCookies System.UserCookieName, Empty, 0
3)system/inc/Cls_Page.asp修改红字行
a)
Private Sub Class_Initialize()
UseCache = false'改动4 不使用缓存
MaxIteration = 0
'.........................
b)
找到 Public Function ReplaceWord(ByRef rs, ByRef re, template, nPageSize, sMoveType)这个函数
If (rs("IsPublic")&"" <> "0" Or System.AdminLogin = True) Or System.Power = "2" Then'改动5:或是普通管理员也可查看加密留言
====================================================
我简单测试了一下,应该可以了。具体你自己测试吧
还有更合理的方法,但我实在没时间整理代码了,请原谅。
toury 2009-01-07
  • 打赏
  • 举报
回复
有时间我再看看吧
toury 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fj218 的回复:]
估计就这两个地方改改就能达到我的要求了,我不是要求全部显示加密信息,加密信息只能超级管理员和普通管理员看(普通管理员又不能登录后台),其他注册用户和未注册用户是看不到加密信息的。现在改成了谁都可以看。toury,麻烦再帮我想想,应该就两处位置修改一下。
[/Quote]
你给我的短消息里不是说不要注册用户了吗?
fj218 2009-01-07
  • 打赏
  • 举报
回复
估计就这两个地方改改就能达到我的要求了,我不是要求全部显示加密信息,加密信息只能超级管理员和普通管理员看(普通管理员又不能登录后台),其他注册用户和未注册用户是看不到加密信息的。现在改成了谁都可以看。toury,麻烦再帮我想想,应该就两处位置修改一下。
toury 2009-01-06
  • 打赏
  • 举报
回复
LZ,既然你说注册用户可以不要,那就维持上面的更改,然后再修改下面:
system\inc\Cls_Page.asp----------》找到 Public Function ReplaceWord(ByRef rs, ByRef re, template, nPageSize, sMoveType)这个函数,删除红字部分就可以了

re.Pattern = "<#POST_GUEST_QQ#>"
str = re.Replace(str, QQ)

re.Pattern = "<#POST_GUEST_IP#>"
str = re.Replace(str, PostIP)


If rs("IsPublic")&"" <> "0" Or System.AdminLogin = True Then
Content = UBBCode(System.WordFilter(Content))
If Not System.ChkEmpty(KeyWord) Then
re.Pattern = "([^>]*)(" & System.NoRegExp(System.TransferHTML(KeyWord, "[html-format]['][space][vbTab][japan-html]")) & ")([^<]*)"
Set Matches = re.Execute(Content)
For Each Match In Matches
If InStr(Match.Value, "<") = 0 And InStr(Match.Value, ">") = 0 Then
Content = Replace(Content, Match.Value, Match.SubMatches(0)&"<span class=""keyfont"">"&Match.SubMatches(1)&"</span>"&Match.SubMatches(2))
End If
Next
Set Matches = Nothing
End If
Content = Face & Content
Else
Content = "<div class=""foradmin"">" & System.HTMLEncode(SecretMsg) & "</div>"
End If


re.Pattern = "<#POST_CONTENT_MESSAGE#>"
str = re.Replace(str, Content)

jiang_jiajia10 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 toury 的回复:]
找到文件:system/inc/Cls_System.asp修改红字行:

Public Property Get AdminLogin
Dim AdminSession, Power, sql, i
AdminLogin = False
AdminSession = GetSession(AdminSessionName)
Power = Trim(GetCookies(UserCookieName&"POWER") & "")
If Power <> "1" And Power <> "2" Then Exit Property
If ChkEmpty(AdminSession) Then
FillLoginUserData()
If Not ChkEmpty(LoginUserNa…
[/Quote]
UP
toury 2009-01-06
  • 打赏
  • 举报
回复
本次修改就是显示加密留言
原来是只有这样
If rs("IsPublic")&"" <> "0" Or System.AdminLogin = True Then
才可以看加密,否则
Content = " <div class=""foradmin"">" & System.HTMLEncode(SecretMsg) & " </div>"
这个就是替代加密信息的文字

删除它们就OK了
toury 2009-01-06
  • 打赏
  • 举报
回复
不可能的,我已经测试了一下,加密留言统统可以看,连注册用户都可以看的,哈哈
fj218 2009-01-06
  • 打赏
  • 举报
回复
还是不行,第二次修改不晓得有什么作用,看不出来,还是跟第一次一样,普通管理员登陆上去了,是没有“后台管理”的选项了,但查看加密信息的权限还是没有了
toury 2009-01-05
  • 打赏
  • 举报
回复
我没有足够的时间去整理他的代码,楼上的回复只是简单看了看,凭直觉改的,确实改了之后普通管理员的权限每了,你可以分析上面的代码得出结论。

给你个思路:你可以在他的system类里自己添加针对普通管理员的PUBLIC变量,然后在该使用的调用
空心兜兜 2009-01-04
  • 打赏
  • 举报
回复
为什么要两级管理员呢
fj218 2009-01-04
  • 打赏
  • 举报
回复
再补充下,就是普通管理员权限不变,只是不能进入后台管理。能不能不改变逻辑关系,只加个Power为2的判断,如果为2的时候,首页不显示后台管理这一项
fj218 2009-01-04
  • 打赏
  • 举报
回复
2楼的答案很强大,正解。但我又发现了一个问题,虽然普通管理员登陆后进入不了后台,但权限也跟注册用户一样了,都不能查看加密留言。我的要求是普通管理员能查看加密留言,但不能进入后台管理。麻烦2楼再帮修改下,谢谢。
madelaop5566 2009-01-04
  • 打赏
  • 举报
回复
你把那 普通用户登陆的界面代码文件删除 然后跳转设置为直接到管理员的 很简单么。。
layers2323 2009-01-04
  • 打赏
  • 举报
回复
jf
toury 2009-01-04
  • 打赏
  • 举报
回复
找到文件:system/inc/Cls_System.asp修改红字行:

Public Property Get AdminLogin
Dim AdminSession, Power, sql, i
AdminLogin = False
AdminSession = GetSession(AdminSessionName)
Power = Trim(GetCookies(UserCookieName&"POWER") & "")
If Power <> "1" And Power <> "2" Then Exit Property
If ChkEmpty(AdminSession) Then
FillLoginUserData()
If Not ChkEmpty(LoginUserName) Then
sql = "SELECT ID FROM LP_User WHERE ID=" & System.SqlVar(LoginUserID, 1, "int") &_
" AND UserName=" & System.SqlVar(LoginUserName, 1, "string") &_
" AND UserPassword=" & System.SqlVar(LoginUserData(2), 1, "string") &_
" AND UserPower=" & System.SqlVar(LoginUserData(3), 1, "string")
If Data.Exists(sql) = 1 Then
Power = FormatUserPower(LoginUserData(3), LoginUserName, 1)
If Power = 1 Or Power = 2 Then
SetSession AdminSessionName, LoginUserID&"|"&LoginUserName&"|"&LoginUserData(2)&"|"&CStr(Power)
Session.Timeout = 20
'If Not ChkEmpty(GetSession(AdminSessionName)) Then'这行改为如下
If Not ChkEmpty(GetSession(AdminSessionName)) and Power = 1 Then
AdminLogin = True
End If
End If
End If
End If
Else
Power = UBound(LoginUserData)
AdminSession = Split(AdminSession, "|")
For i = 0 To UBound(AdminSession)
LoginUserData(i) = AdminSession(i)
If i = Power Then Exit For
Next
Power = AdminSession(i)
Erase AdminSession
LoginDataFilled = True
'If Power = "1" Or Power = "2" Then AdminLogin = True'这行改为如下
If Power = "1" Then AdminLogin = True
End If
End Property
ZKM_ZHANG 2009-01-04
  • 打赏
  • 举报
回复
jf

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧