请教!(100分)

  • 主题发起人 主题发起人 datoncg
  • 开始时间 开始时间
D

datoncg

Unregistered / Unconfirmed
GUEST, unregistred user!
1、用DELPHI开发WEB数据库程序时,在应用程序服务器怎样控制
数据库用户的登录。会不会出现当有一个有效用户在使用该系统,而现
有一个非法用户可以不通过用户验证而使用该系统。因为有效用户已将
Remote Data Module中的数据集击活。(目前我是这样认为)。
2、在DELPHI中有没有转换16进制的函数如HEX等。
3、不知对程序站点的控制是怎样实现的。(除了用狗来处理)

 
2.用Format函数:Format('%x',[n]);
你可以参考Delphi帮助文档。
 
问题1:
你把AppServer写成多实例的不就行了~~
运行时每当Client请求连接时,
AppServer将为RemoteDataModule创建一个新的实例
所以这种方式下,
注意不要将RemoteDataModule本身的域作为公用变量来使用
而应该定义全局变量
问题2:
他们说得对,Format和IntToHex都可以
问题3:
如果你说的仍然是AppServer,
可以在AppSever中,RemoteDataModule的OnCreate中给计数器加1
OnDestroy中减1,这就可以实现最简单的连接数控制了,
另外还可以在Client程序中取客户机的IP、机器名,
然后在请求登陆时传给AppServer,然后AppServer判断是否允许登陆
原理很简单,看你灵活运用了~~
 
蚯蚓:
对于第一个问题,举个事例,怎么样?给你80分,不够再说!
 
举例:
Step1:
File->New Application,创建一个新的Application
Step2:
File->New 出现New Items对话框,
选择Multi-tier页中的Remote Data Module,出现Remote Data Module Wizard
在Instancing中选择Multiple Instance
在CoClassName中给组件对象(Co)指定类名
这样创建出来的Remote Data Module就是多实例的,
即每收到一个Client的连接请求,AppServer就创建一个RemoteDataModule实例,
当Client断开连接,AppServer释放对应的实例
仔细看一下Remote Data Module的源代码,在
initialization部分可以看到:
<font color=red>
TComponentFactory.Create(ComServer, Txxxx,
Class_xxxx, <B>ciMultiInstance</B>, tmApartment);
</font>
多实例的情况下,所有的Client都是相互独立的,
因此不存在打开数据库后被其他用户访问的问题
当然,也可以在自己的程序中进一步加强安全管理,
比如在TClientDataSet.DataRequest方法中传入用户名、口令
AppServer检查通过后再返回数据等等
 
多人接受答案了。
 
蚯蚓:
你能否提供点关于WEB方面编程的资料吗,我在这方面是初次接触。
要做出本论坛这样的东东,需要那方面的东东!
 
>>要做出本论坛这样的东东
本论坛是用ASP做的,
如果用Delphi来写呢,可以用ISAPI/NSAPI
其实也很简单,
Delphi自带的Demo有:
C:/Program Files/Borland/Delphi5/Demos/Webserv下的两个工程
iservcgi.dpr是CGI模式的
iserver.dpr是ISAPI/NSAPI模式的
除了project文件不同外,其他都一样
看完这个例子差不多就懂了~~
有问题到时候再问吧
 
后退
顶部