Chinaunix

标题: [性能] php写的B/S应用系统中如何限制系统用户数? [打印本页]

作者: zagorot    时间: 2005-11-22 14:10
标题: [性能] php写的B/S应用系统中如何限制系统用户数?
各位大虾,小弟求助:

本人所在单位最近用PHP开发了一个web应用系统, 市场部在制定这个产品的价格的时候, 分了3个档次,5个用户数,10个用户数,和20个用户数.

但小弟不知道如何在PHP代码中限制这些用户数? 因为这个系统就是一般的web系统,代码都是脚本语言,这些源代码直接都能看到的,这套系统一旦安装在客户的机器上,他们就可以轻易改动这些设置.不象编译性语言的应用系统要花些时间才能破解.

我现在想不到任何办法去达到这个要求. 各位大虾帮助我.

Thanks in advance!

[ 本帖最后由 HonestQiao 于 2005-11-25 09:30 编辑 ]
作者: hitty    时间: 2005-11-22 14:13
加密代码
作者: zagorot    时间: 2005-11-22 14:19
加密代码后会不会对现场安装,调试或者维护造成什么不方便?

还有没有其他方法啊?
作者: yejr    时间: 2005-11-22 16:35
原帖由 zagorot 于 2005-11-22 14:19 发表
加密代码后会不会对现场安装,调试或者维护造成什么不方便?

还有没有其他方法啊?


可以只加密系统限制那部分的代码
作者: wobushiwo    时间: 2005-11-22 16:58
原帖由 yejr 于 2005-11-22 16:35 发表


可以只加密系统限制那部分的代码


那...极大的加大破解的可能性了
作者: 北京野狼    时间: 2005-11-22 16:59
限制系统用户数是什么意思?
限制用户总数?限制并发用户数?
作者: devboy    时间: 2005-11-22 22:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: geel    时间: 2005-11-23 02:31
encode主要文件的同时再加密几个无关紧要的小文件,这之前把变量名都替换掉,再把代码写的乱七八糟,偶尔在不起眼的地方加上判断,再留个后门,让系统三天两头出点问题,你现场的时候顺便把他们自己加的用户干掉,反正他们不敢说少了用户
作者: hitty    时间: 2005-11-23 09:01
Zend  比较容易反编译,加密比较安全
作者: zagorot    时间: 2005-11-23 10:29
原帖由 北京野狼 于 2005-11-22 16:59 发表
限制系统用户数是什么意思?
限制用户总数?限制并发用户数?


哦,不好意思,是我没说清楚.

老板的意思是限制并发用户数.  是不是只要限制session中的用户数量就可以了?  

好象看起来,还是要用zend编译代码才能防止被技术含量低的人破解. 还有其他的妙招吗?
作者: zagorot    时间: 2005-11-23 10:32
原帖由 geel 于 2005-11-23 02:31 发表
encode主要文件的同时再加密几个无关紧要的小文件,这之前把变量名都替换掉,再把代码写的乱七八糟,偶尔在不起眼的地方加上判断,再留个后门,让系统三天两头出点问题,你现场的时候顺便把他们自己加的用户干掉, ...


这招很绝呀. 不过要是我们没去现场,就没办法发现他们自己是否修改这些代码了.
作者: 北京野狼    时间: 2005-11-23 14:03
连接的并发和php没有任何关系,
和Zend更没有任何联系
session控制的也只是所谓的在线用户
作者: oklqh    时间: 2005-11-23 14:38
仿佛看到了你们老板的奸笑
作者: geel    时间: 2005-11-23 21:02
防那么严没有必要,让他们可以费点心思的多加用户,这样才有人买你的东西。多考虑考虑程序外面的事情。
作者: MayerCN    时间: 2005-11-23 21:18
原帖由 zagorot 于 2005-11-23 10:29 发表


哦,不好意思,是我没说清楚.

老板的意思是限制并发用户数.  是不是只要限制session中的用户数量就可以了?  

好象看起来,还是要用zend编译代码才能防止被技术含量低的人破解. 还有其他的妙招吗?



要并发数限制 配置你的WEB服务器就可以了

你可以对整个WEB服务器限制, 也可以对其中的一个站点(HOST)进行限制
作者: zagorot    时间: 2005-11-30 15:48
关键的问题是,软件卖给别人了,那代码就会装在他们自己的服务器上,我是没办法控制他们的web服务器的.看来唯一的办法就只是加密代码了。

原帖由 MayerCN 于 2005-11-23 21:18 发表



要并发数限制 配置你的WEB服务器就可以了

你可以对整个WEB服务器限制, 也可以对其中的一个站点(HOST)进行限制

作者: 北京野狼    时间: 2005-11-30 15:54
加密代码对限制用户数没有任何作用
作者: zagorot    时间: 2005-11-30 15:56
这个我同意.

我是没有想到老板还要按照用户数来卖这个软件的. 根本没想到.不然,就会考虑用别的语言,不会使用php了.

原帖由 geel 于 2005-11-23 21:02 发表
防那么严没有必要,让他们可以费点心思的多加用户,这样才有人买你的东西。多考虑考虑程序外面的事情。

作者: 北京野狼    时间: 2005-11-30 16:31
原帖由 zagorot 于 2005-11-30 15:56 发表
这个我同意.

我是没有想到老板还要按照用户数来卖这个软件的. 根本没想到.不然,就会考虑用别的语言,不会使用php了.


用什么语言开发能限制用户数?
作者: lovered    时间: 2005-11-30 16:51
原帖由 zagorot 于 2005-11-30 15:48 发表
关键的问题是,软件卖给别人了,那代码就会装在他们自己的服务器上,我是没办法控制他们的web服务器的.看来唯一的办法就只是加密代码了。


那可以把这部分数据放到你们的服务器嘛,每次都到你们服务器验证一下。如果客户的服务器用共享内存应该也可以。代码是一定要编译的。
一些想法,各位继续...
作者: zagorot    时间: 2005-11-30 16:52
原帖由 北京野狼 于 2005-11-30 16:31 发表

用什么语言开发能限制用户数?


换个角度说吧, 编译型的语言多少可以使用户不知道程序内部的工作原理,这样开发者就可以做一些手脚. 解释型语言如果代码不加密,用户就比较容易修改这些代码.

[ 本帖最后由 zagorot 于 2005-11-30 16:56 编辑 ]
作者: 北京野狼    时间: 2005-11-30 16:56
原帖由 zagorot 于 2005-11-30 16:52 发表


