Solved

ISAPI (button on HTML Page)

Posted on 2000-03-27
11
186 Views
Last Modified: 2010-08-05
I'm creating an ISAPI application

how can I receive the fact that a user has clicked(submit) on a butoon in a HTML PAGE ?

I've to use the TWebActionItem ?

Where I've to put my code to execute the function related to this button ?

Thanks a lot

Olivier
0
Comment
Question by:olisaac
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 13

Expert Comment

by:Epsylon
ID: 2660259
The following html-code could be a part on a page:

<FORM method=post action="cgi-bin/button.dll/click">
<input type=submit value=Search>
......


When the button is pressed, the ISAPI gets an action '/click'

In you ISAPI app double-click on the WebModule window. In the appearing window add a new actionitem. Set its PathInfo property to '/click'. Now write the OnAction event.

Eps.
0
 

Expert Comment

by:Dantry
ID: 2660419
Listening...
0
 
LVL 17

Expert Comment

by:geobul
ID: 2660420
Hi Olivier,

1. Receiving the fact of button click:
I've always named my buttons in HTML code like:
<INPUT TYPE=submit NAME="LoginBtn" VALUE="Login">

The Delphi code is:
....
if (Request.ContentFields.Values['LoginBtn'] <> '') then begin
  .....
end;
....
which means that exactly login button has been clicked. (if I have more btns on the page)

2. Using WebActionItems:
  It's recommended to have at least one Action Item with no PathInfo property (empty) and Default = True. That way all requests will be handled here.
  You can use BeforeDispatch event of the WebDispatcher also.
  For more complicated jobs you can use PathInfo after the name of your dll in different html pages to react with different Action Items depending on the PathInfo of the request. {see Epsylon's comment}

3. Where to put code:
  It depends on the answer of the question 2. If you are using different Action Items the code can be in the code of the proper item, in the default item, ih the before or after dispatch events.

Regards, Geo
0
 
LVL 4

Expert Comment

by:Radler
ID: 2661196
0
 
LVL 4

Expert Comment

by:Radler
ID: 2661217
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 1

Author Comment

by:olisaac
ID: 2663195
Adjusted points from 50 to 75
0
 
LVL 1

Author Comment

by:olisaac
ID: 2663265
Hi,

Thanks, it works.

But I have another question (reason for the increase of the points).

When I push the button, in my Delphi code I want to make integrity tests on text box (in the html page too (TITRE In my sample code)).
If the data is not good in this text box. I would that the page HTML don't change to permit to the user to correct his mistake

I've to change the value of the handle in the beforedispatch or afterdispatch function

I don't know if my question is so clear...

Olivier

Sample of my code :

procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  if (Request.ContentFields.Values['ADD'] <> '') then
    begin

    if length(Titre1) > 50 then
      begin
        MessageDlg('TITRE NOT CORRECT', mtInformation, [mbOk], 0);
        exit;
      end;
end;
0
 
LVL 1

Author Comment

by:olisaac
ID: 2669108
Hi geobul, if you answer my second question, the points are for you...
0
 
LVL 17

Accepted Solution

by:
geobul earned 75 total points
ID: 2672346
Hi,

I'm sorry for the late reply. I was on a trip for a few days.

You can NOT use any visual component in the CGI program (MessageDlg in your code).
 
In this case I send an 'error' page (plain text, no links or buttons), where I describe what kind of error it is and ask the user to press BACK button himself.

-----------
<HTML>
<HEAD><TITLE>ERROR</TITLE></HEAD>
<BODY>
<B>Error !</B> Description follows:<HR>
Bla bla<HR>
Press <STRONG>BACK</STRONG> to continue !
</BODY>
</HTML>
---------------
or you can use a button on the page above this way:
<INPUT TYPE=submit NAME="OKBtn" VALUE="OK" OnClick="history.go(-1);return true;">

Pressing the button will go back.

Delphi code can be:

procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  sError : String;
begin
  sError := ''; { Empty string }
  if (Request.ContentFields.Values['ADD'] <> '') then  begin
    if length(Titre1) > 50 then begin
        sError := 'TITRE NOT CORRECT';
    end else begin
      if .... then begin { Another check }
         sError := 'Error description';
      end;
    end;
  end;
  if sError <> '' then begin
    Response.Content := '<HTML><HEAD><TITLE>ERROR</TITLE></HEAD><BODY> <B>Error !</B> Description follows:<HR>' + sError + '<HR> Press <STRONG>BACK</STRONG> to continue ! </BODY> </HTML>';
    Handled := True;
    Response.SendResponse;
  end;
end;

Regards, Geo
0
 
LVL 1

Author Comment

by:olisaac
ID: 2682957
I will have some other questions for you in a few days...
0
 
LVL 17

Expert Comment

by:geobul
ID: 2683114
I will be happy to help !
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now