unit MainWebModuleUnit;interfaceuses
  Windows, SysUtils, Classes, HTTPApp, IniFiles ;const
  PW_SUCCEED=0;
  PW_ERROR=1;
  PW_NOFILE=2;
  PW_NOUSER=3;type
  TMainWebModule = class(TWebModule)
    procedure MainWebModuleDefaultWebActionItemAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  MainWebModule: TMainWebModule;implementation{$R *.dfm}
function GetUserFile:String;
begin
  GetUserFile:='C:\Program Files\Serv-U\ServUDaemon.ini';
end;function CompareUser(AUser,AUserStr:String):Boolean;
var
  ATemp,BTemp:String;
begin
  ATemp:=Copy(AUserStr,6,Length(AUserStr)-6);
  BTemp:=Copy(ATemp,1,Pos('|',ATemp)-1);
  if AUser=BTemp then
    CompareUser:=True
  else
    CompareUser:=False;
end;function ChangPassword(User, OldPassword, NewPassword:String):Integer;
var
  IniChangePassword:TIniFile;
  SectionsList:TStringList;
  i:Integer;
  FindUser:Boolean;
begin
  FindUser:=False;
  if FileExists(GetUserFile) then
  begin
    SectionsList:=TStringList.Create;
    IniChangePassword:=TIniFile.Create(GetUserFile);
    IniChangePassword.ReadSections(SectionsList);
    for i:=0 to SectionsList.Count-1 do
      if CompareUser(User,SectionsList.Strings[i]) then
      begin
        FindUser:=True;
        if IniChangePassword.ReadString(SectionsList.Strings[i],'Password','')=OldPassword then
        begin
          IniChangePassword.WriteString(SectionsList.Strings[i],'Password',NewPassword);
          ChangPassword:=PW_SUCCEED;
        end
        else
          ChangPassword:=PW_ERROR;
      end;
    if not FindUser then
          ChangPassword:=PW_NOUSER;
    IniChangePassword.Free;
    SectionsList.Free;
  end
  else
    ChangPassword:=PW_NOFILE;
end;procedure TMainWebModule.MainWebModuleDefaultWebActionItemAction(
  Sender: TObject; Request: TWebRequest; Response: TWebResponse;
  var Handled: Boolean);
var
  ChangePasswordReturn:Integer;
begin
  if Request.GetFieldByName('User')='' then
    Response.Content:='请输入用户名!'
  else if Request.GetFieldByName('OldPassword')='' then
    Response.Content:='请输入原密码!'
  else if Request.GetFieldByName('NewPassword')='' then
    Response.Content:='请输入新密码!'
  else
  begin
    ChangePasswordReturn:=ChangPassword(Request.GetFieldByName('User'),Request.GetFieldByName('OldPassword'),Request.GetFieldByName('NewPassword'));
    Case ChangePasswordReturn of
      PW_SUCCEED:Response.Content:='密码更新成功!请牢记你的新密码!';
      PW_ERROR:Response.Content:='原密码错误!不能更改密码!';
      PW_NOFILE:Response.Content:='没有找到用户数据文件!';
      PW_NOUSER:Response.Content:='无此用户!';
    end;
  end;
end;end.

解决方案 »

  1.   

    编译后生成 ServUChangPassword.dll~~~
    调用 ServUChangPassword.dll 的也面代码如下!<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>New Page 1</title>
    </head><body><table border="0" width="100%" cellspacing="0" cellpadding="0">
      <tr>
        <td width="100%">
          <form method="GET" action="http://LocalHost/test/ServUChangPassword/ServUChangPassword.dll">
            <p align="center">用户名:<input type="text" name="User" size="20"><br>原密码:<input type="text" name="OldPassword" size="20"><br>
            新密码:<input type="text" name="NewPassword" size="20"><br><input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2">
          </form>
          <p align="center"> </td>
      </tr>
    </table></body></html>
      

  2.   

    无论怎么输入!都返回~!
    请输入用户名!如果把MainWebModuleDefaultWebActionItemAction过程修改如下后执行!
    procedure TMainWebModule.MainWebModuleDefaultWebActionItemAction(
      Sender: TObject; Request: TWebRequest; Response: TWebResponse;
      var Handled: Boolean);
    var
      ChangePasswordReturn:Integer;
    begin
        ChangePasswordReturn:=ChangPassword(Request.GetFieldByName('User'),Request.GetFieldByName('OldPassword'),Request.GetFieldByName('NewPassword'));
        Case ChangePasswordReturn of
          PW_SUCCEED:Response.Content:='密码更新成功!请牢记你的新密码!';
          PW_ERROR:Response.Content:='原密码错误!不能更改密码!';
          PW_NOFILE:Response.Content:='没有找到用户数据文件!';
          PW_NOUSER:Response.Content:='无此用户!';
        end;
    end;
    无论怎么输入!都返回~!
    密码更新成功!请牢记你的新密码!
      

  3.   

    晕,我也遇到一模一样的问题了!!!
    Request.GetFieldByName('User')是个空值!!!
    怎么回事呀????有高手知道吗?
      

  4.   

    再次测试后发现Request.content也是空值,我彻底晕了.怎么才能把提交的参数提出来呀???
      

  5.   

    如果象你的代码那样在<FORM>使用GET方法就该象下面这样来访问User字段
    Request.QueryFields.Values['User']
    想用Request.content,就该用POST方法