编译型的啊,至少可以让他们费点心思


在这个帖子里,我和你解释数次,限制用户数和开发语言没有关系。

你说说用c语言怎么做到限制用户数 ?
作者: zagorot    时间: 2005-11-30 17:07
原帖由 北京野狼 于 2005-11-30 16:56 发表


在这个帖子里,我和你解释数次,限制用户数和开发语言没有关系。

你说说用c语言怎么做到限制用户数 ?


或许我没有很明确的解释清楚我的要求. 的确,看样子,我把限制用户数和开发语言挂上钩了. 但其实,我想讨论的应该是另外一个概念,就是代码的可读性和反编译性.

因为限制用户数, 在我看来, 无非是 限制整个系统的用户总数 或者 限制整个系统的在线用户数 , 这两个要求, 在编译型的语言编写的系统中,应该不难做到吧?

我唯一的担心,就是担心php语言的可读性, 用户可能会比较容易修改我们的代码,而除去我们的限制.

当然,任何方法都不可能完全限制别人破解代码. 但是我们的软件做为一个不太出名,价值不是很高,通用性不是很强的系统,应该不会引来高手破解代码.

我所想做的,只是增大客户破解我们代码的成本,以至于他们认为代价太大,不值得去破解. 仅此而已.
作者: zagorot    时间: 2005-11-30 17:11
原帖由 lovered 于 2005-11-30 16:51 发表

那可以把这部分数据放到你们的服务器嘛,每次都到你们服务器验证一下。如果客户的服务器用共享内存应该也可以。代码是一定要编译的。
一些想法,各位继续...


这个到我们服务器验证的办法我觉得我们这套系统行不通, 因为客户有可能是没有连接internet的.
作者: wobushiwo    时间: 2005-11-30 17:25
那你是走上php这条不归路了..........
作者: 北京野狼    时间: 2005-11-30 17:25
限制整个系统的用户总数 或者 限制整个系统的在线用户数
用任何语言都无法做到。
php做不到评什么编译语言能做。

和开发语言有什么关系,真是没耐心再和你讲
作者: zagorot    时间: 2005-11-30 17:43
原帖由 北京野狼 于 2005-11-30 17:25 发表
限制整个系统的用户总数 或者 限制整个系统的在线用户数
用任何语言都无法做到。
php做不到评什么编译语言能做。

和开发语言有什么关系,真是没耐心再和你讲


确实,我说了,没有任何语言能够防止别人破解. 不知道你说的"任何语言都无法做到"是不是这个意思? 很多游戏是编译后的可执行文件,也一样被人破解. 机器码也一样可以修改,当然"任何语言都无法做到".  

如果除开"任何语言开发的系统都能够被破解" 这个问题以后, 当然可以做到限制用户数. 为什么你总要说做不到呢?

我也没怪php这个语言. 我只是想稍微提高破解的成本而已, 不想被人随意读懂,并修改代码中的用户数限制.

如果你没耐心和我讲,也没关系,或许我真的很春虫虫. 当然,也要谢谢你的热情帮忙.

我还想和其他朋友继续讨论用php来开发商业软件的问题.
作者: 北京野狼    时间: 2005-11-30 17:58
也许我表达能力出了问题,那我再阐述一次。


开发语言本身做不到限制用户数,我说的任何话题都没指程序破解。

限制用户数必须在服务器上做限制,不是应用程序做的,你php写的程序如何能知道,现在
有多少人并发?

防火墙,或者apache能做到。
作者: zagorot    时间: 2005-11-30 18:04
原帖由 北京野狼 于 2005-11-30 17:58 发表
也许我表达能力出了问题,那我再阐述一次。


开发语言本身做不到限制用户数,我说的任何话题都没指程序破解。

限制用户数必须在服务器上做限制,不是应用程序做的,你php写的程序如何能知道,现在
有多少 ...


哈哈,有趣. 我觉得可以做到啊. 比如不考虑效率和其他因素,一个最笨的办法就是在数据库里面保存每一个登陆用户的信息,这样我当然可以知道并控制登陆用户的数量了啊.

我估计,我们可能脑袋里面想的不是同样一个问题. 双方的语言理解都有差异,所以讨论这么久,还是双方不认同.
作者: wobushiwo    时间: 2005-11-30 18:07
原帖由 北京野狼 于 2005-11-30 17:58 发表
也许我表达能力出了问题,那我再阐述一次。


开发语言本身做不到限制用户数,我说的任何话题都没指程序破解。

限制用户数必须在服务器上做限制,不是应用程序做的,你php写的程序如何能知道,现在
有多少 ...


因为限制用户数, 在我看来, 无非是 限制整个系统的用户总数 或者 限制整个系统的在线用户数 , 这两个要求, 在编译型的语言编写的系统中,应该不难做到吧?

作者: wobushiwo    时间: 2005-11-30 18:11
开发语言本身做不到限制用户数,我说的任何话题都没指程序破解。

限制用户数必须在服务器上做限制,不是应用程序做的,你php写的程序如何能知道,现在
有多少人并发?


用任何语言都无法做到。
php做不到评什么编译语言能做。

作者: dualface    时间: 2005-11-30 20:00
这个和语言无关,但可以通过程序实现这样的功能。

假设你是一个内部的 OA 系统,那么每个用户登录以后就在数据库里面插入一条记录,标明该用户的登录时间和id。用户每进行一个操作,都更新一次这个记录(更新操作要放到一个单独的模块中)。当用户注销的时候,删除这个记录。(异常情况稍后再说)
如果另一个用户尝试使用相同的用户名登录时,如果在线记录已经存在,就不允许登录。

通过这种机制,可以有几种办法限制用户数:

1、并发登录数。处理登录时,统计一下在线记录有多少,超过上限就禁止登录。
2、总用户数。由于每个用户只能在一个地方登录,所以可以配置用户管理模块,限制用户总数。


下面说说异常情况:用户断线或者未注销的情况下关闭了浏览器窗口,怎么办?
这种情况很常见,但具体情况又分两种。假设用户断线仅仅几分钟,那么 SESSION 中保存的用户数据肯定没有失效,用户继续操作就行了。完全没有影响。

如果用户关闭了窗口或者断线时间太长,导致 SESSION 失效,那么用户的在线记录就变成多余的了。这种记录只能在更新用户在线记录模块中删除在线超时的记录。至于删除时机,可以是在更新在线记录时,或者处理登录时。

例如用户 18:00:00 登录,用了5分钟,不小心关闭了窗口。这时在线记录的时间就是 18:05:00。当下一次批量删除超时在线记录时,如果发现某条在线记录时间超过了 5 分钟,则自动删除该记录。这样用户就能再次登录了。至于这个超时长度设置多少合适,就根据应用来定了。但短一点好。

OK,批量删除解决了第一种异常情况,但又带来了另一个问题:如果用户在发表文章,打字的时间超过了超时长度,那么用户的在线记录就会被删除。用户岂不是必须再次登录?

完全不会。首先,用户登录后,SESSION 中就保存了用户的登录信息(而SESSION的失效时间可以设置得长一点)。当用户进行任何操作时,应用程序是判断 SESSION 中的数据是否有效。如果有效,就更新在线记录,并处理用户请求的操作。这样即便用户的在线记录因为超时被删除了,也不会导致用户被强行注销。



这个方案是我看到lz的帖子后根据论坛在线用户统计想出来的,肯定有不完善的地方,希望大家指正补充。
作者: 枫影    时间: 2005-11-30 21:51
楼上朋友想法和我一致
看看很多Php论坛就知道了,翻翻限制用户数这段代码就差不多了
作者: zagorot    时间: 2005-12-01 09:12
原帖由 dualface 于 2005-11-30 20:00 发表
这个和语言无关,但可以通过程序实现这样的功能。

