学会一招

今天豆豆静提到这里留言会遇到非法操作的的问题,原来我也遇到过一回,没太注意,这回觉得是得解决了,Google了一下,结果还是搜到了PJHome的论坛里,也有人遇到了这个问题
还好有高手发现的问题的原因,同时也有人给出了解决办法

如果你的网站使用www.aaa.com和aaa.com都可以访问,而且你又是使用全静态页面,那么可能会发生上述现象。

如果你使用http://aaa.com登陆管理页面并生成静态页面,则生成页的评论连接是使用http://aaa.com/blogcomm.asp,生成静态页面后如果有人是通过http://www.aaa.com访问页面并发表评论则会提示“非法操作!!”,反之应该也会提示。为什么呢?!

来看来“非法操作!!”出自何方?

用全站源码检索发现,出自blogcomm.asp第12行左右:
程序代码 程序代码
If Not ChkPost() Then
    response.Write ("非法操作!!")


再检索chkpost(),出自function.asp和GetCode.asp,代码均为判断是否外站提交,函数代码为:
程序代码 程序代码
Function ChkPost()
    Dim server_v1, server_v2
    chkpost = False
    server_v1 = CStr(Request.ServerVariables("HTTP_REFERER"))
    server_v2 = CStr(Request.ServerVariables("SERVER_NAME"))
    If Mid(server_v1, 8, Len(server_v2))<>server_v2 Then
        chkpost = False
    Else
        chkpost = True
    End If
End Function


意思是截取提交的网页连接(除开http://外的第8个字符开始)同当前主机名比较,如果不相同则是外部提交

所以现在如果使用www.aaa.com域名而原来生成时使用aaa.com,这两个一比较是不同的,结果PJ就误认为是外部提交,所以出现“非法操作!!”错误提示。


斑竹大人给出了解决办法

由于静态页面中用到了BASE,所以默认所有的网址均为博主生成静态页面时候的网址。

分别打开common下的function.asp和getcode.asp,
找到:    
程序代码 程序代码
If Mid(server_v1, 8, Len(server_v2))<>server_v2 Then

修改成:
程序代码 程序代码
if instr(server_v1, replace(replace(server_v2, "http://", ""), "www.", ""))=0 then


解决之后才发现PJ BLOG 2.8.5.157的更新包里的function.asp和getcode.asp两个文件已经解决的这个问题.....舜子还是及时呀~



[本日志由 Toby 于 2008-09-05 01:44 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: PJBlog 非法操作
评论: 1 | 引用: 0 | 查看次数: -
回复回复豆豆静[2008-09-05 03:48 PM | del]
豆豆静没看懂,不过也能留言了~
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.