想用isapi做一个类似本论坛的留言版(300分)

T

Town

Unregistered / Unconfirmed
GUEST, unregistred user!
我的设想是这样的:

1.界面: 和本论坛提出问题时的界面相似:
(1)有两到三个Radio Button(填入如性别等互斥选项);
(2) 一个check-box(比如加签名,和不加签名);
(3)2个Edit框,一个填标题,一个填email地址
(4)一个表单填写留言
(5)一个提交按钮和一个重写按钮
2.功能:
(1)访问者按提交按钮后,动态返回给他一个和本论坛
相似的页面,他的留言加在最顶端或者最底端。
(2)能够把访问者的留言,RadioButton & Check Box里面的
选项、访问者的ip地址记录到数据库中(最好是dbf文件中,
因为我可能需要把数据库挪到别的机器上处理)
(3)最好能够实现类似论坛的关键字检索功能。

哪位大虾帮忙写一个?唐大侠有空了吗? :)
初学isapi,看了delphi的demo中isapi的例子,没有写入数据库和
检索的操作,手足无措。虽任务紧急,但又不想简单拿别人现成的dll
了事,只想多学习学习,所以显得胃口大了些,请各位多多包含,多
多指点 :)
 
问题太大, 得一步一步的来.

先做一个CGI, 调试通过后在转换成ISAPI, 因为ISAPI太难调试了.
1. 通过PWS建立一个路径 如: /MyBBS, 指向一个具体路径 如:
c:/InetPub/wwwroot/DelphiBBS, 并且将Access权限的Read和Script设置成
True.
2. 用DBE Administrator建立一个新的Alias指向上个目录
3. 用Database Desktop建立两个数据文件, 一个用户信息, 一个是讨论信息(可以
下载yysun的Offline里面的Access库的结构
5. 用Delphi 4.0创建一个WebCGIApplication
4. 为PageProducer增加Page属性:
a. 把Source路径下的DBWeb.pas复制到你这个project的路径下
b. 打开DBWeb.pas, 并加到你的project中
c. 在TDSTableProducer下面加上:
private
...
FPaged: Boolean;
FPageCurrent: Integer;
function GetPageCount: integer;
procedure SetPageCurrent(value: integer);
...
published
property Paged: boolean read FPaged write FPaged;
property PageCount: integer read GetPageCount;
property PageCurrent: integer read FPageCurrent write
SetPageCurrent;
end;
d. 把继承它的类都加上paged, pageCount, PageCurrent属性
e. 给HtmlTable函数加上一个Page参数
function HtmlTable(DataSet: TDataSet; DataSetHandler:
TDSTableProducer; MaxRows: Integer; Page: integer): string;
f. 写出相关的代码
6. 加上必要的Action和PageProducer
7. 建立Cookie读写以及检验logon机制
8. 写出相应的Action
9. 调试
10.转换成ISAPI

 
会长:你说的虽然没错,但人家太离谱了,要写一个:),看到我的问题了?有吗?
 
写一个?
现在的人越来越懒了。我还以为我是最懒的呢,没想到
还有人比我懒
 
To Bluebird & CJ:
呵呵,我说两位前辈,不要连讽刺带挖苦吗.我可是对唐大侠说的,
这是人家答应的,您不愿共享您的东西,俺也没强求您,对不对?对于新手
来说,还有什么比代码更重要的吗?当您不知道从何入手的时候,您不
希望看到代码吗?当您花了三天三夜时间还是理不出头绪来,您最盼望
的是什么?需要的是别人帮你一把,绝不是讽刺挖苦!
您要是真心想帮忙,就应该像huizhang大侠那样,提些有益的建议,
或者是伪代码,我定会感激不尽,何必说些
无关的话呢?不要把别人都看成是懒虫,谁都希望自己问的
问题一次就搞定,您不烦追着屁股问您同一个问题的人吗?
我给别人解答问题的时候,都是尽量写一遍的,并详细地附上各部分的解释,
免得别人一次又一次的问.而且,自己写一遍的过程也是一个重新整理、学习
的过程,绝不仅仅是机械的重复。您可以不喜欢这种风格,
但也不要随随便便就说别人的不是,有些大侠风度,好不好?
 
呦,这就生气了。呵呵。
 
呵呵,生气了?

我绝对不是讽刺老兄,只是对你有点看法而已。

我觉得,程序应该自己写,有问题问自己捉摸,不行,再别人(1)。
你出手就让别人帮忙写一个,这不是程序员的应该做的吧?

如果你写 CGI 一点头绪也没有,应当阅读有关资料,现在市场上的书
中,多数有 DELPHI 写 WEB 应用程序的内容,而且不少。

既然问了,又生气了,那么作为补偿,简单写点东西吧(0):

在DELPHI中,CGI/ISAPI 的写法没什么区别,可以用会长的方法,先
写 CGI,调试 OK 后转换 ISAPI,可以参照已答问题。

界面方面,实际上就是直接以 String、TStringList 甚至文件或者
的形式返回 HTML 代码,当然,其中可以加入标记(TAG)如果你的
HTML 比我烂(2),那么可以直接用 Dream Waver 或者 FrontPage
之类的东西做,然后 Copy/Paste

处理数据库也不复杂,可以根据用户返回的参数建立 SQL 语句(4)。

搜索实际上就是对数据库搜索,然后把结果转换为 HTML 返回而已。

DELPHI 中有几个 WEB APP 的 DEMO,可以看一下。

如果不喜欢 DELPHI 的 WEB APP 工作方式(它不错的)可以试试
CGI FREE/CGI EXPERT(3)。


注:
1、CJ 没做到。
2、我的意思是:CJ 的 HTML 很烂,你说我不会也没关系。
3、不要问我哪里有,忘记了。
4、让我写的复杂也写不了。
 
哇,你的胃口可是太大了,我最近真的没有时间(毕业设计,项目发行)
我这有一个很早,很早以前写的发给你,(你要的功能基本都有了)
你在改改.(我的程序里面没有判断ip,你从request.RemoteAddr里,就可以把
访问的ip读出来)

 
我们学校的email服务器不稳定,收到后给我个回信!
 
不好意思各位,昨天从早晨上街游行,到晚上才回来,双脚都是泡,爽腿
酸痛,嗓子沙哑,所以晚上没有来上网,没有看到各位的帖子,抱歉抱歉 !
CJ大虾,俺可不敢生气,以后还指望您帮忙解决问题呢,呵呵 :)其实也
没什么,只是希望各位能多多扶持新手 :)
我在问这个问题的时候,其实已经说了,不懂的地方主要在数据库的写入
和用www方式检索数据库,其他的方面我已经搞定了,但是为了能让各位清楚
我的问题,所以把全部的设想写了出来,结果反倒弄巧成拙,遭到了指责,我自
然心里很不舒服的说:(.
唐大虾,我这里收263的信现在很慢,估计得明天才能知道收到与否,先谢
过啦:)
 
呵呵?不敢?CJ更怕了
数据库没问题呀,只要获得用户的输入,就可以查询了,自己拼SELECT,不过注意
SESSION要AUTONAME的,不然会出问题。写入就那么写呀,有什么呢?
 
唐大虾:
终于收下来了,不过似乎有些问题,等我慢慢看来,有问题再问你吧 :)
 
多人接受答案了。
 
顶部