假设你是一个内部的 OA 系统,那么每个用户登录以后就在数据库里面插入一条记录,标明该用户的登录时间和id。用户每进行一个操作,都更新一次这个记录(更新操 ...


顶,非常感谢!
作者: 北京野狼    时间: 2005-12-01 09:19
原帖由 zagorot 于 2005-11-30 18:04 发表


哈哈,有趣. 我觉得可以做到啊. 比如不考虑效率和其他因素,一个最笨的办法就是在数据库里面保存每一个登陆用户的信息,这样我当然可以知道并控制登陆用户的数量了啊.

我估计,我们可能脑袋里面想的不是同样一 ...


我也在想,我现在居然耐心这么好,成熟了。

用数据库保存每一个登陆用户的信息,这方法和开发语言有什么关系。

而且你说的是限制并发用户数,并发用户并不是在线用户。

也许你根本不明白并发用户和在线用户的区别。
作者: 北京野狼    时间: 2005-12-01 09:28
原帖由 dualface 于 2005-11-30 20:00 发表
这个和语言无关,但可以通过程序实现这样的功能。

假设你是一个内部的 OA 系统,那么每个用户登录以后就在数据库里面插入一条记录,标明该用户的登录时间和id。用户每进行一个操作,都更新一次这个记录(更新操 ...


不满足需求的地方

1。要求是限制并发用户数,不是在线用户。
2。没法加密直接就被破解。

3。用户关闭窗口或者断线你是和用户在窗口不点击一样处理吗?

4。
  1. 用户登录后,SESSION 中就保存了用户的登录信息(而SESSION的失效时间可以设置得长一点)。当用户进行任何操作时,应用程序是判断 SESSION 中的数据是否有效。如果有效,就更新在线记录,并处理用户请求的操作。这样即便用户的在线记录因为超时被删除了,也不会导致用户被强行注销。
复制代码


这多少有的和你说单一接口的优点一样,完全是想象出来的。php如何能判断 SESSION 中的数据有效?
后台根本无法区分关闭窗口和用户超时的区别
作者: dualface    时间: 2005-12-01 09:54
不满足需求的地方
1。要求是限制并发用户数,不是在线用户。


第一,每个用户账号同一时间只能在一个地方登录,然后再限制同时登录人数,自然就限制了并发用户数。

2。没法加密直接就被破解。


我这个是实现的思路,要达到好的效果当然要加密了。

3。用户关闭窗口或者断线你是和用户在窗口不点击一样处理吗?


我前面说了,SESSION 有失效时间、用户的在线记录也有失效时间。

SESSSION 的失效时间可以设置为 45 分钟或者 1 小时。这样即使用户很多在打字输入内容,也不会被强制注销登录。

而用户的在线记录失效时间就可以设置得很短,例如 5 分钟。这样用户即便不小心关闭了窗口,最多等 5 分钟就能再次登录了。

用户登录后,SESSION 中就保存了用户的登录信息(而SESSION的失效时间可以设置得长一点)。当用户进行任何操作时,应用程序是判断 SESSION 中的数据是否有效。如果有效,就更新在线记录,并处理用户请求的操作。这样即便用户的在线记录因为超时被删除了,也不会导致用户被强行注销。

这多少有的和你说单一接口的优点一样,完全是想象出来的。php如何能判断 SESSION 中的数据有效?
后台根本无法区分关闭窗口和用户超时的区别


你到底用没用过 php 的 session 啊?
作者: dualface    时间: 2005-12-01 10:01
原帖由 北京野狼 于 2005-11-23 14:03 发表
连接的并发和php没有任何关系,
和Zend更没有任何联系
session控制的也只是所谓的在线用户



如果 lz 要求的限制同时访问网站的用户数,那么我的方案稍加修改即可。


首先,任何一个用户访问网站,都会获得一个 session_id。
然后替换掉 php 默认的 session 管理,改为将 session 信息保存到数据库中。

这样就能很容易的统计 session 记录总数,从而限制并发访问数。

这个方案有个特点(在lz的需求里面不一定是缺点):

如果每个用户只是上来看看文章,就关闭窗口了,那么就要把 session 失效时间设置得很短。但这样一来,如果用户看文章花多了时间,他的 session 就会失效。如果这时正好另外进来几个用户,达到了并发访问上限,那么这个用户看其他文章就会被拒绝。

既然本来的要求就是要限制并发访问,超过访问上限是因为用户购买的版本太低,那么无法访问也是理所当然的。
作者: 北京野狼    时间: 2005-12-01 10:01
原帖由 dualface 于 2005-12-1 09:54 发表


第一,每个用户账号同一时间只能在一个地方登录,然后再限制同时登录人数,自然就限制了并发用户数。


这不是真正的并发,而且LZ所说的用户数,未必就是登陆用户。LZ没有用户账号只能登陆一次的要求。
而且你后面的方案根本控制不了是否一次登陆。
并发只能在防火墙和web服务器上限制。

我前面说了,SESSION 有失效时间、用户的在线记录也有失效时间。

SESSSION 的失效时间可以设置为 45 分钟或者 1 小时。这样即使用户很多在打字输入内容,也不会被强制注销登录。

而用户的在线记录失效时间就可以设置得很短,例如 5 分钟。这样用户即便不小心关闭了窗口,最多等 5 分钟就能再次登录了。


你到底是如何区分出来关闭窗口和用户操作超时。  请说清楚。
你是如何知道用户的在线记录的。                请说清楚。


我偶尔用过SESSION

[ 本帖最后由 北京野狼 于 2005-12-1 10:05 编辑 ]
作者: dualface    时间: 2005-12-01 10:13
原帖由 北京野狼 于 2005-12-1 10:01 发表

这不是真正的并发,而且LZ所说的用户数,未必就是登陆用户。LZ没有用户账号只能登陆一次的要求。
而且你后面的方案根本控制不了是否一次登陆。
并发只能在防火墙和web服务器上限制。

你到底是如何区 ...



我后面补充了的,你没看到。
作者: 北京野狼    时间: 2005-12-01 10:18
原帖由 dualface 于 2005-12-1 10:13 发表



我后面补充了的,你没看到。


看来您除了想象力惊人以为,至少理解力 和LZ一样,需要几十遍的重复。那我直接问清楚,

服务器是如何知道用户关闭浏览器,断网的?

后台删除session的程序是如何区分什么session是用户关闭浏览器的可以删除,
什么session是用户超时的不能删除

作者: zagorot    时间: 2005-12-01 10:39
原帖由 北京野狼 于 2005-12-1 09:19 发表
用数据库保存每一个登陆用户的信息,这方法和开发语言有什么关系。


唉,是啊. 这就是解决方法啊,只是用了php/perl...这之类的语言来写的话,代码很容易被读懂,可以被修改掉这些限制的地方.

我一直就是说,我们讨论的不是一个话题. 这一直要怪我发贴的时候没说清楚.

而我要求的就是2个问题: 1是如何限制系统用户数 2是如何防止更轻松的被"破解"这些限制

我当然知道并发用户数和在线用户的严格区别.只是可能没考虑清楚,就发贴了. 我想控制在线用户数或者控制这个系统的注册用户数就应该可以满足我们老板的需求了,并不需用到严格意义上的并发用户数.

北京野狼 ,不好意思,浪费了你这么多口水.
作者: 北京野狼    时间: 2005-12-01 10:42
原帖由 zagorot 于 2005-12-1 10:39 发表


唉,是啊. 这就是解决方法啊,只是用了php/perl...这之类的语言来写的话,代码很容易被读懂,可以被修改掉这些限制的地方.

我一直就是说,我们讨论的不是一个话题. 这一直要怪我发贴的时候没说清楚.

而我要 ...


人家直接改你的数据库,还看什么代码啊。

我们谈的一直是一个话题,只是你拼命想通过语言来实现,无法相信我说的,

和开发语言毫无关系。

[ 本帖最后由 北京野狼 于 2005-12-1 10:50 编辑 ]
作者: zagorot    时间: 2005-12-01 10:59
原帖由 北京野狼 于 2005-12-1 10:42 发表


人家直接改你的数据库,还看什么代码啊。

我们谈的一直是一个话题,只是你拼命想通过语言来实现,无法相信我说的,

和开发语言毫无关系。



哈哈,写在数据库也只是一个方法啊. 绝对可以通过语言来实现.
作者: wobushiwo    时间: 2005-12-01 11:20
原帖由 北京野狼 于 2005-12-1 10:42 发表

人家直接改你的数据库,还看什么代码啊。


小狼,还记得你说过 凭什么编译语言就行吗?

请问我给你一个存放数据的dat 文件,你能告诉我里面存放着什么吗?

不过我先怀疑是否能得到列名先,但问题还不在这

你改数据库?我编译/加密语言,用户数量上限我一定放数据库吗?

你在数据库改吧,每次登陆我都统计一次数据库,是否超过上限....
作者: 北京野狼    时间: 2005-12-01 11:22
原帖由 zagorot 于 2005-12-1 10:59 发表



哈哈,写在数据库也只是一个方法啊. 绝对可以通过语言来实现.



等你实现了,我帮你申请诺贝尔
作者: wobushiwo    时间: 2005-12-01 11:25
你说的 "开发语言" 不能实现,但在apache或防火墙那又说有点可能

你所说的 "开发语言" 是不是有特指啊? apache不是 “开发语言” 开发的吗?

假如lz是整体运行环境的打包,修改apache(千万别以为还有明文的配置文件) ,加访问上限,你能怎么搞啊?

[ 本帖最后由 wobushiwo 于 2005-12-1 11:26 编辑 ]
作者: wobushiwo    时间: 2005-12-01 11:27
原帖由 北京野狼 于 2005-12-1 11:22 发表



等你实现了,我帮你申请诺贝尔


你先帮我申请吧
作者: 北京野狼    时间: 2005-12-01 11:29
原帖由 wobushiwo 于 2005-12-1 11:20 发表


小狼,还记得你说过 凭什么编译语言就行吗?

请问我给你一个存放数据的dat 文件,你能告诉我里面存放着什么吗?

  


我只是强调和语言没关系,尤其我指的是并发用户,不是在线用户。

并没有说编译语言就能实现。

无论是dat 文件,还是数据库你怎么知道用户在线还是不在线。

dat 文件无论是什么格式,都一样能被修改,破解qq协议,难道一定要



反编译qq.程序?

你后面的话,无法理解想说什么?
作者: 北京野狼    时间: 2005-12-01 11:30
原帖由 wobushiwo 于 2005-12-1 11:25 发表
你说的 "开发语言" 不能实现,但在apache或防火墙那又说有点可能

你所说的 "开发语言" 是不是有特指啊? apache不是 “开发语言” 开发的吗?

假如lz是整体运行环境的打包,修改apache( ...



都认些字再发言。
大家在这个帖子里说的开发语言是指B/S的web开发语言。
作者: 北京野狼    时间: 2005-12-01 11:31
原帖由 wobushiwo 于 2005-12-1 11:27 发表


你先帮我申请吧


你没资格
作者: zagorot    时间: 2005-12-01 11:41
原帖由 北京野狼 于 2005-12-1 11:22 发表



等你实现了,我帮你申请诺贝尔


犯得着这么说吗? 即便是"控制并发用户数"也一定可以通过开发语言实现!

没什么东西实现不了的.
只是能不能被人得到认可而已. 我想,无论我怎么实现,肯定都无法得到你的认可.所以你就永远都不会承认我实现了,对吧?

就象我在面试的时候,我无论说什么方案,考官都不满意,在考官自己的思维空间里面,就是觉得我说的都不可能.

[ 本帖最后由 zagorot 于 2005-12-1 11:47 编辑 ]
作者: wobushiwo    时间: 2005-12-01 11:41
大家在这个帖子里说的开发语言是指B/S的web开发语言。


首先你承认了我的推理,你说的是有特指

无论是dat 文件,还是数据库你怎么知道用户在线还是不在线

这点,你在系统用户的数量限制上已经没办法狡辩了,剩下的就是在线并发数量


精彩的部分要开始了
我只是强调和语言没关系,尤其我指的是并发用户,不是在线用户。

假如lz是整体运行环境的打包,修改apache(千万别以为还有明文的配置文件) ,加访问上限,你能怎么搞啊?

作者: 北京野狼    时间: 2005-12-01 11:45
原帖由 wobushiwo 于 2005-12-1 11:41 发表


假如lz是整体运行环境的打包,修改apache(千万别以为还有明文的配置文件) ,加访问上限,你能怎么搞啊?



不知道你是不是吃多了。
我们说的是web开发语言,和apache打包有什么关系?

你连操作系统和服务器一起打包,更实现起来容易。

[ 本帖最后由 北京野狼 于 2005-12-1 11:48 编辑 ]
作者: 北京野狼    时间: 2005-12-01 11:47
原帖由 zagorot 于 2005-12-1 11:41 发表


就象我在面试的时候,我无论说什么方案,考官都不满意,在考官自己的思维空间里面,就是觉得我说的都不可能. ...



这时候,你应该想想,为什么人家就觉得你不可能?
是不是你的方案都是云山雾罩的。
作者: zagorot    时间: 2005-12-01 11:50
原帖由 北京野狼 于 2005-12-1 11:47 发表



这时候,你应该想想,为什么人家就觉得你不可能?
是不是你的方案都是云山雾罩的。


我当然有自己反省过. 但是那些人自己从来都不反省自己.

虽然也许是我的方案是云山雾罩的,但也许那人自己思维空间狭隘.
作者: wobushiwo    时间: 2005-12-01 11:52
哦,不好意思,是我没说清楚.

老板的意思是限制并发用户数.  是不是只要限制session中的用户数量就可以了?  


我怕你不了解并发的意思

是要限制你们的系统,同时能登陆多少个人进行操作吗?

还是你们的系统里有,有公共部分(不需登陆),连一般人访问都需要限制

不过我看你说的 "分了3个档次,5个用户数,10个用户数,和20个用户数" 应该不是公共部分,应该是登陆操作的那种

这样的话,那更不复杂,看看dualface说的
作者: zagorot    时间: 2005-12-01 12:04
原帖由 wobushiwo 于 2005-12-1 11:52 发表


我怕你不了解并发的意思

是要限制你们的系统,同时能登陆多少个人进行操作吗?

还是你们的系统里有,有公共部分(不需登陆),连一般人访问都需要限制

不过我看你说的 "分了3个档次,5个用户数, ...


是的.这个怪我. 我没说清楚. 也浪费北京野狼很多口舌.

我想, 控制登录人数就够了. 不需要严格控制并发数. 而且没有公共部分,全部都需要登陆. 看了dualface说的,基本心里有个底了.

不过,现在唯一和北京野狼争论的地方就是, 开发语言,能不能实现这些功能(包括控制用户注册数,控制用户登陆数,控制用户并发数)?注意,我们不讨论"是否仅仅依靠开发语言实现".我们不玩文字游戏.

我就怕北京野狼又误会我的意思,以为我是说"仅仅依靠开发语言就能实现".
作者: wobushiwo    时间: 2005-12-01 12:19
这何尝不是理解分析能力的体现,娃哈哈....娃哈哈....娃哈哈....娃哈哈....

其实我连早饭还没吃,哈哈

操作系统倒不用,不过可以考虑

我们为了LZ把思想放广了一些只注重解决方案了,你后来又定义了一个 “WEB开发语言”,OK

那你得给出 “WEB开发语言” 的准确定义吧,就PHP,比如只能使用到哪些模块

它本身对这种处理应该说处理得不好或说不擅长!不是说不可能!当然要使用到相关的库(PHP解释器除了本身语法,大都是通过一些模块/功能库实现功能的,你知吧?)

假如有人有一开发了一个跟apache/IIS等 沟通的库,能得到现在的线程/进程数

然后php调用此模块,或直接使用php调用系统命令得到或怎么....

这算不算“WEB开发语言”的范畴?

想第二次定义你的 “开发语言” 吗?
作者: wobushiwo    时间: 2005-12-01 12:34
注意,我们不讨论"是否仅仅依靠开发语言实现".我们不玩文字游戏.


语言本身就是多方面挂钩的,更何况 "WEB开发语言"

所以注定了从一开始玩的就是文字游戏,LZ这点还没看破啊?
作者: wangyih    时间: 2005-12-01 13:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: wangyih    时间: 2005-12-01 13:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: wangyih    时间: 2005-12-01 14:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: dualface    时间: 2005-12-01 15:36
原帖由 北京野狼 于 2005-12-1 10:18 发表
看来您除了想象力惊人以为,至少理解力 和LZ一样,需要几十遍的重复。那我直接问清楚,

服务器是如何知道用户关闭浏览器,断网的?

后台删除session的程序是如何区分什么session是用户关闭浏览器的可以删除,
什么session是用户超时的不能删除


先前我说的不详细,可能大家没理解到,我详细说明一下思路。

首先,服务器肯定不可能知道用户是断网还是关闭浏览器什么。
但我根本不需要去判断这个。

假设 session 的失效时间是 30 分钟,那么服务器超过30分钟还没有收到浏览器发来的请求时,自然该 session 就作废了。session 作废以后,自然就算作用户已经被注销了。

OK,如果用户关闭了窗口,那么 session 是不是也要等 30 分钟才会失效呢?

答案是YES

====================================================================

“哦,那这就是大问题了!用户不小心关闭了窗口,必须等 30 分钟,session 失效以后才能再次登录。因为登录时会检查该用户是否已经登录过了。”

但实际情况呢?

实际情况是这样:当用户关闭浏览器窗口,然后再次打开一个新窗口访问服务器。服务器并不会使用先前的那个 session id 来标示这次回话,而是分配一个新的 session id。

如此就解决了用户关闭窗口后必须等 30 分钟才能登录的问题。

====================================================================

问题总是环环相扣,解决了登录问题,那很显然又会带来另一个问题:

假如系统上限是 30 个人,现在正好有 30 人在使用。突然其中一人不小心关闭了窗口,然后再次访问服务器,这个时候 session 数就变成了 31 (因为新开的窗口会分配新的 session id)。那这个用户很明显就会被拒绝登录。

虽然这个问题只有在访问人数接近或者达到上限时才会发生,但仍然可以稍加处理来缓解这个缺陷。

====================================================================

为了缓解这个缺陷,我在方案中引入了在线记录这个东西。

在线记录主要保存下面几项信息:用户的 user id,以及 session id 和 最后操作时间。

由于在线记录的失效时间很短,例如 1 分钟。只要用户超过一分钟没有进行操作,该记录就会被删除。


可这个在线记录拿来做什么用呢?
这个在线记录需要和 session,以及用户登录结合起来使用。

但为了结合使用,session 就不能采用 php 默认的保存机制,而是需要实现自定义的保存机制。

====================================================================

php 默认的 session 机制是按照 session id 来标示一个 session,现在我们在自定义的保存机制中,
附带保存一个 user id。

好了,现在我们有了 session、在线记录、用户信息数据库,我们的用户登录程序可以按照下面的方式工作:

1、检查用户名、密码、图形验证码
2、在 session 库(也就是我们自定义的保存 session 数据的数据库)中,搜索是否存在该 user id 的 session 数据。
    如果“有”,则进一步判断 在线记录中是否有该 user id 的数据
        如果“有”,说明用户已经登录了,并且在 1 分钟之内还在操作系统。
            那么这次登录就可能是用户尝试从第二个地点使用同样的账号登录系统。
            或者是用户关闭窗口后,在 1 分钟之内重新登录。但不管是哪一种情况,
            系统的处理都是 拒绝登录
        如果“无”,则有两种情况:
            1、用户登录后超过了 1 分钟没有进行操作,
               然后其他人在第二个地点使用同样的账号进行登录;
            2、用户关闭了窗口,并且过了 1 分钟后再次登录。
            那么应该如何处理这种情况呢?
            这可以采用两种方式:
                a、直接允许登录,然后删除先前的 session。直接效果就是
                   先登录的用户被后登录的挤下了系统。就像同一个QQ号在
                   不同地方登录的效果一样。
                b、可以结合其他手段进一步检测用户情况。例如用户登录成功
                   后就设置一个 cookie。此时就能判断该 cookie 是否存在。
                   如果存在,说明是用户发生意外后重新登录,如果不存在,
                   则有可能是多个地点用同一账号登录。检测过后再决定是否
                   拒绝登录。
    如果“无”,则简单统计一下现有 session 总数就能确定是否允许登录了。

3、允许登录后,还有许多工作要做,包括:
   a、保存 session 信息
   b、生成在线记录

这就是登录处理过程,复杂的地方主要就在“数据库中已经存在该 user id 的 session”时决定是否允许登录。

====================================================================

注销用户就比较简单了,直接删除 session 和 在线记录 即可。

====================================================================

那么如何确保及时更新在线记录和 session 记录呢?

对于 session 记录,只要在 php 中注册了自定义的 session 处理函数,php 会在适当的实际自动调用你注册的 session 清理函数。

而对于在线记录,就要复杂多了。最好是写到一个公用文件中,然后在每一个操作文件中都 include 这个文件。
(这里用单一入口就比较方便)

====================================================================

整个方案肯定有很多漏洞,而且还要辅助其他手段才能达到良好的效果,例如:

1、代码肯定要加密,否则一切都是白搭;
2、session 数据库如果可以,自己做成自定义格式的文本数据库(应付几十个在线用户根本不是问题),甚至是共享内存。就算不能做成自定义格式,也要将关键信息加密存储到 SQL 数据库中。
3、在线记录和 session 一样,能自定义格式就自定义格式,否则就加密存储。
4、关键部分的代码必须写在一个文件里面加密,如果分离成多个文件,一是被破解的几率大,二是有可能被人分析出其中的工作原理,另外写一个来代替你加密后的文件。

目前我想到的漏洞主要是在极端情况(也就是当前在线用户数接近或者达到上限时),登录判断可能会判断失误。
但这个我想不是太大的问题,简单的增加一点用户上限数就行了。

例如卖给用户的是 30 用户版,那我系统实际上可以容纳 33 人在线,就大大降低出问题的几率了。

====================================================================

最后,我想说的。光靠编程语言,脱离了运行环境,要实现这种在线用户数量限制是很麻烦、效果可能也不够完美。

但是选择什么方案来解决问题,不能只考虑技术,还要考虑环境因素。现在 LZ 的软件明显是在一个不受控环境中执行,那在这种环境下争论是不是能够单纯用编程语言解决在线人数上限问题,根本没意义。

重要是找到一个可以接受的解决方案来达到目的!
作者: dualface    时间: 2005-12-01 15:37
原帖由 wangyih 于 2005-12-1 13:23 发表



dualface的方法实践起来有相当的不足。
几乎不可实现,最好另选方案。



是的,我先前的方案很不完善,我重新写了一下。

虽然大体没变,但细节上考虑多了些。



不过我觉得如果你能够具体指出哪些地方不足就更好了。
作者: 北京野狼    时间: 2005-12-01 16:04
原帖由 dualface 于 2005-12-1 15:36 发表


先前我说的不详细,可能大家没理解到,我详细说明一下思路。

首先,服务器肯定不可能知道用户是断网还是关闭浏览器什么。
但我根本不需要去判断这个。

假设 session 的失效时间是 30 分 ...



您的钻研精神确实很令人钦佩,比无聊的人强得多。

老实说,没时间全看完你的新方案。和早上那个方案是根本性的改变,

这次有些可行性。但是实现起来估计比LZ的系统本身都麻烦。

其实一直都没有真正有效的控制在线用户的方案,尤其LZ自己不能控制环境,

根本就没法实现。
作者: 夜猫子    时间: 2005-12-01 16:05
dualface说得和我想的差不多,就是在session上做文章,关键是精确的寻找到哪些session记录是有效的,并且及时的清除无效的session记录
session的清理是根据session.gc_divisor设置调用session清理函数的几率,所以这个值应该设置得尽量小,甚至可以考虑设置为1
session的生存时间也要设置的短点,否则容易被僵尸把位置长期霸占
session记录可以考虑放到sqlite或者bdb这种文件型数据库内

>例如卖给用户的是 30 用户版,那我系统实际上可以容纳 33 人在线,就大大降低出问题的几率了
如dualface所说的,实际可以使用的用户数应该稍微高一点,因为session这东西终归感觉无法精确的控制,稍微调高一点点,出问题的几率会低一些

纸上谈兵终归是纸上谈兵,楼主如果觉得这个方向可行的话,不妨自己写来看看,反正也不复杂
作者: 夜猫子    时间: 2005-12-01 16:19
原帖由 北京野狼 于 2005-12-1 16:04 发表



您的钻研精神确实很令人钦佩,比无聊的人强得多。

老实说,没时间全看完你的新方案。和早上那个方案是根本性的改变,

这次有些可行性。但是实现起来估计比LZ的系统本身都麻烦。

其实一直都没有真正 ...


我觉得不复杂啊,其实就是做两个东西
一个是自定义session的存储,就是session_set_save_handler(),这个东西稍微有点php开发经验的人都可以写
第二个是检查有效的session个数,按照session生存时间排一下序,找出超标的那几个session id,如果当前的用户的session id正好在其中的话,输出错误信息,我想这个也不会太难,这个功能可以封装成一个函数

至于在程序的什么地方调用这个函数,要看程序的具体结构而言了,和这个函数本身没有太大关系

当然要做到精确的控制在线用户恐怕是有点难的,所以刚才也在建议把实际的用户数稍微设高一点
总之,希望可以达到80%的效果就不错了,毕竟http是无状态协议,从根基上就有问题。

从使用者的角度来说,假定进入系统进行某些操作,需要5分钟的时间,但是只要我们能够把误差时间控制在5分钟之内,目的就达到了,就算没有100%的精确也无所谓。
这个要看楼主的系统具体是什么功能了,从控制使用人数的角度来推算,很可能是OA一类需要长时间使用的系统。

[ 本帖最后由 夜猫子 于 2005-12-1 16:20 编辑 ]
作者: geel    时间: 2005-12-01 16:34
哈哈,这么老的帖子今天又看到了。
作者: zagorot    时间: 2005-12-01 16:42
啊,大家给了这么多建议啊. 非常感谢!

确实,我的软件在安装在客户的公司以后,将处于不受控制的环境下,一切状态均未知.

我把手头的一点事情忙完,会尽快尝试大家的建议方案.
作者: 夜猫子    时间: 2005-12-01 17:06
我其实是看dualface老大这么来劲,也凑凑热闹的
由于楼主的情况是环境不受控,这个方法可能还有问题,总之可以试试看,关键是要对session的具体机制非常熟悉
作者: wobushiwo    时间: 2005-12-01 17:21
现在的上网/一些单点登陆,要是意外断线,登陆会拒绝的,等待超时再上,无状态协议完全可以满足LZ的要求

LZ感谢我吧,是我发现/分析/猜测到了你真要发问的问题

小狼,服吗?我一向以理服人,娃哈哈....

让我们 review 一下,有趣的地方

加密代码对限制用户数没有任何作用

1、代码肯定要加密,否则一切都是白搭;

并没有说编译语言就能实现。


用什么语言开发能限制用户数?

家在这个帖子里说的开发语言是指B/S的web开发语言。


这次有些可行性


看来您除了想象力惊人以为,至少理解力 和LZ一样,需要几十遍的重复。那我直接问清楚,

服务器是如何知道用户关闭浏览器,断网的?

后台删除session的程序是如何区分什么session是用户关闭浏览器的可以删除,
什么session是用户超时的不能删除


dat 文件无论是什么格式,都一样能被修改,破解qq协议,难道一定要

我说的任何话题都没指程序破解。



对比一下,可以看出好多有趣的事,哈哈

什么申请诺贝尔,什么吃太饱,这种个人情绪,无病呻吟,不利于学习

我也在想,我现在居然耐心这么好,成熟了。


这都算耐心好,娃哈哈


讨论时好像不是很耐烦,这样也不利学习,该多向我学习,多思考分析,比如

正当我们讨论得热火朝天,你快吐血时,我回到起点,质问LZ,发现他的发问的表达是有问题的

当然就算不发现,在“WEB开发语言”的问题上阐述了并发限制,更别说 系统用户限制上的可行性,分析得相当精彩,虽然有点勉强


但引用 mop 里常用的一句话:没时间你来装什么B啊?

这里真不是要骂人哦,我只是觉得太好笑了~~

---结束---
作者: wangyih    时间: 2005-12-01 17:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: wobushiwo    时间: 2005-12-01 17:57
原帖由 wangyih 于 2005-12-1 17:32 发表



你这种人就是论坛里面,那种比较令人厌恶的人。

从头到尾,没感觉老狼说的有什么问题。

反到是你一直牵强附会挑衅,估计又是一个老狼惹着的马甲。



呵呵,好好,其实我这个人脾气不坏,喜欢搞笑...

大家也是工作无聊,找个话题侃侃不挺好的吗?

我觉得学文化/学技术 要有一种“回归”的精神

一句老话,到现在依然实用,三人行必我师........
作者: 北京野狼    时间: 2005-12-02 09:13
原帖由 wangyih 于 2005-12-1 17:32 发表



你这种人就是论坛里面,那种比较令人厌恶的人。

从头到尾,没感觉老狼说的有什么问题。

反到是你一直牵强附会挑衅,估计又是一个老狼惹着的马甲。


感谢提醒,早注意到了。
习惯了就不必理会,这样的人常常出现的。
就象上次讨论万人在线,突然出来clampox 那个疯狗
虽然吵架也很有趣,但是如果每天精力都耗在这上面太无聊。
作者: 北京野狼    时间: 2005-12-02 09:19
原帖由 夜猫子 于 2005-12-1 16:19 发表


我觉得不复杂啊,其实就是做两个东西
一个是自定义session的存储,就是session_set_save_handler(),这个东西稍微有点php开发经验的人都可以写
第二个是检查有效的session个数,按照session生存时间排一下序 ...


其实dualface的做法直接简化成Discuz,的session管理方法
使用数据库,记得是cdb_sessions表。什么在线记录,文本管理都不必了。

但是数据库很难加密,除非表里面存储的都是密文。控制不了环境什么都白费。

BTW:使用文本存储大量读写的不适合。
作者: tonera    时间: 2005-12-02 09:51
好热的贴。

dualface的方案一开始就是可行的。后来的大量补充只是对前面叙述的观点进行更多的实现细节描述,我反倒感觉是几位没有仔细看看那个方案,没有仔细想想如何实现,实现起来也并不复杂。
作者: 北京野狼    时间: 2005-12-02 09:56
原帖由 tonera 于 2005-12-2 09:51 发表
好热的贴。

dualface的方案一开始就是可行的。后来的大量补充只是对前面叙述的观点进行更多的实现细节描述,我反倒感觉是几位没有仔细看看那个方案,没有仔细想想如何实现,实现起来也并不复杂。


可能是你没有仔细看他的第一个方案,尤其异常处理那部分。和后来的方案有本质的区别。

而且LZ的很多问题也是在dualface的方案之后才明确出来的。

这个问题其实根本不必再讨论了,LZ的环境局限了

[ 本帖最后由 北京野狼 于 2005-12-2 10:08 编辑 ]
作者: wobushiwo    时间: 2005-12-02 12:28
从一开始,便被LZ误导,只因有的人理解能力有限

dualface 哪一个方案,不管可行不可行

有一点:他理解了LZ的意思,找出了正确的方向,知道是LZ说的不是所有人访问的并发(当然,跟偶发现的一样)

也许你知道方案怎么做,可问题是连自己被误导了也不知道,这是根本问题,正因为摆着一幅高姿态,想问题时

不会常出现质疑,才会想当然,看论坛的牛人就不会了,难道是牛人都这样?还是这样的才是牛人?值得我们深



[ 本帖最后由 wobushiwo 于 2005-12-2 12:50 编辑 ]
作者: UIRL    时间: 2005-12-02 12:36
大家是来讨论的,每个人的性格,发言方式都不同。
不要揪着人家不放。

和和气气多好。
作者: wobushiwo    时间: 2005-12-02 12:53
其实这世界上疯狗很多,像李敖,李叔是偶 DI 偶像

偶不介意任何的辱骂,呵呵,但偶求真,是对就赞,是错就批,嘿嘿...
作者: wangyih    时间: 2005-12-02 12:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: wobushiwo    时间: 2005-12-02 13:07

  1. 你不是一样没理解,也在提倡加密代码,加密代码什么都实现不了。
复制代码


你可能没看清楚 dualface 说的,而且也没看清楚  你的老狼  说的

而且说我也没理解?你知道重要的转折是谁提出质疑的吗?

没关系,我摘出简要了,就是帮助你们这种人的,不用8页看完,呵呵

帮过很多人我想跟对求真的态度没什么关系吧?

大家看到了,wangyih 因为偏袒  他的老狼  ,根本不在意自己看到的事实或自己没看清楚就来帮

他的老狼  了,娃哈哈....
作者: wangyih    时间: 2005-12-02 13:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: showsa    时间: 2005-12-02 14:38
  wangyih 有心了

有些人不必理会的
作者: zagorot    时间: 2005-12-02 15:49
一天没来,不想帖子这么火.

各位大佬,我知道你们的出发点都是好的,都是为了解决这个实际问题.  

所以希望大家只讨论问题,不讨论人品和其他,小弟在这里先行谢过.
作者: dualface    时间: 2005-12-02 19:39
扯远了扯远了。。。。。。。。。
作者: yarco2    时间: 2005-12-03 02:20
乱78糟. 是某些人自作聪明吧?
我一看LZ的意思差不多就明白了.
php用来干嘛的? 要深入到并发限制用户数?
有没搞错.
一看就知道LZ是想做某个OA, 在小公司5个人, 10个人或者几十个人同时能用的.
青蛙大侠的方法显然可行的.
那位有漂亮脸蛋的兄弟的加密想法也很好.
要是真有那样的人会去想着破解的话, 我估计他自己开发用那么长时间也可以开发出来了.
虚得要死.
作者: qingmedia    时间: 2005-12-03 11:08
其实,很多事情,退让一步,就海阔天空,做人如此,做其它什么事情也如此。

比如现在的mp3/mp4等等压缩技术,音质画质稍稍损失一点,容量就大幅减小;
再比如,你希望买一只纯度99.99%的金戒指,估计不难找到,要是你想买纯度99.999%的金戒指,估计大家出不起这个价钱。如果你们老板想买纯度100%的金戒指,除非他是上帝。

很多时候,我们愿意损失这万分之一的性能,就能达到大幅度的性能改善。
作者: geel    时间: 2005-12-03 11:41
非要给人家限制的死一点的话,就自己做一个apache module,自己做一个php extension,发布程序的时候连同这两个一起发布。主要功能直接调用模块。不过没有啥意义哈
作者: wondershow    时间: 2005-12-03 15:14
眼花缭乱阿,有争论就好,可以让我们多明白一些道理。继续关注中
作者: mailsyf    时间: 2005-12-04 11:40
我觉得作为一个b/s系统,楼主可能想解决的是一个用户使用数的限制问题,就是这套系统只允许注册n个使用者,这个与同时在线用户或所谓并发用户都毫无关系!!
   前一阶段我们也遇到过这样的问题,程序可以实现,但是别有用心的人还是能轻松破解的..不好办!
作者: suntoltti    时间: 2005-12-23 17:11
只想说一句,lz没有表达清楚自己的意图
对于本质上限制并发数,必须从防火墙作限制,大家session的方案,实际上不是对并发的控制,再怎么限制session,阻止不了client对apache发起http请求,只要阻止不了http请求,你再怎么执行session方案,都是无用的。
根本上限制并发数,可以参看iptables的match limit部分,这样可以做一些限制。

[ 本帖最后由 suntoltti 于 2005-12-23 17:17 编辑 ]
作者: 让你飞    时间: 2005-12-23 18:39
标题: 回复 32楼 dualface 的帖子
问题是你怎么把上限数定死,不让客户能改到
作者: HonestQiao    时间: 2005-12-23 21:33
这个自己做一个扩展模块是最最最合适的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2