Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Post Parameter beim submit einer Form mitgeben (https://www.delphipraxis.net/131862-post-parameter-beim-submit-einer-form-mitgeben.html)

Ajintaro 1. Apr 2009 17:36


Post Parameter beim submit einer Form mitgeben
 
Hallo Delphianer,

Meine TWebBrowser Komponente navigiert eine Webseite an:

Delphi-Quellcode:
WebBrowser1.Navigate('http://www.test.de');
und submittet ein Formular:

Delphi-Quellcode:
 
webbrowser1.oleobject.document.forms.item(0).elements.item('user').value := e_username.text;
webbrowser1.oleobject.document.forms.item(0).elements.item('password').value := e_login_passwd.text;
webbrowser1.oleobject.document.forms.item(0).submit;
Funktioniert prima. Ich nutze zum Überprüfen der Parameter das Mozilla-Addon "UrlParams". Das zeigt in der Sidebar alle POST und GET Parameter an. Beim Submitten meines Zielformulars fiel mir auf, dass ein verstecktes (Java?)Script noch die Mauskoordinaten des grossen Submitbuttons berechnet und als x und y Wert per POST an den Server mitgibt.
D.h. es werden 4 Informationen an den Server übertragen:

Username
Passwort
Mausposition X
Mausposition Y

Mit meiner o.g. Technick kann ich den Usernamen und das Passwort an den Server übermitteln, allerdings werden die Werte für die Mausposition mit 0 übergeben - logisch da ich ja den direkten submit ausführe.

Meine Frage ist: wie kann ich den x und den y Wert ebenfalls an den Server mitübermitteln OHNE die Maus zu benutzen? Einfach die php Variablen in der URL eintragen und die Form Submitten geht nicht, da bekomme ich ebenfalls 0,0 raus :-(

Gibts da einen Ansatz den ich verfolgen kann?

jfheins 1. Apr 2009 17:48

Re: Post Parameter beim submit einer Form mitgeben
 
Bevor du weiter nach dem versteckten Javascript suchst: http://de.selfhtml.org/html/formular....htm#grafische ;)

Eigentlich müsstest du die Koordinaten einfach mitgeben können :gruebel:

Wir das ganze per Get oder per Post übermittelt?

Ajintaro 1. Apr 2009 17:59

Re: Post Parameter beim submit einer Form mitgeben
 
Hallo jfheins,

vielen Dank für den Selfhtml Link :-) Das ganze wird per POST übermittelt.

Ajin 16. Jun 2009 15:00

Re: Post Parameter beim submit einer Form mitgeben
 
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  data: TIdMultiPartFormDataStream;
begin
  IdHttp1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
  data := TIdMultiPartFormDataStream.Create;
  data.AddFormField('login', edit4.Text);
  data.AddFormField('passwd', edit5.Text);

  memo1.Text := IdHttp1.Post(LoginURL, data);

  data.Free;
end;
Mit IdHttp1.Post(LoginURL, data) kann ich Daten per Post senden - aber wie kann ich das live im TWebbrowser verfolgen?

shmia 16. Jun 2009 15:12

Re: Post Parameter beim submit einer Form mitgeben
 
Bei Navigate kann man noch weitere Parameter mitgeben:
Delphi-Quellcode:
var
  BrowserFlags : olevariant;
  MyTargetFrameName : olevariant;
  MyPostaData : olevariant;
  MyHeaders : olevariant;
begin
{ Flags:
Constant            Value Meaning
NavOpenInNewWindow  $01 Open the resource or file in a new window.
NavNoHistory        $02 Do not add the resource or file to the history list. The new page replaces the current page in the list.
NavNoReadFromCache  $04 Do not read from the disk cache for this navigation.
NavNoWriteToCache   $08 Do not write the results of this navigation to the disk cache.
NavAllowAutosearch  $10 If the navigation fails, the Web browser attempts to navigate common root domains (.com, .org, and so on). If this still fails, the URL is passed to a search engine.
}
  BrowserFlags := $02;
  MyTargetFrameName := null;
  MyPostaData := 'MauspositionX=410';
  MyHeaders := null;
  Webbrowser1.Navigate(EdtURL.text, BrowserFlags,MyTargetFrameName,MyPostaData,MyHeaders);

Ajin 16. Jun 2009 15:56

Re: Post Parameter beim submit einer Form mitgeben
 
Ich hab eine Testseite hochgeladen:

Post Testseite


Auszug des Quellcodes:

<?PHP
echo"

D A T E N A U S W E R T U N G:</p>";
echo"

-- G E T</p>";
echo"

X: $_GET[x]</p>";
echo"

Y: $_GET[y]</p>";
echo"

-- P O S T</p>";
echo"

X: $_POST[x]</p>";
echo"

Y: $_POST[y]</p>";
?>

parametrisierter URL Aufruf mit: http://www.bot-factory.de/tmp/post.php?x=2&y=7 hat natürllich zum Ergebnis, dass x=2 und y=7 ist (GET)
Ein Beispielaufruf mit:

Delphi-Quellcode:
  BrowserFlags := $02;
  MyTargetFrameName := null;
  MyPostaData := 'x=2';
  MyHeaders := null;
  Webbrowser1.Navigate('http://www.bot-factory.de/tmp/post.php', BrowserFlags,MyTargetFrameName,MyPostaData,MyHeaders);
bringt keine Post daten zum Vorschein. Hab ich da noch ein Detail vergessen?

shmia 16. Jun 2009 16:01

Re: Post Parameter beim submit einer Form mitgeben
 
Zitat:

Zitat von Ajin
bringt keine Post daten zum Vorschein. Hab ich da noch ein Detail vergessen?

Ja, bzw. Microsoft erwartet da einen anderen Datentyp (ein VarByte-Array):
http://www.delphipraxis.net/internal...t.php?p=695870 (letzter Betrag)

Dort steht ja sinngemäß, dass die gefundene Lösung sehr umständlich ist.
Versuche dann mal noch das:
Delphi-Quellcode:
function VarByteArrayCreate(const Data; len:Integer):Variant;overload;
var
   vdata : Pointer;
begin
   if len > 0 then
   begin
      Result := VarArrayCreate([0, len-1], varByte);
      vdata := VarArrayLock(Result);
      try
         Move(Data, vdata^, len);
      finally
         VarArrayUnlock(Result);
      end;
   end
   else
      Result := Null;
end;
function VarByteArrayCreate(const s:string):Variant;overload;
begin
   Result := VarByteArrayCreate(s[1], Length(s));
end;

MyPostaData := VarByteArrayCreate('x=2');

himitsu 16. Jun 2009 16:03

Re: Post Parameter beim submit einer Form mitgeben
 
sicher, daß es ohne ' geht? :gruebel:

Zitat:

$_GET['x']

nja, probier mal print_r($_GET) und schau was überhaupt so alles ankommt.

Ajin 17. Jun 2009 08:56

Re: Post Parameter beim submit einer Form mitgeben
 
Guten Morgen!

Ich habe jetzt mehrere Beispiele durchforstet und eure Anregungen mit einfliessen lassen. Ich bin mir auch sicher dass der PHP Quelltext für diesen Test okay ist. Aber es gelingt mir nicht, Post Daten zu übermitteln. Oder ist meine Überprüfungsmethode mit der php Seite nicht repräsentativ?

Edit: hab eine Test html davorgeschoben Post Senden
Es liegt definitiv an am Delphi Quelltext


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz