Forum > Networking and Web Programming

fpWeb CGI module.

(1/2) > >>

BSaidus:
Hello.
I'm doing some tests to learn the wonderfull "fpWEB", and I wonder how to : after posting data to server (using GET methode) how to force browser to clear the string parameters to avoid the refresh.
here is the code.

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---// main datamoduleprocedure TWmUccenpf.DataModuleRequest(Sender: TObject; ARequest: TRequest;  AResponse: TResponse; var Handled: Boolean);var  lContent: String;begin  Handled := true;   // See if the methode is post  if SysUtils.SameText(LowerCase(ARequest.Method ),'get' ) then  begin    tUcExec.fpLog('Methode GET invoked');   // just log a string    tUccenPf.fpProcessUccenPf(ARequest);    // do some saving data to file ( db )  end;    // send content to browser 'html template from file'  AResponse.ContentType := 'text/html';  lContent := tUccenPf.fpProcessCountent();        // Get content from html tempplate  AResponse.Content := lContent;  AResponse.SendContent();end;   
After returning, in the parameters on URL still exists

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---https://forum.lazarus.freepascal.org/index.php?action=post;board=38.0// how to redirect to https://forum.lazarus.freepascal.org/index.php 
So, Is there any way or technique to do this.
in PHP just this

--- Code: PHP  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---function fpTools_goto_url($AUrl) {  header("location: http://$AUrl") ;  exit();} 

Leledumbo:

--- Quote from: BSaidus on April 20, 2023, 01:41:55 pm ---after posting data to server (using GET methode)

--- End quote ---
Wait, what? %)

--- Quote from: BSaidus on April 20, 2023, 01:41:55 pm ---how to force browser to clear the string parameters to avoid the refresh.

--- End quote ---
You typically don't for a GET request, but since you said:

--- Quote from: BSaidus on April 20, 2023, 01:41:55 pm ---in PHP just this

--- End quote ---
What you want to reply is a redirect response:

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---AResponse.SendRedirect('http://wherever.you/want/to/redirect/it/to'); 

BSaidus:
Thank you @Leledumbo.
When I said posting data using GET methode I mean like this.

--- Code: Text  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---              <form name="fr_action1" id="fr_ction1" method="get" action="#">                 <button name="bt_ucccen1" id="bt_ucccen10" class="input-btn-green" type="submit" value="bt_save10"> Do action1</button>              </form> Yes, this methode

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---AResponse.SendRedirect('http://wherever.you/want/to/redirect/it/to'); works well when using GET, and do not work when using POST.
Something else, this is a result of quering server variables using fpWeb. Do not you think that there is something messing .

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TFPWebModule1.DataModuleRequest(Sender: TObject; ARequest: TRequest;  AResponse: TResponse; var Handled: Boolean);var  lURL, lURI: String;  lContent: String;begin  Handled := true;  lURI := ARequest.URI;  lURL := ARequest.URL;   lContent := LineEnding +  'ARequest.Accept               : ' + ARequest.Accept              + #10#13 +  'ARequest.AcceptCharset        : ' + ARequest.AcceptCharset       + #10#13 +  'ARequest.AcceptEncoding       : ' + ARequest.AcceptEncoding      + #10#13 +  'ARequest.AcceptLanguage       : ' + ARequest.AcceptLanguage      + #10#13 +  'ARequest.Authorization        : ' + ARequest.Authorization       + #10#13 +  'ARequest.Connection           : ' + ARequest.Connection          + #10#13 +  'ARequest.ContentEncoding      : ' + ARequest.ContentEncoding     + #10#13 +  'ARequest.ContentLanguage      : ' + ARequest.ContentLanguage     + #10#13 +  'ARequest.ContentLength        : ' + IntToStr(ARequest.ContentLength)       + #10#13 +  'ARequest.ContentType          : ' + ARequest.ContentType         + #10#13 +  'ARequest.Date                 : ' + ARequest.Date                + #10#13 +  'ARequest.Expires              : ' + ARequest.Expires             + #10#13 +  'ARequest.From                 : ' + ARequest.From                + #10#13 +  'ARequest.Host                 : ' + ARequest.Host                + #10#13 +  'ARequest.IfModifiedSince      : ' + ARequest.IfModifiedSince     + #10#13 +  'ARequest.LastModified         : ' + ARequest.LastModified        + #10#13 +  'ARequest.Location             : ' + ARequest.Location            + #10#13 +  'ARequest.Pragma               : ' + ARequest.Pragma              + #10#13 +  'ARequest.Referer              : ' + ARequest.Referer             + #10#13 +  'ARequest.RetryAfter           : ' + ARequest.RetryAfter          + #10#13 +  'ARequest.Server               : ' + ARequest.Server              + #10#13 +  'ARequest.UserAgent            : ' + ARequest.UserAgent           + #10#13 +  'ARequest.Warning              : ' + ARequest.Warning             + #10#13 +  'ARequest.WWWAuthenticate      : ' + ARequest.WWWAuthenticate     + #10#13 +  'ARequest.Via                  : ' + ARequest.Via                 + #10#13 +  'ARequest.HTTPAccept           : ' + ARequest.HTTPAccept          + #10#13 +  'ARequest.HTTPAcceptCharset    : ' + ARequest.HTTPAcceptCharset   + #10#13 +  'ARequest.HTTPAcceptEncoding   : ' + ARequest.HTTPAcceptEncoding  + #10#13 +  'ARequest.HTTPIfModifiedSince  : ' + ARequest.HTTPIfModifiedSince + #10#13 +  'ARequest.HTTPReferer          : ' + ARequest.HTTPReferer         + #10#13 +  'ARequest.HTTPUserAgent        : ' + ARequest.HTTPUserAgent       + #10#13 +  'ARequest.Cookie               : ' + ARequest.Cookie              + #10#13 +  'ARequest.SetCookie            : ' + ARequest.SetCookie           + #10#13 +  'ARequest.HTTPXRequestedWith   : ' + ARequest.HTTPXRequestedWith  + #10#13 +  'ARequest.HttpVersion          : ' + ARequest.HttpVersion         + #10#13 +  'ARequest.ProtocolVersion      : ' + ARequest.ProtocolVersion     + #10#13 +  'ARequest.PathInfo             : ' + ARequest.PathInfo            + #10#13 +  'ARequest.PathTranslated       : ' + ARequest.PathTranslated      + #10#13 +  'ARequest.RemoteAddress        : ' + ARequest.RemoteAddress       + #10#13 +  'ARequest.RemoteAddr           : ' + ARequest.RemoteAddr          + #10#13 +  'ARequest.RemoteHost           : ' + ARequest.RemoteHost          + #10#13 +  'ARequest.ScriptName           : ' + ARequest.ScriptName          + #10#13 +  'ARequest.ServerPort           : ' + IntToStr(ARequest.ServerPort)          + #10#13 +  'ARequest.Method               : ' + ARequest.Method              + #10#13 +  'ARequest.URL                  : ' + ARequest.URL                 + #10#13 +  'ARequest.Query                : ' + ARequest.Query               + #10#13 +  'ARequest.Content              : ' + ARequest.Content             + #10#13 ;   fpLog(lContent);    end;  
RESULTS:

--- Code: Text  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---ARequest.Server               : localhostARequest.ScriptName           : /fb1c/index.cgiARequest.ServerPort           : 80ARequest.HttpVersion          : ARequest.ProtocolVersion      : ARequest.Accept               : text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8ARequest.AcceptCharset        : ARequest.AcceptEncoding       : gzip, deflate, brARequest.AcceptLanguage       : en-US,en;q=0.5ARequest.Authorization        : ARequest.Connection           : keep-aliveARequest.ContentEncoding      : ARequest.ContentLanguage      : ARequest.ContentLength        : 0ARequest.ContentType          : ARequest.Date                 : ARequest.Expires              : ARequest.From                 : ARequest.Host                 : localhostARequest.IfModifiedSince      : ARequest.LastModified         : ARequest.Location             : ARequest.Pragma               : ARequest.Referer              : ARequest.RetryAfter           : ARequest.UserAgent            : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0ARequest.Warning              :ARequest.WWWAuthenticate      :ARequest.Via                  :ARequest.HTTPAccept           : text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8ARequest.HTTPAcceptCharset    :ARequest.HTTPAcceptEncoding   : gzip, deflate, brARequest.HTTPIfModifiedSince  :ARequest.HTTPReferer          :ARequest.HTTPUserAgent        : ARequest.Cookie               : ARequest.SetCookie            : ARequest.HTTPXRequestedWith   : ARequest.HttpVersion          : ARequest.ProtocolVersion      : ARequest.PathInfo             : ARequest.PathTranslated       : ARequest.RemoteAddress        : 127.0.0.1ARequest.RemoteAddr           : 127.0.0.1ARequest.RemoteHost           : ARequest.Method               : GETARequest.URL                  : ARequest.Query                : ARequest.Content              :  
PS: I'm using Lighttpd 1.4.49.1 on windows
PHP output this:

--- Code: Text  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---CONTENT_LENGTH  0DOCUMENT_ROOT   D:/UccenOS/UccenOS/Servers/lighttpd/htdocsGATEWAY_INTERFACE       CGI/1.1HTTP_ACCEPT     text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8HTTP_ACCEPT_ENCODING    gzip, deflate, brHTTP_ACCEPT_LANGUAGE    en-US,en;q=0.5HTTP_CONNECTION         keep-aliveHTTP_HOST       localhostHTTP_SEC_FETCH_DEST     documentHTTP_SEC_FETCH_MODE     navigateHTTP_SEC_FETCH_SITE     noneHTTP_SEC_FETCH_USER     ?1HTTP_UPGRADE_INSECURE_REQUESTS  1HTTP_USER_AGENT         Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0REDIRECT_STATUS         200REMOTE_ADDR     127.0.0.1REMOTE_PORT     51430REQUEST_METHOD  GETREQUEST_SCHEME  httpREQUEST_URI     /fb1c/a.phpSCRIPT_FILENAME         D:/UccenOS/UccenOS/Servers/lighttpd/htdocs/fb1c/a.phpSCRIPT_NAME     /fb1c/a.phpSERVER_ADDR     127.0.0.1SERVER_NAME     localhostSERVER_PORT     80SERVER_PROTOCOL         HTTP/1.1SERVER_SOFTWARE         lighttpd/1.4.49 (win32)SYSTEMROOT      C:\WindowsWINDIR  C:\WindowsPATH    D:\UccenOS\UccenOS\Servers\lighttpd  

Leledumbo:

--- Quote from: BSaidus on April 22, 2023, 10:42:13 am ---Do not you think that there is something messing .

--- End quote ---
No, but also do note that not all headers are parsed and stored to its own property, as not all are standard.
Those non-standard headers can be queried with THTTPHeader.CustomHeaders, which you can also set as response headers, so you wish. Web servers like Lighttpd also tend to add their own headers, for identification inside the user program if necessary, which are some that you see.

BSaidus:
Hello @Leledumbo
A how about

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---    AResponse.SendRedirect('http://localhost/index.cgi'); while using POST,    using
--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---GET [/color]it works but not with POST.
I bypassed this problem using this code.

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---class procedure tUccenPf.fpSendRedirect(AResponse: TResponse; AURL: String);begin  AResponse.SetCustomHeader('METHODE', 'GET');  AResponse.SendHeaders();  AResponse.SendRedirect( AURL );end; { -------------------------------------------------------------------------------------- }{ // Suppose that method is POST                                                         }{ -------------------------------------------------------------------------------------- }class procedure tUccenPf.fpProcessUccenPf(ARequest: TRequest; AResponse: TResponse);var  lName: String;  lURLToRedirect: String;begin  lURLToRedirect := fpRequest2URL(ARequest); // Get the URL (http://localhost/index.cgi)  lName := ARequest.ContentFields.Values['bt_ucccen1'] ;  if System.Pos('bt_save0', lName) > 0 then   begin    tUcExec.fpLog('[bt_save0] saving general network configuration');    fpProcessDbParameters(ARequest);    Self.fpSendRedirect(AResponse, lURLToRedirect);    Exit;  end;end; I simply modify the POST =>(to) GET  in ARespnse Header.

Navigation

[0] Message Index

[#] Next page

Go to full version